Hi, ich habe einen Controller der mir Wave-Dateien von einer SD-Karte per 8-Bit PWM ausgbit. Das ganze läuft mit 3V Batteriespannung, deswegen kann ich den Lautsprecher nicht direkt ansteuern nach der einfachen Schaltung aus den Artikeln hier (mit zwei bipolaren Transistoren) - das Ausgangssignal bringt einfach nicht genug Leistung an einem 8 Ohm Lautsprecher. Da ich zugegebenermaßen in Analogtechnik nicht so fit bin, habe ich mir einen LM4991 Verstärker an den Ausgang geschaltet (in der Schaltung aus der Appnote) - das Signal ist nun von der Leistung her deutlich besser. Allerdings ist die Qualität recht mies - der Verstäreker verstärkt eben direkt die Rechtecksignale der PWM und gibt sie an den Lautsprecher. Wie müsste ich den PWM-Ausgang vom Mikrocontroller an den Verstärkereingang des LM4991 koppeln, um bereits dort ein halbwegs vernünftiges Signal (im Test also ein Sinus statt Rechteckspannung) zu haben? Die PWM-Frequenz ist 187,5KHz (48 MHz / 256). Muss es eine aufwändige Schaltung mit OP wie hier (Beitrag "Audio PWM von uC richtig Filtern") sein oder könnte man das auch mit passiven Bauteilen aufbauen? Bitte auch gerne Links, ich weiß nur nicht so recht wo ich am besten anfange, bzw. ob ein RC-Glied reicht oder ich eine Induktivität brauche (oder beides)? Und nein, ich möchte nicht auf einen Controller mit DAC wechseln. Es ist der kleine STM32F030 im TSSOP 20 Gehäuse. Danke & Gruß Markus
Markus M. schrieb: > Muss es eine aufwändige Schaltung mit OP wie hier > (Beitrag "Audio PWM von uC richtig Filtern") sein oder könnte man das > auch mit passiven Bauteilen aufbauen? Also ich würde ne PWM für Audio immer nur aktiv Filtern und nie passiv.
Die Dynamik deines Ausgangssignals also in diesen Fall die Audiobandbreite, bestimmt die benötigte Grenzfequenz. Die Differenz zwischen der Grenzfreqeunz und der Freqeunz deiner PWM, kombiniert mit den Qualität des gewünschten Ausgangssignals ergibt die benötigte Ordnung bzw. Flankensteilheit des Filters. Aufgrund fehlender Informationen ist der Rest eine Ratestunde. Michael Köhler schrieb: > Also ich würde ne PWM für Audio immer nur aktiv Filtern und nie passiv. Warum das denn?
Ein reiner RC filter dürfte etwas wenig sein. Ein LC Filter geht, braucht aber eine eher große Induktivität. Eine sehr hohe Qualität kann man mit 8 Bit PWM allerdings nicht erwarten, das Problem sind auch jetzt eher nicht die Hochfrequenten Reste, sondern die geringe Auflösung und damit geringe Dynamik. Wenn die Daten mehr als 8 Bit haben könnte man noch ein kleines bisschen bei der Aufbreitung gewinnen, indem man nicht jeden Wert für sich rundet, sondern ähnlich wie bei einem Sigma Delta Wandler arbeitet. Je nach Verstärker kann der aber auch durch die HF Anteile gestört werden, dann bringt der Filter noch einiges.
HI, hier mal die Schaltung, die Stützkondensatoren zwischen VDD und VSS sind natürlich da, habe ich aber jetzt nicht eingezeichnet. Das PWM-Signal kommt am µC an PB1 raus. Was sollte ich ändern? Meine Samplefrequenz beträgt 44,1 KHz (ich habe einfach soviel Platz auf der SD-Karte, da muss ich nicht downsamplen). Die PWM-Frequenz beträgt wie gesagt 48 MHz / 256 = 187,5 KHz. Da es sich um eine kleine Quäke handelt, müsste wohl die untere Grenzfrequenz nicht unter 100Hz liegen, die obere so dass es sich nicht gedämpft anhört, vlt. 14 KHz? Grüße Markus
:
Bearbeitet durch User
Die untere Grenzfrequenz ist unkritisch. 100 Hz sind ggf. schon relativ hoch. Die obere Grenzfrequenz darf auch niedriger liegen - über 14 kHz können viele gar nicht mehr hören. Auch über 10 kHz hat man selten noch was wesentliches. Das Problem sind eher die 8 Bit - bei etwas Dynamik in der Lautstärke bleibt da nicht viel über und leise Teile gehen unter und sind verzerrt. Wie sich das auswirkt kann man auch am PC testen, indem man verschiedenen Dateiformate probiert. Mit etwas mehr Bitbreite kann man deutlich mehr gewinnen als mit hoher Abtastrate. Also lieber 20 kHz und 12 Bit als 96 kHz und 8 Bit.
@ Markus M. (adrock) >Das PWM-Signal kommt am µC an PB1 raus. >Was sollte ich ändern? Schmeiss deinen "Verstärker" weg. Nimm einen 74HC04, so wie hier. http://www.mikrocontroller.net/attachment/137530/Mini_Power_Ethernet_Xformer.png IC1D musst du dir wegdenken. Dein PWM-Ausgang von Controller geht statt dessen dort dran, dein Lautsprecher kommt an die beiden Ausgänge, wo im Bild der Trafo dranhängt. Den Kondensator braucht man nicht. Das ist ein Low Cost Gegentaktverstärker. Man kann auch einen MOSFET-Treiber ala ICL7667 nehmen, der hat wenige Ohm Ausgangswiderstand.
Hi, ich verstehe nicht, warum man, wenn man schon eine PWM hat, noch analog heizen will. Schau Dir mal die TAS51xx bzw TAS52xx oder TAS53xx von TI an. Die sind bei mir vorgesehen. Allerdings für höhere ansprüche. Falls die Dir zu viel "Wums" haben gibt es noch viele andere auch von anderen Herstellern. Hinten dran hängst Du dann einen Cauer Filter mit passender Nullstelle. Falls Du anständig Dynamic willst, solltest Du Dir mal die DSPICs von Microchip ansehen. Damit habe ich einen Proto laufen mit guter Qualität (und mehreren Phasen in der PWM) laufen. Mittels eines 74AUC1Gxx Gatters mache ich aus zwei Ausgängen eine "Centered PWM", da die Chips das nicht native in high resolution können.
@Falk: OK, das mit dem 74HC04 werde ich ausprobieren. Ein 74HCT04 geht wohl nicht (den hätte ich da), da ich nur 3V Betriebsspannung habe? @Ulrich: Das Problem ist, wenn ich die Auflösung hochsetze, vermindert sich auch zwangsweise meine PWM-Frequenz. Der Timer kann max. mit 48 MHz getaktet werden, bei 10 Bit wären es dann nur noch 46 KHz PWM-Frequenz. Kann ich die 16 Bit Samples einfach 6 Bits nach rechts shiften zur Umrechnung auf 10 Bit?
@ Markus M. (adrock) >OK, das mit dem 74HC04 werde ich ausprobieren. Oder was ähnliches, 74HC14 geht auch. > Ein 74HCT04 geht wohl >nicht Nein, der braucht 5V. >zwangsweise meine PWM-Frequenz. Der Timer kann max. mit 48 MHz getaktet >werden, bei 10 Bit wären es dann nur noch 46 KHz PWM-Frequenz. Reicht für normale Qualität noch aus. >Kann ich die 16 Bit Samples einfach 6 Bits nach rechts shiften zur >Umrechnung auf 10 Bit? Ja.
Falk Brunner schrieb: > @ Markus M. (adrock) >>Kann ich die 16 Bit Samples einfach 6 Bits nach rechts shiften zur >>Umrechnung auf 10 Bit? > > Ja. Siehe Dir das mal an: http://www.dutchaudioclassics.nl/Philips-TDA1540-16bit-da-conversion/ Dabei wird der Fehler rausgedithert. Du mußt auch auf den Offset achten, der durch das Abschneiden entsteht und ggf runden!
Mit mehr Auflösung geht die PWM Frequenz runter, aber bei der Frequenz ist ja noch einiges an Spielraum. Wenn die Audiofrequenzen über 10 kHz weg sind, merkt das normal keiner. Man kann die unteren Bits auch durch Dithering darstellen. Die PWM Frequenz bleibt dann weiter hoch, und nur das letzte Bit wird ggf. im langsameren Takt verändert. Man hat also einen kleinen Anteil bei z.B. 40 kHz, aber nur sehr wenig Amplitude.
Nachtaktiver schrieb: > Michael Köhler schrieb: >> Also ich würde ne PWM für Audio immer nur aktiv Filtern und nie passiv. > > Warum das denn? Na weil man eine Audio-Signal ja auch hören will und da käme bei mir gleich ein passender OPV zum Einsatz der den gewünschten Lautsprecher auch treiben kann.
Hier mein Vorschlag: Einen zweiten Timer verwenden um ein inverses Signal mit gleicher PWM Phase zu erzeugen. Bringt 6dB Dämpfung des Trägers. Als Treiber einen doppelten Low-Side Gate-Treiber wie z.B. einen LM5111. Filter habe ich mal schnell zusammengehackt. Am Ende ist eine Frequenzweische mit einem Snubberwiderstand. Der verhindert, daß die Höhen zu stark ansteigen wenn der Ausgang zu wenig belastet wird. Ich hänge mal das LTSPICE File an. Zum Simulieren des Frequenzgangs einfach den Filter an die Voltage Source hängen.
Danke für die Antworten. Ich hatte den Vorschlag von Falk (74HC04 als Treiber) ausprobiert, leider reicht die Leistung nicht aus, selbst wenn ich jeweils 4 74HC04 Ausgänge parallel schalte. Ist einfach zu leise. Da ich den LM4991 nun schonmal da habe, habe ich zwischen den PWM-Ausgang des Controllers und den Eingang des LM4991 einen LC Tiefpass gehängt. Das Ergebnis ist nicht perfekt, aber im Vergleich ohne Tiefpass sehr gut. Es ist eh nur eine Art Spielzeug, mittlere Qualität reicht also aus.
Das sind natürlich Argumente. Von meiner mehr als zehnjährigen Erfahrung würde ich Dir aber doch raten noch einen zweiten Timer dazu zunehmen. Sofern der noch da ist und Deine Rechenleistung reicht. Falls ich den LM4991 richtig verstanden habe (habe nur kurz überflogen) kann man den auch voll symetrisch betreiben. Damit bist Du schonmal 6dB los. Dadurch, daß sich dann die Samplingrate quasi verdoppelt werden es nocmal 12dB bei einem Filter zweiter Ordnung. Schaue mal nach Multiple Feedback bzw. dem TI Filterdesigner. Wenn Du den alten bekommen kannst, bist Du besser dran. Falls ich den noch als Setup finde und Du es nicht weiter verrätst, kann ich Dir den auch gern per PM zumailen. PS: Dann hast Du noch ein Bit mehr, da Du die Pulsbreite unterschiedlich setzen kannst.
:
Bearbeitet durch User
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.