mikrocontroller.net

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


Autor: Florian (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: guest (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ein Hochpass mit enstprechender Grenzfrequenz sollte das tun was du 
möchtest.

Autor: Oliver (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Christian H. (netzwanze) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Wenn in Hardware => retriggerbarer Monoflop

Autor: grumpel (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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)

Autor: Christian H. (netzwanze) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Florian (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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...
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 :-)

Autor: Sascha (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Jobst M. (jobstens-de)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Florian (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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).

Autor: Sascha (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: guest (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Florian (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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?

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.