www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Wie Audiosignal am besten ausgeben: PWM oder (Audio-)DAC?


Autor: Ralf (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi,

ich möchte ein Audiosignal auf einen Lautsprecher ausgeben, und 
zusätzlich auf einen Audioeingang geben können (z.B. Soundkarte), daher 
sollte das Signal sinusförmig sein. Das Audiosignal wird für die ersten 
Versuche nur jeweils eine Frequenz haben, also keine Sprache/Musik o.ä. 
Oberes Ende werden wahrscheinlich 10kHz sein, mehr kann man eh nicht 
mehr so richtig als angenehm empfinden (denke ich mal :))
Das Audiosignal wird von einem µC gesteuert.

Jetzt mache ich mir gerade Gedanken, wie ich die Ausgabe am besten lösen 
kann. Der µC meiner Wahl hat I2C/SPI/UART als Schnittstellen zur 
Verfügung, sowie ein 6-Kanal PCA zur PWM Generierung (8/16-Bit), aber 
leider keinen DAC.
Nach derzeitigem Kenntnisstand habe ich also drei Möglichkeiten zur 
Auswahl:

1. 2x PWM mit nachgeschaltetem Filter (Tiefpass?) und OP
2. normaler 2-Kanal DAC über I²C/SPI
3. Audio-DAC mit I²S-Schnittstelle -> UDA1330 (NxP)

Da ich mich in Audio (noch) nicht so gut auskenne, bin ich jetzt etwas 
unsicher :(

Nr.1 ist vielleicht relativ einfach zu realisieren, aber qualitativ 
vielleicht nicht grad das Optimum, was rauschen/Verzerrungen oder so 
angeht (vermute ich mal). Wenn man das qualitativ etwas höher ansiedeln 
will, brauchts wahrscheinlich doch schon ordentliche Filter.

Nr.2 gefällt mir da schon besser, weil da zumindest schon mal die Hürde 
der Signalgenerierung an den DAC ausgelagert wird, der das 
wahrscheinlich besser hinbekommt als eine bloße PWM mit Filter.

Nr.3 wäre sogar mein Favorit, da der entsprechende DAC auch schon 
diverse Filter enthält, eine Lautstärkeregelung implementiert hat und 
nur wenig "drumrum" braucht. Allerdings bin ich da auch am unsichersten, 
was die Machbarkeit betrifft, denn ich bin noch nicht dahintergekommen, 
ob die I²S-Schnittstelle einwandfrei mit einer SPI-Schnittstelle 
verknubbelt werden. Ich bin grad am Lesen der I²S-Spezifikation, und 
kann nichts gegenteiliges entdecken. Falls das tatsächlich so ist, muss 
ich nur noch rausfinden, wie ich denn meine Wunschfrequenzen mit dem 
Teil generiere. Ich such grad Google nach Beispielcode ab. Falls jemand 
schon mit dem UDA1330 gearbeitet hat und mir seine Erfahrungen mitteilen 
kann, wär das klasse.

Generell wäre noch die Frage, ob ich etwas bestimmtes bezüglich der 
Ausgangsstufen beachten muss. Da ich wie bereits erwähnt auch mal eine 
Soundkarte o.ä. füttern möchte, frag ich mich grad, ob ich das Signal in 
der Amplitude (= Lautstärke) begrenzen muss. Ich meine mal irgendwo 
gelesen zu haben, dass 1V Spitze-Spitze ein Richtwert ist. Da ich das 
ganze System mit 3.3V betreibe, würde das zu den Angaben vom UDA1330 
passen -> Output voltage (rms value) = 1V. Da frage ich mich eher, ob 
das Teil einigermaßen für einen normalen Lautsprecher geeignet ist, da 
die Angabe der Ausgangsimpedanz (2 Ohm) wohl eher auf Kopfhörer passt.

Ich hoffe, mir kann jemand Klarheit verschaffen.

Ralf

Autor: schoen (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
naja, es kommt schon sehr darauf an, was es für ein Audiosignal sein 
soll. versuch es zuerst mit PWM (ist am wenigsten Aufwand), wenn es Dir 
nicht genügt, dann die anderen Varianten.

Was soll es denn mal werden? Und warum "2xPWM"?

Autor: Magnetus (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
> Und warum "2xPWM"?

Weil Stereo?

Autor: schoen (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
ein Audiosignal ein Lautsprecher != Stereo

Naja, Sinus als Stereo klingt sicher interessant.. :-)

Autor: Gast (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Oder um per Spannungsteiler die Auflösung zu erhöhen?

Autor: Ralf (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
>> Und warum "2xPWM"?
> Weil Stereo?
Frage: berechtigt :)
Antwort: korrekt, wenn auch beide Kanäle identisch sind. Zweimal 
deswegen, um Lautsprecher und Ausgang zur Soundkarte o.ä. getrennt 
halten zu können. Es versetzt mich in die Lage, den Lautsprecher 
abschalten zu können, falls das nötig ist.

> Was soll es denn mal werden?
Der Audio-Teil eines Theremins, welches wiederum ein Geschenk für den 
Kollegen vom Stammtisch werden soll, der ist Musiker :)

> Naja, Sinus als Stereo klingt sicher interessant.. :-)
grins Man könnte ja um 180° phasenverschoben ausgeben... Sicherlich 
noch interessanter, wenn ich zwei Lautsprecher anschließe und sie 
gegenüber bzw. gegeneinander platziere... Was hört man dann? Nix, oder? 
Bzw. es hebt sich zum größten Teil auf, denke ich...

Ralf

Autor: avr (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo Ralf,

die Signalausgabe ist hier schon oft behandelt worden,
Stichwort: DDS

Eine Ausgabe mit PWM ist eigentlich machbar, aber die
PWM sollte ausreichend hoch sein, z.B. mit FastPWM vom
AVR Tiny25 mit PLL-Basis.

Einfache Rechnung: Signal 10 kHz mit "nur" 10 Stufen -> 100 kHz

Es sollten schon einige Perioden der PWM in die
Ausgabestufe passen. Bei 500 kHz sind es auch schon nur
noch 5 Stück.

Besser wenn Pins frei DA-Wandler auf R2R-Basis.

Gibt es auch mit 2 oder 4 Ausgängen und in unterschiedlichen
Auflösungen (wobei hier 8 Bit reichen) z.B. von TI.

avr

Autor: Ralf (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
> Einfache Rechnung: Signal 10 kHz mit "nur" 10 Stufen -> 100 kHz
Moment, langsam, zum mitschreiben...
Zehn Stufen heisst, zehn Spannungspegel, um daraus die Sinuswelle zu 
generieren? Hm, bisschen wenig. Ich hab grad mal die PWM-Frequenzen 
ausgerechnet, die ich erreichen könnte, bei 16-Bit sind's ungefähr 
popelige 375Hz, bei 8-Bit etwas um die 95kHz, das wäre schon besser, das 
es ja 256 Werte sind. Und der Controller unterstützt auch 9, 10 und 11 
Bit PWM.
Okay, das wäre also schon mal ein Anfang.

Ich werde mal entsprechend Info suchen. An der I²S-Sache wär ich aber 
interessehalber trotzdem... interessiert :)

Ralf

Autor: Oliver R. (superberti)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi,

ich habe neulich mit einem Freescale MC9S08QG8 per PWM 8 Bit sounds 
erstellt. Ich habe das dann mal aufgenommen:

http://forums.freescale.com/freescale/board/messag...

(letzte Nachricht auf der Seite).

Ich finde mit PWM klingt es gar nicht so schlecht. Für mich reicht es 
jedenfalls.

Gruß,

Autor: Ralf (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi Oliver,

danke. Ich hab mittlerweile rausgefunden, dass bei einigen Theremins 
offenbar nicht nur reine Einzelsinustöne ausgegeben werden, sondern wohl 
überlagerte Frequenzen, was sich wohl gleich nochmal besser anhört. Muss 
mal schauen, ob ich rausfinde, was genau da rausgepustet wird...

Ralf

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.