Umwandlung von PWM in ein analoges Signal

9

Ich versuche zu überlegen, wie ich ein PWM-Signal am besten in ein analoges Signal umwandeln kann. Ich könnte ein RC-Filter verwenden, aber das erfordert eine sehr hohe PWM-Frequenz, um eine originalgetreue Wiedergabe des Signals zu erzielen. In meinem Fall habe ich es mit Audiofrequenzen für das analoge Signal zu tun - bis zu 20 kHz. Welche anderen Möglichkeiten gibt es?

Thomas O.
quelle
2
Wie haben Sie überhaupt ein PWM-Signal erhalten, das bis zu 20 kHz ohne eine sehr hochfrequente PWM darstellt?
Martin
3
@Thomas, Fein, also brauchst du einen aktiven Tiefpassfilter mit einem ziemlich steilen Abrollen.
Martin
1
@Thomas - Haben Sie sich tatsächlich Ihre Audiofrequenzen angesehen? 20 kHz ist ungefähr die theoretische Grenze für hörbare Signale, was wahrscheinlich nicht der Standard ist, den Sie erfüllen müssen. Sprache kann zum Beispiel vollständig unter 3 kHz gut dargestellt werden.
Kevin Vermeer
1
@reemrevnivek Abhängig von Ihrer Anwendung kann <3 kHz völlig inakzeptabel sein. Sie können den Kern einer Stimme in diesem Bereich erhalten, aber zu sagen, dass sie in diesem Bereich wirklich codiert werden kann, ist nicht korrekt.
Joe Mac
1
@JoeMac Ein Standard-Telefonanruf wird mit 8-Bit-Audio mit einer Abtastrate von 8 kHz codiert. Das Antialisierungsfilter ist jedoch normalerweise auf einen Grenzwert von 3 kHz eingestellt (und ein Hochpassfilter schneidet alles unter etwa 300 Hz ab). Für viele Sprachanwendungen sind 3 kHz also in Ordnung. Höher klingt zwar besser, trägt aber nicht zur Verständlichkeit bei.

Antworten:

11

Die einfache Antwort ist, dass Sie nicht können. Es gibt mehrere Dinge, die gegen Sie sprechen:

  1. Für eine gute Audioqualität müssten Sie in Ihrer PWM-Generation sehr präzise sein. Dies ist ziemlich schwierig, da Ihre Haupttaktfrequenz (die Frequenz, aus der die Logik die PWM generiert) etwa 100 MHz betragen muss, um das Äquivalent eines 11-Bit-DAC zu erhalten. Es gibt Möglichkeiten, PWM ohne das so gut zu erzeugen, aber dann würden Sie mit einem analogen Signal beginnen und hätten dieses Problem daher nicht.

  2. Wie bereits erwähnt, benötigen Sie einen sehr steilen Abrollvorgang eines Filters. Nur um Ihrem 11-Bit-DAC-Äquivalent zu entsprechen, benötigen Sie etwa 60 dB / Oktave - was selbst für Profis unvernünftig ist. Es ist sehr schwierig, diese Art von Filter zu verwenden, weshalb jeder für seine Audiodaten zu Delta-Sigma-DACs ging, für die ein Filter mit etwa 6 dB / Oktave erforderlich ist.

  3. Wenn Ihr Filter nicht 60 dB / Oktave beträgt, muss die PWM-Frequenz sehr hoch sein. Wenn Sie 60 dB / Oktave haben, können Sie eine PWM-Frequenz von 40 kHz haben. Bei 54 dB / Oktave funktionieren dann vielleicht 80 KHz. 48 dB / Oktave = 160 kHz. Sehr schnell gelangen Sie in den hohen MHz-Bereich - und dann müsste Ihre Haupttaktfrequenz im GHz-Bereich liegen.

Es ist jedoch nicht alles verloren. Müssen Sie das Hochfrequenzmaterial wirklich herausfiltern? In vielen Anwendungen (nicht allen) können Sie es entweder nicht filtern oder ein einfaches RC-Filter mit 1-5 MHz verwenden. Es wird immer noch hochfrequentes Zeug geben, aber entweder der Lautsprecher oder Ihr Ohr werden alles herausfiltern. Aber das Audio wird immer noch schlecht klingen. AM Radio an einem schlechten Tag Qualität. So ist es halt.

Update: Meine Zahlen für # 3 oben sind etwas falsch. Aber bevor ich dazu komme, möchte ich erklären, woher ich alle Zahlen habe.

  1. Angenommen, Sie generieren die PWM mithilfe digitaler Logik (FPGA, Mikrocontroller usw.). Nehmen wir dann an, Ihre Audio-Abtastrate und damit Ihre PWM-Frequenz beträgt 48 kHz. Und Sie möchten eine 8-Bit-Auflösung. Das bedeutet, dass Ihre Haupttaktfrequenz 12,288 MHz betragen sollte. Ich habe das so berechnet: Master_Clk_Freq = Sample_Rate * 2 ^ n_bits. Wenn Sie dies für eine 11-Bit-Auflösung erneut tun, beträgt dies 98,304 MHz.

  2. Der theoretisch beste Rauschpegel eines idealen DAC liegt bei -6 dB / Bit. Ein 24-Bit-DAC hat also kein besseres Rauschen als -144 dB. (Hinweis: Ich spiele ein wenig locker mit den Begriffen hier und fasse SNR, THD + N und Dynamikbereich zusammen.) Natürlich kann kein echter 24-Bit-DAC dies, aber wir sprechen hier theoretisch. Dies bedeutet, dass ein 11-Bit-DAC einen Rauschpegel von etwa -66 dB aufweist. Es macht also wenig Sinn, einen Filter zu erstellen, der besser funktioniert. AM Radio hat zum Vergleich ein Signal-Rausch-Verhältnis von ungefähr 60 dB.

  3. Ok, hier habe ich die Zahlen königlich durcheinander gebracht. Angenommen, die PWM-Rate = 48 kHz und der Filter-Cutoff = 24 kHz (um die Berechnung zu vereinfachen). Mit einem -60dB / Okt-Filter sind wir -63dB bei 48KHz. Wenn unser Filter auf -54 dB / Okt geändert würde, wären wir -57 dB bei 48 kHz und -62,4 dB bei 50,4 kHz. Dies bedeutet, dass wir durch Ändern unseres Filters von -60 dB / Okt -54 dB / Okt die PWM-Rate von 48 KHz auf 50,4 KHz ändern müssten, um die gleiche Filterblockierungsleistung zu erzielen. Keine Verdoppelung der PWM-Frequenz, wie ich bereits erwähnt habe. Auf die gleiche Weise müsste die PWM-Frequenz 104 kHz betragen, wenn das Filter auf -18 dB / Okt geändert würde (was ein überschaubares Design ist), um bei der PWM-Frequenz immer noch eine Filterdämpfung von -63 dB zu haben. Ich habe dies berechnet, indem ich eine kleine Tabelle erstellt und mit den Zahlen gespielt habe.

Arturo Gurrola
quelle
1
Diese Antwort könnte erheblich verbessert werden, wenn Sie erklären, wie Sie Ihre Zahlen ableiten ... (11-Bit-DAC, 60 dB / Oktave 40 KHz usw.)
Kevin Vermeer
@reemrevnivek - Du hast recht. Vielleicht sollte ich deshalb nicht gleich nach dem Aufwachen Antworten schreiben ... Ich muss jetzt in eine Besprechung gehen, aber wenn ich fertig bin, gehe ich die Zahlen noch einmal durch und stelle sicher, dass sie korrekt sind .
Genau aus diesem Grund habe ich gesagt, dass ein RC-Filter wahrscheinlich keine Option ist. Ich dachte über etwas anderes nach, wie die Integration der PWM-Rampe, das Erfassen der Spannung und das Zurücksetzen der Rampe. Ich werde sehen, ob ich ein Beispiel zum Laufen bringen kann ...
Thomas O
@reemrevnivek - Ich habe meine Antwort dahingehend aktualisiert, wie ich die Zahlen erhalten habe. @ThomasO - Während die von Ihnen beschriebene Integration der PWM dazu führen kann, dass die resultierende Wellenform sauber aussieht, weist sie bei der PWM-Frequenz immer noch eine große Frequenzspitze auf. Sie benötigen also immer noch denselben fiesen Tiefpassfilter.
3

Der RC-Tiefpassfilter wäre die natürliche Lösung, aber Sie können auch einen Mikrocontroller verwenden, um den Arbeitszyklus zu messen und diesen Wert zur Steuerung eines DAC zu verwenden. Um den Arbeitszyklus zu messen, benötigen Sie einen Timer mit Eingabeerfassungsfunktion. Je höher Ihre Timer-Uhr ist, desto genauer ist Ihre Messung. Wenn der Mikrocontroller keinen On-Chip-DAC hat, können Sie einen externen verwenden.

stevenvh
quelle
1

Ich integriere die PWM-Rampe, fange die Spannung mit einer Sample-and-Hold-Schaltung auf und setze dann die Rampe zurück. Dies scheint eine relativ genaue Darstellung des Signals zu erhalten, weist jedoch immer noch einige Probleme auf, wie z. B. PWM-Rauschen auf den Spitzen, und es ist leicht nichtlinear. Aber es funktioniert ziemlich gut und erlaubt mir, ein 100-kHz-PWM-Signal zu verwenden.

Geben Sie hier die Bildbeschreibung ein

Simulieren Sie es hier .

Thomas O.
quelle
1
Das ist eine coole Website-Simulationssache! Wie auch immer, wenn Sie das "PWM-Rauschen auf den Spitzen" bereinigen, werden Sie feststellen, dass die Ausgangswellenform viel Quantisierungsrauschen (auch bekannt als Aliasing) aufweist. Ich denke, dass das Rauschen, das Sie jetzt haben, und der 1K / 10nF-Filter am Ausgang das Quantisierungsrauschen verbergen (aber nicht entfernen).
1

Ein noch nicht erwähntes Problem besteht darin, zu wissen, wie das PWM-Signal erzeugt wurde, insbesondere ob die Vorderkante, die Mitte oder die Hinterkante mit einer gleichmäßigen Rate auftritt und ob das PWM-Signal Abtastwerte mit gleichmäßigem Abstand darstellt oder ob das PWM-Signal das darstellt Abtastwerte, die in gleichmäßigen Intervallen entnommen wurden oder ob sie den Wert des Eingangssignals zum Zeitpunkt der ansteigenden Flanke, der abfallenden Flanke oder beider darstellen. Wenn man weiß, wie eine PWM erzeugt wird, sollte es möglich sein, das ursprüngliche Signal gut wiederherzustellen (und es könnte auch aus einem mit der PWM-Rate abgetasteten Signal wiederhergestellt werden). Der Versuch, ein Signal zu rekonstruieren, das auf andere Weise als erwartet abgetastet wurde, kann zu Phasenverzerrungen führen.

Superkatze
quelle