Pfad:AVR-DE => Anwendungen => AVR-D/A-Wandler => RC-Filter
DAC8 Tutorial zum Erlernen der AVR Assembler-Sprache von
AVR-Einchip-Prozessoren AT90S, ATtiny, ATmega und ATxmega
von ATMEL anhand praktischer Beispiele.

Einfacher 8-Bit-Digital-zu-Analog-Wandler mit einem R/2R-Netzwerk
RC-Filter zum R/2R-Netzwerk

RC-Filter-Eigenschaften

R/2R-Netzwerke erzeugen im dynamischen Betrieb steile Rechteckflanken. Diese sind bei 4-, 5- oder 6-Bit Auflösung um so steiler, so dass sich damit kaum ein einigermassen reiner Sinus erzeugen lässt. So sieht ein 4-Bit-DAC-Sinus aus:

4-Bit-DAC-Sinus

Das hat nur von sehr weitem mit einem Sinus zu tun, und enthält eine gelungene Mischung aus 1.000 Hz, 3.000 Hz, 5.000 Hz, 7.000 Hz und viele, viele andere mehr. Wer sich davon überzeugen will, dass so ein Rechteck aus allen ungeradzahligen Oberwellen der Grundschwingung besteht, mit leicht abfallender Amplitude, wird hier fündig.

Nur Anhänger der ganz großen Vielfalt können so was wirklich gut finden, alle anderen tun was dagegen, nämlich RC-Filtern.

Filter für DACs

Einstufiges RC-Filter

Die hohen Frequenzen oberhalb der zu erzeugenden Sinusfrequenz müssen also raus aus dem Signal. Das erreicht man am einfachsten mit einem RC-Filter. Es gibt auch noch andere Methoden, aber nicht zum Preis von 20 Cent und mit zwei kleinen Bauteilen. So sieht ein RC-Filter aus:

1-stufiges RC-Filter Es wirkt folgendermaßen. Bei der Frequenz f hat der Kondensator einen Scheinwiderstand von
ZC = 1 / (2 * Π * f * C)

Bei einer Frequenz von 1.000 Hz hat ein Kondensator von 10 nF einen Scheinwiderstand von

ZC = 1 / (2 * 3,141592654 * 1000 * 0,00000001) = 15916 Ω
Mit höherer Frequenz und höherer Kapazität des Kondensators hat C einen immer niedrigeren Scheinwiderstand. Bei 3 kHz sind es schon 5305 Ω, bei 5 kHz 3183 Ω, usw.

Der Widerstand R bildet nun mit dem Scheinwiderstand von C einen Spannungsteiler. Am Ausgang ist die Spannung

UAus = UEin * ZC / (R + ZC).

Bei f = 1000 Hz, C = 10 nF und R = 10 kΩ ist der Spannungsteiler
P1kHz = 15916 / (10000 + 15916) = 0,614

Das entspricht einer Abschwächung des Eingangssignals auf das 0,614-fache. Bei drei kHz sind es schon
P3kHz = 5305 / (10000 + 5305) = 0,347

also etwa doppelt so hohe Abschwächung wie bei 1000 Hz. Bei 5 kHz sind es 0,241, also die dreifache Abschwächung.

Die Amplitude noch höherer Frequenzen wird also nicht Null, aber sie kann sehr, sehr klein werden, wenn R, C und f größer werden.

Zweistufiges RC-Filter

2-stufiges RC-Filter Macht man das Ganze zwei Mal, ist die Filterkurve noch steiler. Bei 1 kHz waren es das 0,614-fache, macht man das zweimal ist es die 0,641 * 0,641 = 0,411-fache Abschwächung, also nicht so arg viel stärker. Aber bei 3 kHz ist nur noch das 0,120-fache an Amplitude über geblieben, bei 5 kHz nur noch das 0,058-fache. Noch mehr RC-Stufen verstärken den Effekt nur noch weiter. Wir werden den Effekt gleich anschaulich sehen.

Filterkurven RC Das hier ist der Abschwächungseffekt, den die ein-, zwei- und drei-stufigen Filter haben. Zwischen 10 und 100 Hz ist praktisch kein Filtereffekt zu sehen, die Frequenzen passieren das Filter nahezu unabgeschwächt. Bei 1.000 Hz sind beim 1-stufigen Filter schon Einbrüche der Spannung auf die Hälfte, beim 3-stufigen auf das 0,2-fache zu sehen. Eine weitere Dekade höhere Frequenzen von 10.000 Hz sind auf ein Zehntel beim 1-stufigen Filter abgeschwächt, beim 2-stufigen auf ein Tausendstel und beim dreistufigen auf ein 40.000-stel.

Eine geeignete Methode, um die eckigen Rechtecksignale gehörig abzuschleifen.

Filtereffekt bei DAC-Signalen

Um den Effekt zu demonstrieren, hier eine 100 Hz-Schwingung mit einem 5-Bit-DAC, gefiltert mit R=10k und C=10n. Die zu sehenden Treppen des DAC sind mit einer Stufe schon nahezu verschliffen, bei zwei (magenta) und bei drei Stufen (rot) sind die restlichen Welligkeiten kaum mehr zu erkennen.

5-Bit-DAC mit RC-Filtern

Die grüne Kurve eiert noch ein wenig und giert nach dem Rechteck. Bei der Magenta-Kurve nach zwei Stufen sieht man nur noch beim genauen Hingucken ein paar Unebenheiten. Diese sind bei der roten Kurve, nach drei RC-Filtern, ganz verschwunden, und ein fast idealer Sinus ist erreicht.

Mit demselben R und C, aber bei der 10-fachen Frequenz ist das hier zu sehen:

Filter bei 1000 Hz

Das ist etwas zu viel des guten RC und auch die Grundschwingung wird auf etwa die Hälfte abgeschwächt. Dafür ist auch schon nach einer einzigen Filterstufe ein anständiger Sinus erreicht und die beiden Folgestufen wären eigentlich mehr als flüssig, nämlich überflüssig.

Den Unterschied zwischen zwei- und dreistufigem RC-Filter zeigt das folgende Bild. Hier sind nur zwei Stufen aktiv.

Filter bei 1000 Hz

Hier ist die Amplitude in allen zwei Stufen deutlich weniger abgeschwächt. Bei der dreistufigen Variante wirken die RC-Glieder nicht nur als weitere Spannungsteiler: sie wirken durch die Rückströme von C3 nach C2, und in der Folge auch von C2 nach C1, zusätzlich absenkend.

Bei acht Bit Auflösung reicht übrigens schon eine einzige Stufe aus, um die Restwelligkeit zu filtern, weil die störenden Rechtecksignalanteile eine acht mal höhere Frequenz haben und daher der Filtereffekt entsprechend besser wirkt.

8-Bit-DAC mit RC-Filter

Wer nun glaubt, mit einem 10-Bit-DAC dagegen angehen zu können, der sollte sich bewusst sein, dass damit auch die maximal erzeugbare Frequenz um den Faktor vier niedriger wird. Man müsste einen AVR mit 256 MHz Takt gehörig übertakten, um mit dem 10-Bit-DAC noch die im Audio-Bereich üblichen 20 kHz-Töne erzeugen zu können. Aber es ist sicher etwas einfacher, mit zwei Widerständen und zwei Kondensatoren und einem 5-Bit-DAC dagegen anzugehen als auf eine höher taktende Prozessorfamilie von AMD oder Intel zu wechseln. Mehr Grips statt mehr Taktfrequenz!

Zum Anfang dieser Seite

Software für die Filterberechnung

Die Software für die Filteranalyse ist in Lazarus-Pascal geschrieben. Der Quellcode ist hier, eine für 64-Bit-Win kompilierte Version davon ist hier.

Das Programm ist so einfach zu bedienen, dass sich eine Bedienungsanleitung erübrigt.

Filter-Software

Einfach die Einstellungen im linken Teil ändern. Editierfelder prüfen zulässige Wertebereiche und erröten, wenn was falsch ist. Sie akzeptieren deutsche und ausländische Dezimalzeichen. Bei den Dropdown-Feldern bitte nur die vorgegebenen Werte wählen und auf die Handeingabe von Werten im Editierfeld verzichten. Mit dem Button "Speichern" kann das Bild als PNG oder BMP gespeichert werden.

Lob, Tadel, Fehlermeldungen, Genöle und Geschimpfe oder Spam bitte über das Kommentarformular an mich.

Zum Anfang dieser Seite

©2017 by http://www.avr-asm-tutorial.net