Gegenwirkende Soundkarten-Wechselstromkopplung zum Lesen digitaler Daten

7

Haftungsausschluss: Ich bin neu bei EE. Alles, was ich bisher gelernt habe, habe ich mir selbst beigebracht, indem ich online gelesen und Fragen wie diese gestellt habe, während ich an diesem Projekt gearbeitet habe. Ich entschuldige mich, wenn ich mein Problem schlecht erkläre, da mir wahrscheinlich das technische Wissen fehlt, um dies richtig zu tun.

Ich versuche, zwei Durchflussmesser über den Mikrofonanschluss eines Telefons / Tablets abzulesen. Die Impulsstifte der Durchflussmesser schalten zwischen + 0 V und + 5 V um, wenn sich ihre Windräder drehen.

Ich verwende das folgende Schema, um die Signale der beiden Durchflussmesser zu mischen und über einen Mikrofonanschluss zu senden:

schematisch

Ich mische die beiden Impulspins mit einem R-2R zusammen. Auf diese Weise kann ich auf Spannungsänderungen achten und anhand der Größe der Spannungsänderung feststellen, welcher der beiden Durchflussmesser seinen Zustand geändert hat. Wenn ich beispielsweise eine Spannungsänderung von 2,5 V sehe, weiß ich, dass der Durchflussmesser 1 eingeschaltet ist. Wenn ich eine Spannungsänderung von -1,25 V sehe, weiß ich, dass der Durchflussmesser 2 ausgeschaltet ist. Ich benutze dann einen Spannungsteiler, um die Spannung innerhalb des Spannungsbereichs der Soundkarte abzusenken.

Die Soundkarte ist wechselstromgekoppelt und wandelt die Spannungsänderungen mit einer Formel wie einer in eine Amplitudenänderung um amplitude change = (voltage change)/(voltage range). Die Wechselstromkopplung zieht die Amplitude ebenfalls langsam auf 0 zurück. Wenn meine PC-Soundkarte einen Spannungsbereich von 2 V hat und die Durchflussmesser eine Spannungsänderung von -1,5 V verursachen, lese ich über den Mikrofonanschluss eine Amplitudenänderung von-1.5V/2V = -0.75 . Mein Algorithmus erkennt diese Amplitudenänderung und ermittelt anhand einiger Schwellenwerte, ob sie durch den Durchflussmesser 1 oder 2 verursacht wurde. Dies ist in den folgenden Screenshots meines Java-Programms zu sehen, das auf meinem PC ausgeführt wird:

Vom PC-Mikrofonanschluss gelesenes Rohsignal : (Quelle: awesomebox.net )PC-Durchflussmessersignal

Programm, das erkannte Statusänderungen des Durchflussmessers hervorhebt: Erkennung der Signalstatusänderung des PC-Durchflussmessers

Wie Sie sehen können, erkennt das Programm erfolgreich Statusänderungen des Durchflussmessers. kleinere Amplitudenänderungen werden durch den Durchflussmesser 1 verursacht und größere Amplitudenänderungen werden durch den Durchflussmesser 2 verursacht.


Die Probleme beginnen, wenn dasselbe Signal an mein Galaxy Note 8 Android-Tablet gesendet wird. So sieht das Signal aus, wenn es über den Mikrofonanschluss des Tablets gelesen wird: (Quelle: awesomebox.net )Tabletten-Durchflussmesser-Signal

Beachten Sie, dass alle oben gezeigten Amplitudenänderungen durch dieselbe Spannungsänderung verursacht werden (alle Zustandsänderungen stammen vom selben Durchflussmesser). Solo oder seltene Spannungsänderungen erscheinen als sehr kleine Amplitudenänderungen, während eng gruppierte Spannungsänderungen (gleicher Größe) als größere Amplitudenänderungen und näher an dem erscheinen, was ich erwarten würde. Je näher eine Spannungsänderung an anderen Spannungsänderungen liegt, desto größer scheint die Amplitudenänderung zu sein, die sie erzeugt.

Hier ist, was ich vom Mikrofonanschluss meines PCs lese und was ich erwarte. Beachten Sie, dass alle Amplitudenänderungen ungefähr gleich groß sind: (Quelle: awesomebox.net )PC-Durchflussmesser erwartetes Signal

Erwartet: Eine Spannungsänderung von 1,5 V oder -1,5 V sollte immer eine Amplitudenänderung von 0,75 oder -0,75 verursachen.
Tatsächlich: Eine einzelne Spannungsänderung von 1,5 V oder -1,5 V bewirkt eine Amplitudenänderung von 0,1 oder -0,1. Eine Reihe von 10 Spannungsänderungen von 1,5 V und -1,5 V in kurzer Zeit verursacht Amplitudenänderungen von 0,75 und -0,75.

Diese Inkonsistenz macht es meinem Algorithmus unmöglich zu identifizieren, durch welchen Durchflussmesser eine Amplitudenänderung verursacht wurde. Warum verursachen diese einzelnen Spannungsänderungen so kleine Amplitudenänderungen? Gibt es eine Möglichkeit, die Amplitudenänderungen immer mit den Spannungsänderungen in Einklang zu bringen?

Anstatt dass das Signal langsam auf 0 zurückfällt, wie ich es von der Wechselstromkopplung erwarten würde (und in dem über den Audioanschluss meines PCs gelesenen Signal zu sehen ist), scheint es sofort auf 0 zurückzufallen und einige Male zu schwingen, bevor es sich schließlich wieder auf 0 einstellt 0. Die Schwingung fügt dem Signal viel Rauschen hinzu und macht es schwierig zu bestimmen, ob eine Amplitudenänderung durch eine Spannungsänderung verursacht wurde oder einfach eine Schwingung vom Zurücksetzen auf 0 ist . Gibt es eine Möglichkeit, diese Schwingungen zu beseitigen?


Entschuldigung für den kurzen Roman und vielen Dank für jeden Rat,
- Mike

Mike
quelle
1
Es sieht so aus, als würde der Mikrofoneingang gefiltert. Vielleicht ist es besser, einen Line-In-Anschluss anstelle eines Mikrofons zu verwenden.
Al Kepp
1
Dies ist eine interessante und sehr gut geschriebene Frage. Vielen Dank für die Veröffentlichung!
Adam Haun
Was passiert, wenn sich beide Durchflussmesser genau zur gleichen Zeit (oder sehr nahe) ändern? Suchst du das Ich hatte nichts mit der Frage zu tun, die ich kenne, aber es war eine interessante Lektüre und hat mich gefragt.
Tom Carpenter
Denken Sie daran, dass diese Mikrofone über eine Filterung verfügen, um die Sprachqualität zu verbessern und die Geräuschunterdrückung zu verbessern. Einige haben möglicherweise sogar 2-3 verschiedene Mikrofone im Gerät. Sie können versuchen , eine USB-Soundkarte zu kaufen und sie an das Mobiltelefon anzuschließen. Wenn die Soundkarte dies zulässt, können Sie die Signale über die Mikrofon- / Line-In-Anschlüsse senden.
Ismael Miguel

Antworten:

5

Der einfachste Weg, die Wechselstromkopplung zu überwinden, besteht darin, Ihre Gleichstromsignale in Wechselstrom umzuwandeln. Scheint logisch, nicht wahr?

Eine einfache Methode besteht darin, Ihr Eingangssignal einfach mit einer Nennfrequenz zu zerhacken. Irgendwo zwischen 500 Hz und 1 KHz erscheint vernünftig.

Was Sie aufwickeln, ist ein Wechselstromsignal (Rechteckwelle) mit der Amplitude Ihres ursprünglichen Gleichstromsignals.

Es gibt mehrere einfache Möglichkeiten, dies zu tun.

1) Die einfachste Methode ist die Verwendung eines CMOS 555-Timers wie TLC555. Ich bin gerade nicht an meinem Computer, aber ich werde einen Schaltplan eingeben, wenn ich nach Hause komme. Es folgt aber eine verbale Beschreibung:

Verbinden Sie die Stifte 2 und 6 miteinander und mit Ihrem Zeitkondensator. Der Timing-Widerstand wird zwischen Pin 2/6 und Pin 3 angeschlossen. Die Pins 4 und 8 werden an Ihre Stromversorgung angeschlossen (5-15 VDC). Pin 1 geht nach Masse.

Verbinden Sie Ihr DC-Eingangssignal über einen 4,7-k-Widerstand mit 555 Pin 7. Dieser Pin speist auch den Analogeingang Ihres Computers.

Wählen Sie das Timing-RC-Netzwerk für Ihre gewünschte Frequenz.

Erledigt. . .

Es gibt andere Zerhackermethoden, aber diese ist wirklich einfach und kostengünstig.

[Bearbeiten]

Nach dem erneuten Lesen der ursprünglichen Frage und der nachfolgenden Kommentare und Antworten werde ich meine Antwort leicht ändern.

Da Sie Impulse (keine Gleichstrompegel) mit unterschiedlicher Amplitude an das Smartphone / den PC senden, empfehle ich Ihnen, das Zerhackersignal als Träger zu behandeln. Sie würden daher diese Zerhackungsfrequenz ziemlich hoch einstellen - über 10 kHz, aber unter 20 kHz. Ich weiß nicht, wie scharf die Anti-Aliasing-Filter in modernen analogen Computern / Smartphones sind, aber ich denke, Sie möchten sich von ihnen fernhalten. Vielleicht können Sie die Chop-Frequenz auf 16 oder 18 KHz bringen - ich weiß es ehrlich gesagt nicht.

Führen Sie dann einfach ein Hüllkurvenerkennungsschema in der Software durch, um die ursprünglichen DC-Signalamplituden wiederherzustellen.

Hier ist das Schema, das ich zuvor versprochen habe. Beachten Sie, dass dies mit einem CMOS 555-Timer gut funktioniert - nicht mit einem der bipolaren Originalteile. TLC555 ist mein Standard-555-Timer.

Pin 7 dient zum Zerhacken des Eingangssignals, da es sich um einen Open-Drain-Ausgang handelt. Wir nehmen unser Timing-Feedback vom Ausgangspin (Pin 3) - dies funktioniert gut, da Pin 3 ein symmetrischer CMOS-Ausgang ist, dessen Vout-HI-Pegel ungefähr gleich Vdd und dessen Vout-LO-Pegel ungefähr gleich Vss ist.

Keines dieser Merkmale ist möglich, wenn ein originaler bipolarer 555 verwendet wird.

schematisch

simulieren Sie diese Schaltung - Schema erstellt mit CircuitLab

Dwayne Reid
quelle
Gute Antwort - aber eine kurze Beschreibung der Demodulation wäre wertvoll.
Nick Johnson
Soweit ich das beurteilen kann, sucht das OP nicht danach. Er suchte nur nach Amplitude.
Dwayne Reid
Eh? Mit Demodulieren meine ich die Wiederherstellung der Originaldaten aus dem modulierten Signal.
Nick Johnson
Danke dafür. Ich habe diesen Weg schon einmal eingeschlagen und ihn aufgegeben, weil ich ihn nicht verstehen konnte. Ich werde es noch einmal versuchen und zum Glück habe ich bereits ein paar 555 Timer herumliegen. Leider folge ich den meisten Ihrer Aussagen immer noch nicht. Könnten Sie mich näher erläutern oder auf eine Ressource hinweisen, die die Theorie des Signalhackens abdeckt? Die Grundlagen, die ich wissen möchte, sind: Wie wirkt sich die variierende Spannung auf die Frequenz des Signals aus? Ist es eine konstante Frequenz oder Impulse? Was ist ein "Träger" ("das Zerhackersignal als Träger behandeln")?
Mike
Durch das Zerhacken wird Ihr Gleichstromsignal einfach in ein Wechselstromsignal mit derselben Amplitude umgewandelt. Sie sagten, dass Sie zwei Sensoren mit einem R-2R-Netzwerk kombinieren. Dies gibt Ihnen 4 diskrete Spannungspegel. Der Zerhackungsprozess wandelt diese Signalpegel einfach in Wechselstrom mit der von Ihnen gewählten Trägerfrequenz um.
Dwayne Reid
0

Die schnelle Antwort lautet nein. Sie sehen zwei verschiedene Effekte.

Der Android-Mikrofoneingang ist zwar AC-gekoppelt, aber die Grenzfrequenz ist viel höher als Ihre Sensorfrequenz. Da Sie keine Informationen über die Zeitbasis für die verschiedenen Spuren angeben, ist es unmöglich, Ihnen genaue Zahlen darüber zu geben, wie der Frequenzgang des Android-Eingangs aussieht.

Der PC hat auch eine zu hohe Niederfrequenzgrenze, die jedoch etwas näher an Ihren Sensordaten liegt als die von Android. Darüber hinaus hat es eine Eingangsimpedanz von ungefähr 1 Kiloohm, was Ihr Widerstandsnetzwerk belastet und die niedrige Amplitude verursacht.

Es gibt keine praktische Möglichkeit, die Auswirkungen der Wechselstromkopplung zu umgehen Pufferverstärker mit Operationsverstärker.

WhatRoughBeast
quelle
0

Eine ausgezeichnete Frage in Präsentation & Inhalt. Und Ihre Analyse, wie Sie von einem einzelnen (Mono-) Eingangskanal das bekommen, was Sie wollen, ist bewundernswert.

Ich vermute, das Problem ist, dass die Filterzeitkonstante des Telefons kürzer ist als die des PCs (dh der Grenzwert für niedrige Frequenzen des Telefons ist höher als der der PCs), und das liegt wahrscheinlich daran, dass die AC-Kopplungskappen für das gesamte Spektrum gelten 20-20-kHz-Audio ist in der Regel relativ groß und größer, als es wahrscheinlich bequem in ein Telefon passt. Ich wette, das Telefon hat entweder eine geringere Empfindlichkeit gegenüber niedrigen Frequenzen (eine Spezifikation, die Sie wahrscheinlich nie für ein Telefon veröffentlicht sehen werden), und sie werden möglicherweise einen Low-End-Boost durchführen, um diese Realität zu kompensieren.

Ich denke, Sie wären wieder auf dem richtigen Weg, um Ihre Sensordaten zunächst in ein AC-kompatibles Modulationsschema umzuwandeln, wie Dwayne vorgeschlagen hat.

Techydude
quelle
0

Wenn alles, was mit dem Signal gemacht wird, ein DC-Sperrfilter (dh ein Hochpassfilter) ist, können Sie das ursprüngliche Signal im Prinzip durch Integration wiederherstellen. Diese Methode ist anfällig für Verstärkungsrauschen und kann leicht abweichen, wenn Ihre Konstanten nicht sorgfältig ausgewählt werden, aber theoretisch möglich ist.

Die gute Nachricht ist, dass Sie das ursprüngliche Signal nicht rekonstruieren müssen. Während die Impulse sehr selten auftreten können, interessieren Sie sich im Prinzip nur für die ansteigende oder abfallende Flanke, die an sich eine Hochfrequenzkomponente darstellt und gut aufgezeichnet wird, selbst wenn die Spannung auf Null zurückfällt.

Die schlechte Nachricht ist, dass hier anscheinend andere Effekte als ein einfacher DC-Sperrfilter im Spiel sind. Insbesondere im Android-Signal können AGC (automatische Verstärkungsregelung) oder Versuche zur Rauschunterdrückung vorhanden sein, was den langsamen Anstieg der Amplitude erklären könnte. Eine StackOverflow-Antwort deutet darauf hin, dass diese Dinge nicht deaktiviert werden können, während ein Kommentar zu dieser Antwort darauf hindeutet, dass dieVOICE_RECOGNITION Konstante Ihnen den rohen Audiostream geben soll, dies jedoch möglicherweise nicht immer der Fall ist. Möglicherweise enthält das Tablet eine analoge Schaltung, die einfach nicht ausgeschaltet werden kann.

Möglicherweise möchten Sie das Modulationsschema vollständig überdenken. Ähnlich wie bei Dwaynes Antwort könnten Sie in Betracht ziehen, eine 555 oder eine andere Schaltung einzurichten, um bei jedem Impuls ein kurzes Zwitschern oder eine Impulsfolge mit unterschiedlichen Frequenzen für die beiden Sensoren zu erzeugen. Die Impulse können dann erfasst werden, indem das Signal in der Software unter Verwendung von Bandpassfiltern bei den zwei ausgewählten Frequenzen analysiert wird. Der Detektor sucht dann nach einem Impuls mit der angegebenen Frequenz, der länger als ein bestimmter Schwellenwert ist, und zählt diesen als Impuls vom jeweiligen Sensor. Dies sollte ein sehr robustes Schema sein, das nicht von den absoluten Amplituden des Signals abhängt.

Die Frequenzen sollten idealerweise so gewählt werden, dass die obere Frequenz kein Oberton der unteren ist, so dass falsche Messwerte erzeugt werden können. Ein 555-Timer erzeugt standardmäßig Impulsausgänge, aber die Ausgänge können einzeln tiefpassiert werden, um bei Bedarf einige ihrer Obertöne zu entfernen. DTMF verwendet beispielsweise Frequenzen, die um den Faktor 1,1 voneinander beabstandet sind.

Die Frequenz und Dauer müssen zusätzlich so gewählt werden, dass sie möglicherweise um eine Größenordnung höher bzw. kürzer als die schnellste Ausgabe des Sensors sind, um zu vermeiden, dass eine neue Impulsfolge vor oder zu nahe am Ende der vorherigen beginnt .

Alternativ können Sie ein Frequenzmodulationsschema verwenden, das wiederum dem DTMF ähnelt und bei dem der Sensorzustand die Frequenz eines Oszillators moduliert, die mit einem Bandpassfilter wie oben vorgeschlagen erfasst werden kann. Dies hat den zusätzlichen Vorteil, dass eine Trägerwelle immer eingeschaltet ist, sodass Sie erkennen können, ob überhaupt ein Sensor angeschlossen ist.

Wenn Sie sich für ein flankengetriggertes Schema entscheiden, können Sie nur bei positiven Impulsen ein Zwitschern auslösen, wodurch Sie sowohl eine etwas einfachere Triggerschaltung als auch eine mildere Frequenzauswahl erhalten, da die Impulse jetzt weiter entfernt sind ein Teil.

nitro2k01
quelle