Forum: Mikrocontroller und Digitale Elektronik DAC


DAC
von daniel (Gast)


Lesenswert?

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.

von antworter (Gast)


Lesenswert?

zeig doch mal die schaltung... pegel schonmal nachgemessen ?

von daniel (Gast)


Lesenswert?

Schaltplan:


PORTC----->DAC----| |-------| /|
                   C        |/ |
                            |  |
                            |\ |
                            | \|
                          -----

Der Pegel ist hoch genug. Da treten keine Verluste auf. Ab 800kHz ist 
die Qualität ausreichend.

von antworter (Gast)


Lesenswert?

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"

von daniel (Gast)


Lesenswert?

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.

von daniel (Gast)


Lesenswert?

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:

   |
  -
 |
 |
 |
 |
-

von antworter (Gast)


Lesenswert?

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

von antworter (Gast)


Lesenswert?

noch ein frage: welche mikrocontroller setzt du ein, dessen A/D 400 
ksamples bringt ?

msp430 ? arm7 ?

von antworter (Gast)


Lesenswert?

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 :-)

von daniel (Gast)


Lesenswert?

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.

von daniel (Gast)


Lesenswert?

Ü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.

von antworter (Gast)


Lesenswert?

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 :-)

von daniel (Gast)


Lesenswert?

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.

von daniel (Gast)


Lesenswert?

> ...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.

von daniel (Gast)


Lesenswert?

> 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.

von antworter (Gast)


Lesenswert?

> 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 !

von daniel (Gast)


Lesenswert?

Das werde ich mal probieren. Vielen Dank für deine Hilfe.

von Sonic (Gast)


Lesenswert?

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