Hallo Ich hätte da mal noch eine Frage zur DA Wandlung. Mein µC misst ein NF-Signal (40Hz - 4kHz) mit der Abtastrate um die 33kHz. Wenn ich dieses Signal wieder über einen 8-bit R2R DA-Wandler und einen Koppelkondensator an einen Lautsprecher ausgebe, ist außer einem Rauschen nichts weiter zu hören. Erst ab einer Abtastrate von >400kHz lässt sich einigermaßen das NF-Signal wider erahnen. Der DAC ist aus 1,215 kOhm und 2,43 kOhm Widerständen aufgebaut. Was müsste ich an der Hardware noch ändern, damit die Qualität am DAC besser wird? Danke schon mal.
Schaltplan: PORTC----->DAC----| |-------| /| C |/ | | | |\ | | \| ----- Der Pegel ist hoch genug. Da treten keine Verluste auf. Ab 800kHz ist die Qualität ausreichend.
versuche mal in software ein dreiecksignal zu generieren (simpler algorithmus), und dieses auszugeben damit kannst du erstmal deine ausgabeschaltung testen noch ein gedanke: ist dein A/D signal zu klein, werden von deinem DAC nur ein paar Bits benutzt - das wird dann erst bei höherer samplerate "Ohrentauglich"
Das Analoge Signal ist hoch genug (Das habe ich über 8 LEDs am PORT gesehen) Ein Dreiecksignal ist auch von guter Qualität. Daran liegt es nicht.
Das Dreiecksignal hatte bei 33kHz eine Frequenz von 129Hz. Könnte es vielleicht sein, dass bei Signalen höherer Frequenz der DAC nach jeder Wandlung mehrere Stufen "springt" und dadurch die Qualität sinkt? Dreieck: - | - | - | NF: | - | | | | -
hörte sich das dreiecksignal mit angeschlossenem lautsprecher klar an ? wenn nicht, probiere mal nach deinem r2r netzwerk einen impedanzwandler (z.B. mit Operationsverstärker) einzusetzen habe mit r2r noch nie was gemacht, aber eventuell sorgt der lautsprecher als niederohmige last dafür, daß das r2r müll produziert
noch ein frage: welche mikrocontroller setzt du ein, dessen A/D 400 ksamples bringt ? msp430 ? arm7 ?
vielleicht erübrigt sich meine frage, wenn ich mir so dein schaltbild anschaue... ...PORTC hört sich arg nach ATMEGA an, aber deren A/Ds sind bei 10 Bit Genauigkeit auf ca. 15.000 Samples/s beschränkt. Wir sollten erstmal klären, wie Du es schaffst mit denen 400.000 samples zu erreichen :-)
Der AD-Wandler beim ATmega16 braucht nach dem Datenblatt 13 Takte zum messen. Bei geeignet hoher Taktfrequenz kann man da schon was erreichen. Dass der ADC auf 15000 Messungen beschränkt ist habe ich noch nicht gehört und auch im Datenblatt nicht gelesen. Ich benutze bei der ADC halt nur die 8 höhstwertigen Bits. Das Dreiecksignal ist übrigens klar und deutlich zu hören. Da ist kein rauschen oder knacken.
Übrigens, die Last dürfte meines Wissens nach für den R2R-DAC uninteressant sein. Die Spannung am Lastwiderstand müsste dem Signal am PORT proportional sein.
ich sagte nicht, daß er nicht mehr schafft - tatsache ist jedoch, daß mit zunehmender sample-frequenz der S&H nicht mehr hinterher kommt, und du so drastisch an genauigkeit verlierst bei 400 ksamples dürfte die genauigkeit grottenschlecht sein wie dem auch sei... in deinem fall würde ich jetzt einfach mal ein oszi ranhängen und den fehler so aufspüren - das dürfte am effektivsten sein > Übrigens, die Last dürfte meines Wissens nach für > den R2R-DAC uninteressant sein überprüfe das lieber nochmal: auch wenn ich keine r2r-leiter je benutzt habe, bin ich mir sicher, fast immer einen OpAMP vor einer Last gesehen zu haben und wenn ich mir mal kurz eine r2r-leiter anschaue, festigt sich dieser glaube :-)
Ich hab noch mal im Datenblatt nachgesehen. Da steht doch was von 15kHz. Ich hab bis jetzt eigentlich nur einzelne Wandlungen verwendet, nicht den frei laufenden Modus. Im AVR Studio hat das auch nur 13 Takte gedauert. Auch mein µC hat da nicht gemeckert. Auf die Qualität des Signals hat sich das nämlich nicht ausgewirkt, wenn ich sehr schnell gemessen habe.
> ...bin ich mir sicher, fast immer einen OpAMP vor einer Last gesehen > zu haben je kleiner der Lastwiderstand wird, desto kleiner wird auch der Spannungsabfall an der Last. Da hast du vollkommen recht, deshalb auch der OPV. Für einen Kopfhörerlautsprecher (32 Ohm) reicht mein DAC jedenfalls vollkommen aus. Das ist da laut genug.
> bei 400 ksamples dürfte die genauigkeit grottenschlecht sein
Ich möchte nicht bestreiten dass die Qualität der ADC sinkt. Jedenfalls
ist die Qualität des Signals bei 400ksamples nach der DAC deutlich
besser als bei 40ksamples (da ist überhaupt nichts mehr).
Da ich mit dem Signal noch was machen will komme ich mit meinen 16MHz
Quarz über 33kHz Abtastrate nicht hinaus. Bei der Abtastrate ist aber
nichts mehr vom ursprünglichen analogen Signal zu erkennen.
Bei geeignet hoher Abtastrate (600kHz) war ich sehr zufrieden. Da hat
der R2R-DAC vollkommen ausgereicht. Nur bleiben mir da für jede Messung
nur 24 Takte übrig, das ist schon ein bisschen knapp.
Jedenfalls funktioniert der R2R-DAC bei niedrigen Frequenzen nicht mehr.
> Jedenfalls funktioniert der R2R-DAC bei niedrigen Frequenzen nicht mehr.
Ok... machen wirs mal kurz..
Da wir uns nun einig sind, daß der R2R eine auch von der Last abhängige
Spannung erzeugt und dir hoffentlich klar ist, daß ein Lautsprecher eine
dynamische Last ist, solltest Du nun tunlichst einen OpAmp einfügen.
Dann noch eine ordentliche Filterung damit das Abtasttheorem erfüllt ist
(steile Filter am Ein- und Ausgang mit einer Grenzfrequenz unterhalb
fsample/2).
Anschließend sollte das Ergebnis auch mit 20 ksample/s brauchbar sein.
(brauchbar natürlich eher im Gegensatz zu: klangtechnisch überzeugend)
Viel Erfolg !
@daniel:
>Ich benutze bei der ADC halt nur die 8 höhstwertigen Bits.
Wie hast du das realisiert? Das kannst du über den Teiler des ADC-Taktes
realisieren. Falls du das so gemacht hast und nur das ADCL-Register
auswertest ist es klar dass bei niedrigeren Abtastraten nix gescheites
'rauskommt, da der ADC alle 10 bit benutzt.
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.