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
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"?
ein Audiosignal ein Lautsprecher != Stereo Naja, Sinus als Stereo klingt sicher interessant.. :-)
Oder um per Spannungsteiler die Auflösung zu erhöhen?
>> 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
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
> 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
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/message?board.id=8BITCOMM&thread.id=14767 (letzte Nachricht auf der Seite). Ich finde mit PWM klingt es gar nicht so schlecht. Für mich reicht es jedenfalls. Gruß,
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
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.