atmega16 und DA-Wandler MCP4921

Gast #3556311
Lesenswert?

Hallo Freunde,

ich möchte einen MCP4921 12Bit DA-Wandler per ATmega16 via SPI 
ansteuern. Das gelingt mir mittlerweile auch schon recht gut, ich kann 
dem DA-Wandler sagen was er machen soll, und er tut ungefähr das... aber 
eben nur ungefähr.

Zum Testen möchte ich ganz einfach die Variable
1
value.Short

in der Funktion  update() übertragen. Bei 12 bit sollte ich somit bei 
einem Wert von 4096 die Referenzspannung am Ausgang messen (4.09V). 
Leider stimmen diese Werte bei mir überhaupt nicht.

Bei einem Wert von value.Short von 300 messe ich 0.443V, bei 600 1.202V 
und wenn ich value.Short auf 2000 setze,  messe ich sogar 4.98V.

Ich übertrage die beiden Bytes (12 Bit Daten, und 4Bit overhead) ganz 
einfach nacheinander.

Kann bitte jemand schnell den Code anschauen und mir sagen wo der Fehler 
liegt? Vielleicht liegt es trotzdem an der Art wie ich die Bytes 
übertrage, aber ich kann den Fehler beim besten Willen nicht finden.

Denkt ihr es kann an der Beschaltung liegen. Im Moment ist der Ausgang 
des DA-Wandlers einfach offen.

Vielen Dank für die Hilfe

Hoanz
Angehängte Dateien:
#3556368
Lesenswert?

@ hoanz (Gast)

>in der Funktion  update() übertragen. Bei 12 bit sollte ich somit bei
>einem Wert von 4096 die Referenzspannung am Ausgang messen (4.09V).

Nein. Der größte Wert eines 12 Bit Wandlers ist 4095 und knapp unter 
Vref.

AD-Wandler

http://www.mikrocontroller.net/articles/Quantisierung

>Bei einem Wert von value.Short von 300 messe ich 0.443V, bei 600 1.202V
>und wenn ich value.Short auf 2000 setze,  messe ich sogar 4.98V.

>Denkt ihr es kann an der Beschaltung liegen. Im Moment ist der Ausgang
>des DA-Wandlers einfach offen.

Ist OK.

Im Prinzip sollte dein programm funktionieren, wenn gleich die Funktion 
noch etwas sehr gebastelt ist. Du musst aber den gainx1 Modus noch 
einschalten, sonst geht es nicht. DU kannst keine Spannung > VCC 
erzeugen. Also noch ein

value.Short |= 0x2000;  // GAIN x1

ergänzen.

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren