Forum: Mikrocontroller und Digitale Elektronik Lausprecher für uC


von Lautsprecher (Gast)


Lesenswert?

Hallo,

würde gerne Wave-Dateien auf meine uC ausgeben. Diese würde ich zunächst 
vom PC via USART an den uC schicken oder streamen und dann "ausgeben".
Nun habe ich mich etwas informiert und gelesen, dass PWM wohl die 
gängigste Methode ist, um Lautsprecher anzusteuern.
Wie genau das nun funktioniert, weiß ich noch nicht, da werde ich mich 
dann genauer informieren, aber das ist momentan noch nicht Thema.
Ich würde gerne zunächst wissen, welche Hardware ich am besten nehme.
Ich möchte zunächst "billigere" Hardware nehmen, bevor ich irgendwas 
zerlege. Die Soundqualität sollte natürlich schon "einigermaßen" sein.

Könnt ihr mir da irgendetwas empfehlen, am besten via. Reichelt.de 
bestellbar?
Brauche ich noch andere Hardware? Ich verwende einen Atmega32.

Nebenbei noch, weil ich keinen neuen Thread für so eine Kleinigkeit 
eröffnen möchte:
Der Atmega32 ist ja soweit ich das mitbekommen habe, das bewährte 
Standardmodell, aber ist es jetzt immernoch Stand der Dinge, oder was 
ist heute der gängigste uC?

Gruß

von Frank K. (fchk)


Lesenswert?

Nimm einen dsPIC33FJ128GP802 (28 Pin DIL oder SO) oder 804 (44 Pin 
TQFP). Der läuft mit 40 MHz und hat einen Stereo Audio DAC eingebaut mit 
differentiellen Ausgängen. Entweder machst Du daraus mit einem OpAmp 
single-ended Ausgänge, oder Du nimmst einen Verstärker mit 
differentiellen Eingängen. Der DAC kann Abtastraten bis zu 100kHz und 
arbeitet mit 16 Bit Samples bei 14 Bit Auflösung. Das sollte auch für 
CD-Qualität reichen.

Du kannst natürlich auch einen anderen dsPIC (es gibt jetzt auch die 
dsPIC33EP mit 70 MHz) oder einen der größeren PIC32 nehmen, die haben 
alle Framed SPI Unterstützung, und daran einen Audio-DAC per I2S oder 
TDM anschließen. Viele dsPICs haben auch ein Digital Codec Interface, 
das genau dafür gedacht ist.

Mit diesen Möglichkeiten kannst Du problemlos eine sehr anständige 
Audioqualität erreichen.

Du vermisst hier AVR? Sorry, der ist für diesen Zweck eine schlechte 
Wahl.

fchk

von Harald A. (embedded)


Lesenswert?

Frank K. schrieb:

> Du vermisst hier AVR? Sorry, der ist für diesen Zweck eine schlechte
> Wahl.
>
> fchk

Bin garantiert nicht unbedingt AVR Fan, aber das ist nicht korrekt:

http://elm-chan.org/works/sd8p/report.html

von Lautsprecher (Gast)


Lesenswert?

Bin gerade mit dem Einstieg mit AVR zurecht gekommen, deshalb würde ich 
da gerne bleiben...

von W.S. (Gast)


Lesenswert?

Lautsprecher schrieb:
> würde gerne Wave-Dateien auf meine uC ausgeben. Diese würde ich zunächst
> vom PC via USART an den uC schicken

Wie soll das klingen? Nehmen wir mal an, du sendest mit 115400 baud, 
dann hast du - 8 Bit Audio vorausgesetzt - so etwa 11 kHz Samplingrate, 
die du über die Serielle drüberkriegst. Bei 16 Bit sind es nur noch 5.5 
kHz.

Schau dich mal um nach dem relativ simplen Kompressionsverfahren, was 
Sierra vor ganz langer Zeit für seine DOS-Spiele benutzt hat.

W.S.

von Frank K. (fchk)


Lesenswert?

Harald A. schrieb:
> Frank K. schrieb:
>
>> Du vermisst hier AVR? Sorry, der ist für diesen Zweck eine schlechte
>> Wahl.
>>
>> fchk
>
> Bin garantiert nicht unbedingt AVR Fan, aber das ist nicht korrekt:
>
> http://elm-chan.org/works/sd8p/report.html

Wobei das da auch eher eine nicht erweiterbare Bastellösung ist und den 
meisten AVRs die für diese Lösung erforderlichen hinreichend schnellen 
PWM-Einheiten fehlen. Ein Mega 32 oder Mega 644p geht dafür also nicht. 
I2S und Framed SPI zum Anschluss eines externen Codecs oder eines 
digitalen Verstärkers wie dem MAX98355 oder dem SANYO/On Semi LV4904V 
haben die AVRs auch nicht, geeignete DACs auch nicht. Daher denke ich, 
dass mein summarisches Urteil gerechtfertigt ist und dass es für diesen 
Zweck geeignetere Controler-Familien gibt, die bessere Peripherie und 
mehr Rechenleistung zum gleichen Preis bieten.

fchk

von Lautsprecher (Gast)


Lesenswert?

W.S. schrieb:
> Wie soll das klingen? Nehmen wir mal an, du sendest mit 115400 baud,
> dann hast du - 8 Bit Audio vorausgesetzt - so etwa 11 kHz Samplingrate,
> die du über die Serielle drüberkriegst. Bei 16 Bit sind es nur noch 5.5
> kHz.
Wie gesagt, das Problem soll später zu lösen sein, mir ist es zunächst 
wichtig, die passende Hardware zu finden, welchem mit dem Atmega32 
kompatibel ist.

von Harald A. (embedded)


Lesenswert?

Interpretiere ich das richtig:
Der externe Aufwand kann beliebig hoch sein, solange in der Mitte ein 
ATMEGA32 bleibt?

von Karl H. (kbuchegg)


Lesenswert?

Lautsprecher schrieb:
> W.S. schrieb:
>> Wie soll das klingen? Nehmen wir mal an, du sendest mit 115400 baud,
>> dann hast du - 8 Bit Audio vorausgesetzt - so etwa 11 kHz Samplingrate,
>> die du über die Serielle drüberkriegst. Bei 16 Bit sind es nur noch 5.5
>> kHz.
> Wie gesagt, das Problem soll später zu lösen sein

Der springende Punkt ist, dass dieses Problem, solange du WAV per USART 
auf den µC überträgst und diese sofort (live) abspielen lässt, nicht 
lösbar ist. Du wirst in diesem Szenario auch später nicht über die 11kHz 
drüber kommen.
Wenn dir das reicht, ist es ok. Aber später lösbar ist es nicht.
Damit ist diese Forderung hier
> Die Soundqualität sollte natürlich schon "einigermaßen" sein.
je nachdem was du unter 'einigermaßen' verstehst, ein echter 
Problemfall. Wenn dein Setup da heute nicht entspricht, dann wird es 
auch in Zukunft nicht entsprechen.

Und zum Zwischenspeichern der WAV auf dem Mega32 fehlt dir der Speicher, 
solange es sich nicht um kurze Samples handelt, die in einer Schleife 
laufend wiederholt werden können.

von Lautsprecher (Gast)


Lesenswert?

Harald A. schrieb:
> Der externe Aufwand kann beliebig hoch sein, solange in der Mitte ein
> ATMEGA32 bleibt?
Kommt darauf an wie hoch beliebig ist, aber im Grunde, ja :)

Karl Heinz Buchegger schrieb:
> Der springende Punkt ist, dass dieses Problem, solange du WAV per USART
> auf den µC überträgst und diese sofort (live) abspielen lässt, nicht
> lösbar ist.
Ist mir klar, hab ich schon verstanden. Zur not muss ich halt noch einen 
Speicherbaustein oder sonstiges einbinden. Dann ist das eben kein 
Stream, sondern "on demand", aber das soll mich erstmal nicht weiter 
stören ;)

von Karl H. (kbuchegg)


Lesenswert?

Da würde ich dann nicht lange umtun und einen 8-Bit R2R DAC an einen 
Port anschliessen. An den Ausgang kommen dann billige PC-Aktivboxen und 
der Quäker-Teil steht erst mal.

von Lautsprecher (Gast)


Lesenswert?

Entschuldigung, dass ich so lange nicht geantwortet habe, hatte keine 
Zeit...

Karl Heinz Buchegger schrieb:
> Da würde ich dann nicht lange umtun und einen 8-Bit R2R DAC an einen
> Port anschliessen. An den Ausgang kommen dann billige PC-Aktivboxen und
> der Quäker-Teil steht erst mal.
Kannst du mir da konkret was empfehlen? Evtl. via Reichelt.de 
bestellbar?

Grüße

von Bernhard S. (b_spitzer)


Lesenswert?

R-2R-DAC mit Einzelwiderständen... einfach eine 100er-Tüte Widerstände 
10k 1% Metallfilm kaufen. Verschaltung hier: 
http://de.wikipedia.org/wiki/R2R-Netzwerk
Dazu noch einen bipolaren Elko mit 10µF, falls die Lautsprecher keinen 
drin haben sollten. Lautsprecher werden seit Jahren ungefragt bei jedem 
neuen PC mitgeliefert. Qualität meist unterirdisch, aber für so ein 
Projekt genau das Richtige zum Anfang. Später darfst Du natürlich auch 
die Infinity Kappa über den Restek-Verstärker dranhängen...
Zum Experimentieren erzeugt man auf dem PC eine WAV-Datei, 8Bit Mono, 
8kHz Samplingrate. Das ist in etwa Telefonqualität. Ab Byte-Offset 0x44 
stehen die Audio-Daten Byteweise. Diese dann einfach im Abstand von 
1/8kHz = 125us auf den Port rausschieben, an dem die Widerstände hängen. 
Viel Spass.
http://de.wikipedia.org/wiki/RIFF_WAVE

von Lautsprecher (Gast)


Lesenswert?

So, nach längerem Internetausfall und anderen Problemen...

An sich hat sich damit alles geklärt, wollte mich nur noch bedanken für 
die gute Hilfe!

Gruß

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.