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?
9
Antworten:
Die einfache Antwort ist, dass Sie nicht können. Es gibt mehrere Dinge, die gegen Sie sprechen:
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.
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.
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.
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.
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.
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.
quelle
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.
quelle
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.
Simulieren Sie es hier .
quelle
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.
quelle