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
Ein Hochpass mit enstprechender Grenzfrequenz sollte das tun was du möchtest.
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
Wenn in Hardware => retriggerbarer Monoflop
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?
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.