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
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
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)
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.
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 :-)
> 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.
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
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).
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.
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.
@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?