Entfernen von DC-Wandern im Offset eines DC-vorgespannten Audiosignals

Ich versuche, ein Audiosignal von einem Android-Telefon als seriellen Eingang zu einem MSP430G2553 zu lesen , und passe dieses Design an, um das integrierte Komparatormodul des MSP430 anstelle eines LM324 zu verwenden. Der Android-Code zum Erzeugen einer Rechteckwelle aus der Audiobuchse ist hier verfügbar . Der Ausgang ist eine ziemlich verrauschte Rechteckwelle, die vom Komparator in ein digitales Signal mit Logikpegel umgewandelt wird. Ich schieße auf ein 4800-Baud-Signal an den UART. Die Audio-Samplerate im Android-Code ist auf 41 kHz eingestellt.

In meinem Fall ist der positive Eingang des Komparators die interne Präzisionsspannungsreferenz (0,5 * VCC) anstelle eines externen Potis. Ich habe eine DC-Vorspannung an das Audiosignal angelegt, um es um die 0,5 * VCC-Marke zu zentrieren, bevor ich zum negativen Eingang des Komparators auf P1.5 (CA5) gehe. Das "AUDIO"-Netz ist CA5 auf dem MSP430. C1 ist aus keinem anderen Grund ein Tantalkondensator als der, den ich zur Hand hatte.DC-Vorspannungsschaltung

Ich habe zu Beginn jedes Signals einige DC-Wanderprobleme, die dazu führen, dass der Komparator zu Beginn des Signals nicht richtig auslöst:Rechteckwelle DC wandern

Wenn Sie den Anfang des Komparator-Eingangssignals (jetzt auf Scope CH2) vergrößern, können Sie das unerwünschte schnelle Umschalten am Komparator-Ausgang auf CH1 sehen:

Komparator schalten

Ich habe versucht, den Wert von C1 auf 0,47 uF zu erhöhen, aber das Entladen dauert unannehmbar lange (ich habe vergessen, ein Diagramm davon mit C1 = 0,1 uF zu speichern, aber es war kürzer) am Ende des Signals:lange Kondensatorentladung

Ich vermute, dass das Umschalten des Komparators teilweise behoben werden würde, indem der Komparator als Schmitt-Trigger eingerichtet wird, aber ich bin mir nicht sicher, ob es für die ersten paar Bits des Signals funktionieren würde, wenn der DC-Wander noch vorhanden ist. Was muss ich ändern, um das DC-Wandern ohne eine lange Kondensatorentladung am Ende des Signals loszuwerden?

Bearbeiten: So sieht der Roheingang aus (linke Seite von C1, Oszilloskop CH1) im Vergleich zum vorgespannten Signal auf CH2. Der vorgespannte Ausgang steigt im Verlauf des Signals etwas mehr an.unverzerrter Eingang und verzerrter Ausgang

Antworten (2)

Es sieht so aus, als ob das DC-Wandern durch den Android-Telefonausgang verursacht wird, der von 0 V umschaltet, wenn das Signal ausgeschaltet ist, auf eine Mischung aus 0 V und einer negativen Spannung, wenn das Signal eingeschaltet ist. Der Mittelwert bei eingeschaltetem Signal ist daher eine negative Spannung (ungefähr die Hälfte der Spitzenspannung), die einen DC-Offset vom Nullwert darstellt.

Wenn Sie den Android-Telefonausgang ändern können, versuchen Sie, das Signal symmetrisch zu machen (z. B. Aus-Bits bei -1 V, Ein-Bits bei 1 V), wodurch dieser Offset entfernt wird.

Es sieht so aus, als ob Sie ein zusätzliches Problem haben, nämlich dass Ihr Vorspannungsnetzwerk den DC-Punkt des Android-Ausgangs auf den gleichen (Vcc / 2) wie den anderen Eingang des Komparators setzt. daher verursacht Rauschen unerwünschte Übergänge. Wenn Sie sich Ihre erste Scope-Spur ansehen, beachten Sie, dass, wenn der Komparatorschwellenwert stattdessen auf den Wert der dickeren horizontalen Gitterlinie in der Mitte des Bildschirms (0 V?) eingestellt wäre, jeder Übergang erkannt würde, ohne dass der Android-Code geändert oder verwendet werden müsste ein Schmitt-Trigger.

Die Gesamtamplitude hängt von der Android-Multimedia-Wiedergabelautstärke ab, lassen Sie mich in den Code eintauchen und sehen, was ich in Bezug auf die Zentrierung auf diese Weise herausfinden kann.
Bingo, es gibt Byte-Variablen für logisch hoch und logisch niedrig. Sicher genug, sie waren auf -128 und 16 eingestellt. Ich habe den gleichen 144-Bereich beibehalten und ihn zentriert, wodurch ich jetzt gute Daten bekomme.

Dies ist kein DC-Wandern, sondern nur eine AC-Kopplung eines Signals mit DC-Inhalt. Es gibt drei gängige Lösungen für dieses Problem:

(1) AC-Kupplung entfernen. Dies ist möglicherweise nicht möglich; das Android kann seine eigene AC-Kopplung enthalten. Sie können dies testen, indem Sie vor die Kupplungskappe C1 schauen. Sofern Ihre Oszilloskopspuren nicht invertiert sind, können Sie dies tun, wenn Sie DC im Leerlauf sehen.

Dann müssen Sie den DC-Offset irgendwie ersetzen ... am einfachsten ist es, die Unterseite von R2 mit der Audiobuchse (linke Seite von C1) anstatt mit Masse zu verbinden und C1 vollständig zu entfernen.

Ihr letztes Foto zeigt, dass diese Option nicht funktioniert; Ihr Eingangssignal ist ebenfalls AC-gekoppelt mit einer längeren Zeitkonstante. Also, weiter gehts:

2) Ein "DC-Wiederhersteller" (in den Tagen des analogen Fernsehens auch als Diodenklemme bekannt) Sie benötigen eine Referenzspannung von 1,65 V abzüglich eines Diodenabfalls und eine Diode von "Audio" für diese Referenz. Wenn das Signal positiv driftet, leitet die Diode und klemmt es, um die Drift zu verhindern. Die negativen Spitzen bleiben nahe 0 V. Details als Übung übrig...

3) Die Art und Weise, wie Kommunikationsverbindungen ausgelegt sind: Eliminieren Sie die DC-Komponente des Signals, sodass Sie es problemlos AC-koppeln können. Es gibt eine Reihe von Möglichkeiten, dies zu tun - Wiki-Manchester-Codierung für den einen, 8B10B-Code für den anderen. Die Grundidee ist, dass sowohl 0 als auch 1 durch Rechteckwellen (z. B. mit unterschiedlicher Periode) dargestellt werden und das Signal niemals für längere Zeit auf einer der Schienen ruht. Wenn Sie möchten, gehe ich auf weitere Details eines einfachen Schemas ein.

Ein Vorteil eines DC-freien Signals und einer AC-Kopplung besteht darin, dass der Komparator auf einen lokalen „0 V“-Punkt eingestellt ist (wie Ihre Versorgung/2) und unabhängig von der Signalamplitude (Kabellänge, Android-Lautstärkeeinstellung) funktioniert.