Filtern Sie den 5-V-Impuls vom Mikroeingang

Ich überwache ein externes System, das im Normalmodus alle 2 Sekunden einen 5-V-Impuls aussendet. Wenn der Motor arbeitet, sendet er konstant 5 V aus, um ein Blinklicht oder LEDs als Warnsystem mit Strom zu versorgen. Wenn der Impuls nicht vorhanden ist, beträgt er 0 V. Daran ist derzeit nichts angeschlossen, und ich möchte es in ein Mikro einspeisen, damit ich es überwachen kann (dh weiß, wann das Gerät aktiv ist, und das entsprechende Signal an mich sendet).

Es wird einen Optokoppler zwischen den beiden Schaltkreisen geben, da diese unabhängig voneinander mit Strom versorgt werden (obwohl ich jetzt, wo ich darüber nachdenke, mein Mikro sicherlich in das vorhandene Framework integrieren könnte, aber so ist es derzeit nicht eingerichtet).

Ich weiß, dass ich den Impuls programmgesteuert herausnehmen könnte, indem ich den Eingang auf einen Interrupt setze und eine angemessene Zeit warte, bevor ich erneut teste, eine Art Entprellung. Aber ich würde gerne wissen, ob ich es schaffen könnte, indem ich den Impuls durch Schaltkreise herausfiltere.

Mein anfänglicher Gedanke war, alles (zum Beispiel) unter 5 Hz zu filtern (da der Impuls bei 1/2 Hz liegt) und dass ich einen Hochpassfilter brauchen würde. Aber dann hat mich jemand darauf hingewiesen, dass ich einen Tiefpassfilter brauche, da die konstanten 5 V, auf die ich testen möchte, tatsächlich eine niedrigere Frequenz als der Impuls haben.

Als zusätzlicher Punkt treibt der Ausgang des Filters ein Opto mit niedriger Impedanz ohne andere Last an. Ich habe keine Ahnung, wie ich das berücksichtigen soll.

Jede Hilfe wäre willkommen.

Ihr Design muss auch die Breite des Impulses berücksichtigen. Daher sollten Sie eine Beschreibung der Breite angeben.
Ja, das wollte ich tun, wurde aber abgelenkt. Die Spitze ist kurzzeitig, weniger als eine Millisekunde, aber der Abfall ist sehr langsam. Es fällt schnell ab, wird dann aber zu einer klassischen Hyperbel, die gut halbe 500 ms braucht, um auf null Volt zu kommen. Wiederholt sich dann nach zwei Sekunden.
Danke Jungs (@spehro und @jrtrzeciak) für eure Antworten unten, aber ich ziehe es jetzt in Hardware in Betracht und verwende die Pulsspitze als Herzschlag für das Projekt. Ich möchte eine schnellere Antwort und ich denke, ich kann etwas Besseres im Code erreichen. Danke noch einmal

Antworten (2)

Wenn Sie die Impulse wirklich per Hardware filtern möchten, ist ein Tiefpassfilter (LPF) definitiv das Richtige für Sie. Es lässt die niedrigen Frequenzen durch und dämpft die höheren Frequenzen. Sie suchen nach DC-Werten, die von Natur aus eine niedrigere Frequenz haben als jede Impulsfolge. Am einfachsten ist es, einen LPF erster Ordnung mit einem Widerstand und einem Kondensator zu implementieren . Die Grenzfrequenz ist dann

F C = 1 2 π R C

schematisch

Simulieren Sie diese Schaltung – Mit CircuitLab erstellter Schaltplan

Die Reaktion wird jedoch ziemlich langsam sein. Es dauert eine merkliche Zeit, bis sich der Kondensator aufgeladen hat. Je nach gewählter Größe der Komponenten kann es auch zu einer gewissen Welligkeit kommen. Um eine gewisse Welligkeit zu verringern, könnten Sie einen Filter zweiter Ordnung über die Sallen-Key-Topologie verwenden .

schematisch

Simulieren Sie diese Schaltung

Wenn jeder Widerstand und jeder Kondensator denselben Wert hat, ist die Grenzfrequenz dieselbe wie zuvor.

Wofür Sie sich auch entscheiden, die Ausgangsspannung hängt vom Tastverhältnis des Impulses ab. Wenn daher der Impuls für gleiche Zeiträume niedrig und hoch ist und die Amplitude 5 V beträgt, beträgt die Ausgabe der Filter 2,5 V. Wenn Sie keinen Komparator oder ADC-Eingang am Mikrocontroller verwenden, müssen Sie auch einen Komparator implementieren. Da am Ausgang des Filters eine gewisse Welligkeit auftritt, ist ein Komparator mit Hysterese erforderlich. Aus einem Artikel von Analog Devices :

Komparator mit Hysterese und Berechnungen

Jetzt können Sie wahrscheinlich sehen, warum die Verwendung eines Input-Capture-Interrupts wahrscheinlich die beste Wahl ist. Es ist wahrscheinlich weniger Arbeit und definitiv billiger. Wäre Ihre Pulsfrequenz höher gewesen, wäre eine analoge Lösung möglicherweise sinnvoller gewesen.

Es wäre einfach, dies im Mikro zu tun - sagen Sie, Sie haben einen Zähler, der bei (sagen wir) 50 Hz auf 0 herunterzählt. Immer wenn eine Impulsflanke erkannt wird, stellen Sie den Zähler auf (z. B.) 150 ein. Wenn der Zähler auf Null geht, hören Sie auf zu dekrementieren. Wenn der Zähler == 0 ist, dann können die Impulse als gestoppt betrachtet werden.

Sie könnten in der Hardware etwas Ähnliches tun, indem Sie einen nachtriggerbaren monostabilen Multibrator wie die Hälfte eines 74HC123 verwenden . Beachten Sie im folgenden Zeitdiagramm das erneute Triggern von der fallenden Flanke des /A-Eingangs (der ganz rechte Teil des Zeitdiagramms zeigt T R R ).

Sie möchten T w um etwa 3 Sekunden zu sein, also würden die Timing-Komponenten etwa 10 uF und 300 K betragen (für das Toshiba-Teil könnte es bei anderen Herstellern anders sein).

In diesem Fall geht der Q-Ausgang auf Low und der /Q-Ausgang auf High, wenn die Impulse aufhören.

Geben Sie hier die Bildbeschreibung ein