Forum: Mikrocontroller und Digitale Elektronik Idee gesucht um Audio auszugeben


von Uli (Gast)


Lesenswert?

Hi,

ich plane ein Projekt bei dem ich 2 4W Lautsprecher möglichst einfach 
ansteuern will.
Der Klang sollte schon gut sein, nun ja was man halt bei den 
Lautsprechern erwarten kann. "Sound-shaping" kann man später immer noch 
machen.

Ich habe einen CORTEX M7 der mir WAV / MP3 Daten von einer SD liest und 
diese nun auf die Lautspecher ausgeben soll.

Nun fallen mir einige Möglichkeiten ein:

- CODEC mit OP und Leistungstreiber einbauen --> ist mir aber zu teuer 
und zu aufwendig.

- internen DAC auf Leistungstreiber --> etwas besser beim preis, nur der 
Klang könnte leiden

- ????


Was gibt es noch für möglichkeiten?

Je einfacher desto besser!

VG, Uli

von Matthias S. (Firma: matzetronics) (mschoeldgen)


Lesenswert?

16 Bit Timer auf Dual Channel PWM konfigurieren und eine einigermassen 
anständige Wiederholrate programmieren (am besten identisch mit der 
Samplingrate deiner Audiodaten). Am Ausgang der beiden PWM 
Stromverstärker und dann über Tiefpass auf Lautsprecher. Man kann auch 
erst den Tiefpass und dann verstärken, kostet ein wenig mehr 
Verlustleistung.

: Bearbeitet durch User
von Chris K. (Gast)


Lesenswert?

3 Euro in China für eine pcm5201 Platine investieren und den Sound via 
i2s ausgeben?

von avr (Gast)


Lesenswert?

Uli schrieb:
> Was gibt es noch für möglichkeiten?
>
> Je einfacher desto besser!

Was soll es denn nun sein? Einfach oder gut? Mit einem externen DAC 
erreicht man die beste Qualität. Die Beste Qualität mit dem µC allein 
erreicht man am einfachsten mit dem DAC. Mit einem Software 
Delta-Sigma-Wandler ist theoretisch mehr drin, aber ohne gescheite 
Filterung und externer Ausgangsstufe schafft man da nicht mehr. Ich hab 
selbst schon einen Delta-Sigma-Wandler 4. Ordnung auf dem STM32F4 
implementiert, aber bin nur auf ~60dB SNR gekommen. Da gibts Effekte, 
dass man das am Lautsprecher hört, wenn die CPU gerade "arbeitet" oder 
nicht.

von Dr. Sommer (Gast)


Lesenswert?

Das STM32F746 Discovery Board hat einen Cortex-M7 und einen WM8994 Codec 
eingebaut. Der kann zwar leider nur 2x2Watt, aber dafür ist schon alles 
fertig und du musst nur noch die Speaker anlöten. Mit SD Slot, Flash IC 
und SDRAM ist auch genug Speicher für Audio Daten da.

von Michael M. (michael89)


Lesenswert?

Hi,

Falls du nicht einer der Kompelttlösungen benutzen möchtest, kann ich 
dir ein TDA 2008 empfehlen. Dem gibst du dein Audio_Signal und schließt 
die Boxen direkt an.

Es handelt sich um ein Leistungsoperationsverstärker der bei richtiger 
Beschaltung "guten" Klang erzeugt, benutzt den selber für Kleinigkeiten 
(im Datenblatt findet man Beispiel Beschaltungen).

Einfacher fällt es mir nicht ein.

MfG
M.V

: Bearbeitet durch User
von Uli (Gast)


Lesenswert?

Das ganze ist eine kleine BOX mit Stereo, also 2 * Breitband 
Lautsprecher.
Das das hier alles nichts mit High-End Audio zutun hat sollte somit klar 
sein. Aber es soll halt doch nach was klingen.

Fertig Module kommen hierbei nicht in frage!

Der TDA 2008 ist interessant und könnte in frage kommen

An PWM / PDM hatte ich auch schon gedacht. Nur wie treibe ich dann am 
besten den Lautsprecher an?

VG, Uli

von Matthias S. (Firma: matzetronics) (mschoeldgen)


Lesenswert?

Uli schrieb:
> Nur wie treibe ich dann am
> besten den Lautsprecher an?

Wenn du einen Advanced Timer benutzt, könntest du 2 PWM Kanäle als 
Komplementärkanäle programmieren und damit direkt eine PWM Halbbrücke 
antreiben. DTI sorgt für eine Totzeit und alles was du brauchst, ist 
eine Halbbrücke und dann einen LC Tiefpass wie bei üblichen Class-D 
Endstufen. Nach oben offen ist die Leistung, ob du nun Logiklevel FET 
direkt betreibst oder über Halbbrückentreiber gehst.

von avr (Gast)


Lesenswert?

Uli schrieb:
> Das das hier alles nichts mit High-End Audio zutun hat sollte somit klar
> sein. Aber es soll halt doch nach was klingen.

Dann nimm den integrierten DAC, notfalls mit oversampling und eine 
integrierte endstufe dahinter, billiger wirds nicht.

von Matthias S. (Firma: matzetronics) (mschoeldgen)


Lesenswert?

Ich kriege aus den 12-bit DA des STM32F407 etwa Mittelwellenqualität 
raus. Wenn das reicht, ists ja gut.

von Uli (Gast)


Lesenswert?

Mittelwellenqualität wäre nicht so toll.
UKW sollte es schon sein.
DAB+ wäre super.

Das mit dem Advanced Timer klingt recht gut, wenn der das timing für 
48KHz noch macht und ich mir damit keine EMV schleuder baue.

Der TDA 2008 und auch andere brauchen immer Spannungen die ich so direkt 
nicht habe. Da wäre eine Halbbrücke / H-brücke schon besser.

VG, Uli

von avr (Gast)


Lesenswert?

Uli schrieb:
> Das mit dem Advanced Timer klingt recht gut, wenn der das timing für
> 48KHz noch macht und ich mir damit keine EMV schleuder baue.

Damit bekommst du auch bei weitem keine UKW Qualität heraus. Wie ich 
schon oben geschrieben habe. Beim Delta-Sigma Wandler über den uC wird 
die Performanz durch den uC gestört. Mit dem Verfahren wäre locker deine 
"DAB+" Qualität drin. Ohne externe Filterung Treiberstufe/DAC und 
gefilterter analoger Spannungsversorgung wird das nichts.

Ich würde dir einen fertigen Audio DAC empfehlen. Oder wenn du dich mit 
weniger zurechtfindest den internen DAC. Der DAC ist besser als alles 
was du mit pwm erreichen kannst.

von Matthias S. (Firma: matzetronics) (mschoeldgen)


Lesenswert?

Uli schrieb:
> DAB+ wäre super.

Dann hol dir doch einen kleinen I²S DAC, wie z.B. den CS4334 in SO8. Das 
ist ein 24-bitter mit 96 kHz Clock und mitlaufender De-Emphasis.
https://www.cirrus.com/products/cs4334-35-38-39/
Kostet bei Segor unter 6 Euro.

: Bearbeitet durch User
von Johnny B. (johnnyb)


Lesenswert?

Es gibt Leistungstreiber mit I2S Digitalschnittstelle, ich würde sowas 
nehmen.
z.B. TAS5717
http://www.ti.com/product/tas5717

von Uli (Gast)


Lesenswert?

Jitter im Signal?
Wie soll ich den das hinbekommen?

Das hier ist ein CORTEX M7 und kein kleiner AVR.

DMA und Timer sollten hier recht sauber laufen, egal was die CPU gerade 
macht.
Auch einem DAC würde ich die Daten über DMA servieren und mit dem Timer 
die passende Clock dazu.
Bei I²S läuft es auch nicht sonderlich anders.

Der interne DAC hat leider nur 12Bit was nicht gerade berauschent ist.


So ich habe aber was gefunden was vom Preis, Platz & Qualität einfach 
kaum zu toppen ist:
MAX98357A - 5V / 3,2W (4Ohm) MONO / I²S / ~1,86€

Bei solchen Teilen lohnt es sich nicht mehr was selber zu machen.

Da gibt es logischerweise auch von anderen Firmen was, jetzt muss ich 
mal die ganzen Datenblätter lesen.

VG, Uli

von avr (Gast)


Lesenswert?

Ich glaube du unterschätzt die Thematik gewaltig.

Uli schrieb:
> Jitter im Signal?
> Wie soll ich den das hinbekommen?

Davon hat keiner geschrieben. Aber Jitter macht tatsächlich was aus, 
wenn es in den 2-3-stelligen Pikosekundenbereich kommt.

> Das hier ist ein CORTEX M7 und kein kleiner AVR.

Das hat auch nichts mit dem Jitter zu tun. Der Jitter dürfte beim M7 
sogar größer sein dank PLL.

> DMA und Timer sollten hier recht sauber laufen, egal was die CPU gerade
> macht.

Der Jitter ist direkt auf der Taktleitung.

> Auch einem DAC würde ich die Daten über DMA servieren und mit dem Timer
> die passende Clock dazu.
> Bei I²S läuft es auch nicht sonderlich anders.

Ja und da die PLL üblicherweise ausreicht, ist Jitter auch hier nicht 
das Thema.

> Der interne DAC hat leider nur 12Bit was nicht gerade berauschent ist.

Mit PWM wirst du auch mit 200MHz keine echte 12Bit bei 48kHz erreichen. 
Mit dem DAC mittels Oversampling schon eher.

> So ich habe aber was gefunden was vom Preis, Platz & Qualität einfach
> kaum zu toppen ist:
> MAX98357A - 5V / 3,2W (4Ohm) MONO / I²S / ~1,86€

Eine integrierte Lösung wird auch das beste sein.

von Uli (Gast)


Lesenswert?

Bei Deinen Ünerlegungen gehst Du aber davon aus die interne 
Takterzeugung mist macht. Ich habe die noch nie nachgemessen, aber wenn 
Du da recht hast, dann wird sich das zwangsläufig auswirken und gegen 
unbrauchbar gehen.

Ich kannte diese fertigen I²S-> Class D Teile nicht und hatte 
dem­ent­spre­chend auch nie danach gesucht.

Wie schon gesagt gegen diese fertig Teile kommt man kaum gegen an und da 
jetzt was selber machen wäre blödsinn. Ausser man hat die Zeit und den 
Ergeiz das zu versuchen, ich nutze meine Zeit lieber mit sinnvolleren 
Sachen.

VG, Uli

von avr (Gast)


Lesenswert?

Uli schrieb:
> Bei Deinen Ünerlegungen gehst Du aber davon aus die interne
> Takterzeugung mist macht. Ich habe die noch nie nachgemessen, aber wenn
> Du da recht hast, dann wird sich das zwangsläufig auswirken und gegen
> unbrauchbar gehen.

Eine PLL hat prinzipbedingt einen Jitter. Der wird von ST auch 
spezifiziert. Siehe Datenblatt.

von Klaus R. (klara)


Lesenswert?

Uli schrieb:
> So ich habe aber was gefunden was vom Preis, Platz & Qualität einfach
> kaum zu toppen ist:
> MAX98357A - 5V / 3,2W (4Ohm) MONO / I²S / ~1,86€
>
> Bei solchen Teilen lohnt es sich nicht mehr was selber zu machen.

Viel Spaß beim Löten!
mfg Klaus

von Uli (Gast)


Lesenswert?

Über das Löten mache ich mir keine sorgen, solange ich keinen BGA nehme.
Die anderen Formate kriege ich mit einem Ofen noch hin.

Der Jitter der PLL ist aber jetzt nicht SOOOOO tragisch.
Für meine Anwendung würde man das nicht merken, ich gebe die Signale 
nicht auf eine Stereoanlage bei der man so was schon eher hören könnte.

Bauteile werden gerade ins Layout eingebaut und Muster sind schon 
bestellt.

VG, Uli

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
Noch kein Account? Hier anmelden.