Forum: Mikrocontroller und Digitale Elektronik Stabiles Ausgangssignal aus chaotischem Eingangssignal (Vibrationssensor)


von Florian (Gast)


Lesenswert?

Hallo,

ich suche eine möglichst einfache Möglichkeit, aus einem chaotisch 
wechselndem Eingangssignal (High-Low Wechsel in der Größenordnung um 30 
Hz) ein stabiles High zu machen.

Konkret:
Ich habe einen Vibrationssensor, der bei nicht-Vibration entweder High 
oder Low ist (unbekannt) und bei Vibration wie ein Taster, der in 
schneller Abfolge getippt wird, wirkt.
Jetzt will ich mit einem Pic nach gewisser Vibrations-Dauer eine Aktion 
auslösen.
Dafür sollte das Chaos vom Vibrationssensor auf ein High gebracht 
werden, das so lange andauert, wie der Vibrationssensor vibriert.

Wie realisiere ich das am Besten? Mit einer Art CR-Hochpass? Das Problem 
ist, dass ich ja keinen echten Wechselstrom habe, sondern eben nur ein 
An-Aus. Wie könnte so eine Schaltung aussehen?


Oder gleich ein retriggerbares Monoflop? Habe damit leider keinerlei 
Erfahrung, habe z.B. den MC14538BCPG gefunden, wäre mit der Beschaltung 
aber vollkommen überfordert. Wie muss ich dieses Teil beschalten, damit 
ich z.B. bis zu einem High-Low-Wechsel vom Vibrationssensor alle 1,5 
sek. ein stabiles Ausgangshigh erhalte?
Kann ich dieses IC dann direkt an einen Pic-Eingang anschließen, oder 
muss  da noch was dazwischen?

Danke und viele Grüße, Flo

von guest (Gast)


Lesenswert?

Ein Hochpass mit enstprechender Grenzfrequenz sollte das tun was du 
möchtest.

von Oliver (Gast)


Lesenswert?

Wenn du schon einen programmierbaren PIC hast, mach die Auswertung doch 
in Software. Das Signal von dem Sensor kommt auf einen digitalen Eingang 
(evtl. noch enstprechend anpassen), und ein kleines Progrämmchen im PIC 
erkennt dann "keine Vibration", wenn der Eingang sich innerhalb von 1,5s 
nicht verändert hat, bzw. "Vibration", wenn er sich in dieser Zeit 
verändert hat.

Oliver

von Christian H. (netzwanze) Benutzerseite


Lesenswert?

Wenn in Hardware => retriggerbarer Monoflop

von grumpel (Gast)


Lesenswert?

Währe es nicht sinnvoller den Sensor direk an den Pic anzuschließen, und 
dann in Software auszuwerte?

Also, sobald sich der Status des Sensors ändert ein FLag setzen. Wenn 
sich der Status eine bestimmte Zeit lang ändert hast du deine 
einschaltbedingungn. Sobald eine bestimmte Zeit lang keine Änderung mehr 
kam, Flag wieder abschalten (oder was sonst deine Abschaltbedingung is)

von Christian H. (netzwanze) Benutzerseite


Lesenswert?

Sinnvoll ist immer das, was ich mit meinen Möglichkeiten und Mitteln 
noch hinbekommen kann.

Ich baue zum Beispiel eine Schaltung lieber mit einzlenen ICs auf, 
anstatt einen FPGA zu bemühen. Mit letzterem kenne ich mich (noch) nicht 
aus, mit ersterem schon.

Ist aber jedem selber überlassen.

PS: Ich würde das auch eher in Software machen.

von Florian (Gast)


Lesenswert?

Danke für die ganzen Antworten, ist toll, wie schnell einem hier 
geholfen wird!

Die drei von euch genannten Möglichkeiten bin ich auch schon 
durchgegangen, aber bei allen liegt der Teufel halt wie so otf im 
Detail. Kann aber auch nur daran liegen, dass ich mich noch nicht allzu 
lange mit dem Thema beschäftige und deshalb evtl. auf vielleicht ganz 
einfach Lösungen nicht komme.


Hier mal meine Probleme zu den drei Verfahren:


Sensor direkt an Pic, Auswertung in der Software:
Hier kann ich zwar den Vibrationsanfang (erste Flanke) gut erkennen, 
aber dass es erst eine bestimmte Zeit vibrieren muss, bevor der 
Schaltvorgang ausgelöst wird, das ist schwer zu programmieren. Mein Pic 
kann kein Multitasking. Also "während 30 sek auf Vibration prüfen" geht 
nicht, nur "prüfe einmal ob gerade High oder Low, dann warte 1 sek, dann 
prüfe wieder,....", also immer nur Stichpunktprüfungen. Das find ich 
aber ein bisschen schwammig, v.A., da ich nicht weiß, wie genau das 
Signal vom Sensor aussieht. Falls der Sensor beim Vibrieren die meiste 
Zeit offen ist, und immer nur ganz kurz geschlossen, dann könnte das mit 
den Stichproben nicht funktionabel sein.

retriggerbarer Monoflop:
Welches IC kann ich da nehmen? Hab mir den MC14538BCPG angeschaut, aber 
bin noch zu unfähig, den auch richtig zu beschalten. Evtl. könntet ihr 
mir da noch  beim Verstehen vom Anschlussplan helfen: 
http://www.datasheetcatalog.org/datasheet/motorola/MC14538BDW.pdf
Würde folgender Anschlussplan (nach Fig. 2) funktionieren:
Alle Eingänge (in der Grafik die ganze linke Seite des ICs) auf 
Eingangsspannung, nur A direkt an den Vibrationssenor. Wie ist das mit 
A', B', etc. zu verstehen? Sind das prinzipiell die gleichen Eingänge 
wie A und B, nur invertiert? Muss A' auf Ground wie im Plan angegeben? 
Warum?
Alle Ausgänge offen lassen, nur Q direkt an meinen PIC.
Was bedeutet das ID im Kreis oben?
Die Versorgungsschaltung oben ist mir auch noch unklar, hier wird ein Rx 
u. Cx angegeben, parallel dazu noch Rx' u. Cx'. Muss ich beide Stränge 
anschließen? Identische R- u. C-Werte? Oder nur einen davon (entweder 
Rx, Cx, oder Rx',Cx'), je nachdem ob ich die Anschlüsse mit ' oder ohne 
' nehme?
Ich weiß, ist alles etwas diffus was ich hier schreibe, aber mir ist es 
halt nicht klar, wie diese '-Angaben zu verstehen sind, besonders weil 
in den Logik-Tabellen immer nur Anschlüsse ohne ' aufgeführt sind.


Hochpass mit entsprechender Grenzfrequenz:
Wäre mir am liebsten, aber habe das Problem, dass der Kondensator im 
klassischen Hochpass ja von der Wechselspannung wechselweise 
geladen-entladen wird und so ein Stromfluss zustande kommt.
Ich habe durch den Vibrationssensor ja nur ein Wechsel zwischen + und 0, 
nicht zwischen + und -. Wie müsste damit ein Hochpass aufgebaut sein?



Sorry für den langen Text, aber ich stoße halt recht schnell an 
(Grund-)Verständnisprobleme, wäre toll, wenn ihr mir hier ein bissche 
auf die Sprünge helfen könntet :-)

von Sascha (Gast)


Lesenswert?

> Mein Pic kann kein Multitasking
Falsch. Wenn dann kannst du es nicht (programmieren). Für deine Aufgabe 
braucht es kein Multitasking, dafür ist sie zu trivial. Ich würde es so 
machen: Das Signal des Vibrationssensors auf den Externen 
Interrupt-Eingang geben. Einen internen Timer vor sich hin zählen 
lassen. Bei jedem externem Interrupt den Timerstand wieder resetten und 
einen Portpin auf high setzen. Bei jedem Timer-Overflow den Portpin auf 
low legen.

von Jobst M. (jobstens-de)


Lesenswert?

Hardwarelösung:

Das Signal in einen Tiefpass (R-C) schicken.
Signal und Ausgang des Tiefpasses jeweils auf den Eingang eines XORs 
geben.
Am Ausgang des XORs gibt es nun für jede Änderung des Signals (H->L oder 
L->H) einen positiven Impuls. Den entweder auf ein retriggerbares MF 
geben oder einfach mit einer Diode einen Kondensator laden. Den 
Kondensator so mit einem Widerstand belasten, daß nach gewünschter Zeit 
das Signal unter einen Pegel fällt - evtl. Schmidt-Trigger dahinter ...


Gruß

Jobst

von Florian (Gast)


Lesenswert?

Sascha schrieb:
> Das Signal des Vibrationssensors auf den Externen
> Interrupt-Eingang geben. Einen internen Timer vor sich hin zählen
> lassen. Bei jedem externem Interrupt den Timerstand wieder resetten und
> einen Portpin auf high setzen. Bei jedem Timer-Overflow den Portpin auf
> low legen.

So erkenne ich zwar, ob eine Vibration vorliegt, da hast du recht. Aber 
wie gleichzeitig einen zweiten Timer laufen lassen? Ich will ja, dass 
erst nach 30 sek. Vibrieren ein weiterer Vorgang vom Pic ausgelöst wird.
Oder ich muss die 30 Sekunden extern (555 oder so) triggern, eine Lösung 
das alles nur im Pic zu machen fällt mir jedenfalls auch nach deiner 
Anleitung nicht ein (Der Prozessor ist übrigens ein 12F683, den ich als 
"Picaxe" benutze).

von Sascha (Gast)


Lesenswert?

OK das habe ich übersehen, aber am Grundprinzip ändert sich nicht viel:

Das Signal des Vibrationssensors auf den Externen
Interrupt-Eingang geben. Einen Hardwaretimer vor sich hin zählen
lassen. Bei jedem externem Interrupt den Timerstand wieder resetten und
ein Flag auf high setzen. Bei jedem Timer-Overflow das Flag und den 
Portpin auf low legen. Das Hauptprogramm besteht aus einer 
30s-Warteschleife, die läuft solange das Flag == 1 ist. Wenn die 
Warteschleife durch ist und das Flag immernoch ==1 ist, setzt du den 
Portpin auf high. Dann springst du wieder zum Anfang der Warteschleife. 
Falls das Flag beim warten auf low geht, wieder zum Anfang der 
30s-Warteschleife springen.

Kann man bei PICAXEs überhaupt Interrupts nutzen? Ich sehe da keinen 
entsprechenden Befehl.

von guest (Gast)


Lesenswert?

Eingang - C-.- Regtriggerbares Monoflop  ->> Auswertung
            |
            R
            |
           GND

Sensorsignal an Eingang. Am Ausgang des Monoflops steht dann die 
Information ob gerade Schwingung anliegt oder nicht zur Verfügung. 
Grenzfrequenz des Hochpass muss halt entsprechend ausgerechnet werden. 
Eventuell ist auch noch eine Anpassung der Signalpegel vor dem Monoflop 
nötig.

von Florian (Gast)


Lesenswert?

@Sascha: Das mit dem Hardwaretimer werd ich mal probieren.
Der Picaxe kann Interrupts, sieht etwa so aus:
SETINT %1000000,%10000000   ' Interrupt on Pin 7 High


Son retriggerbares Monoflop werd ich mir auch mal besorgen und das damit 
testen. Aber wofür sollte da noch ein Hochpass (wie vom Vorposter 
vorgeschlagen) zwischen Signal und Monoflop? Son retriggerbares Monoflop 
(MC14538 z.B.) geht doch eh nur auf die Flanken und nicht auf ein 
dauerndes High. Von daher sollte das doch auch direkt, ohne C 
dazwischen, funktionieren?

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.