Forum: Mikrocontroller und Digitale Elektronik ATMEGA32 und TC1320 DAC funktioniert nicht


von Calc-SiC (calc-sic)


Angehängte Dateien:

Lesenswert?

Hallo zusammen,

ich hoffe auf die Schwarmintelligenz des Forums hier.
Ich benutze einen ATMEGA32 als µC, der über einen 8-Bit TC1320E0A DAC 
Spannungen zwischen 0 und 5V ausgeben soll (Schaltung im Bild). Dafür 
benutze I2C Signale mit jeweils einem 2,2kOhm Pull-Up Widerstand.

Nun mein Problem:
Egal, was ich versuche, der DAC nähert sich viel zu schnell V_Ref an. 
Sogar wenn ich mich mitten im Datenbereich befinde (Bsp. Data=0x80) gibt 
er mir ca. 4,7V aus. Bei Data=0 gibt er immerhin 0V aus.

Ich benutze die Fleury I2C lib mit "twimaster.c" und nutze sie 
folgendermaßen im Code.
1
//++DAC Test++
2
uint8_t addr;
3
addr= 0x48;                             //0b01001000
4
5
i2c_start_wait((addr<<1)+I2C_WRITE);    // Adressierung des DAC nach Datasheet (1001 000b)
6
//i2c_start_wait(0x90);                 // 0b10010000 Adressierung funktioniert auch nicht
7
i2c_write(0x00);                        // Command Byte nach Datasheet
8
i2c_write(0x80);                        // Output am DAC = 2.5V 
9
i2c_stop();
F_CPU habe ich auch schon al 8MHz definiert und am µC eingestellt, 
nachdem ich dort das Problem vermutet hatte. Aber auch das hat mich der 
Lösung nicht näher gebracht. Hat irgendwer hier aus dem Forum noch 
Ideen, wo das Problem liegen könnte?

von Alex R. (geneo)


Lesenswert?

Moin,

hast du mal kontrolliert, welche Spannung VRef hat?

Hast du mal die Daten, die du hin schickst, zurückgelesen, um 
sicherzugehen, dass das passt?

von Thomas Z. (usbman)


Lesenswert?

Du wertest das ACK /NAK Bit nicht aus. Ich bin mir sicher dass das in 
der Lib drin ist.

von Calc-SiC (calc-sic)


Lesenswert?

Hi,

V_ref und V_DD habe ich kontrolliert und beide sind bei ziemlich genau 
5V (+/- 0.02V).

Daten eingeben, funktioniert, soweit ich das mit Eingeben & Auslesen per 
Nak mit einer LED-Anzeige einschätzen kann.

Wie soll ich ACK/NACK auswerten? Das passiert doch im start Befehl?

Gerade habe ich festgestellt, dass der DAC für niedrige Werte jedes Bit 
in ca. 0,34V umwandelt anstatt in ca. 0,2V, wie er es nach Datenblatt 
sollte.

Also seine "Auflösung" ist zu ungenau und er erreicht zu früh eine hohe 
Ausgangsspannung. Aber woran liegt das?

von Lothar M. (Firma: Titel) (lkmiller) (Moderator) Benutzerseite


Angehängte Dateien:

Lesenswert?

Calc-SiC schrieb:
> Aber woran liegt das?
Du hast z.B. das hier nicht beachtet:
1
VREF Voltage Reference Range 0  .... VDD–1.2 V

Wenn deine Vcc 5V ist, wie hoch darf dann die Vref höchstens sein?

> dass der DAC für niedrige Werte jedes Bit in ca. 0,34V umwandelt
> anstatt in ca. 0,2V, wie er es nach Datenblatt sollte.
Bist du da um ein paar Zehnerpotenzen verrutscht?

: Bearbeitet durch Moderator
von Calc-SiC (calc-sic)


Lesenswert?

Lothar M. schrieb:
> Du hast z.B. das hier nicht beachtet:
>
1
> VREF Voltage Reference Range 0  .... VDD–1.2 V
2
>
Ach... Einmal das Datenblatt gründlich lesen. Das erklärt natürlich, 
warum der DAC nicht so funktioniert, wie gewünscht.


>> dass der DAC für niedrige Werte jedes Bit in ca. 0,34V umwandelt
>> anstatt in ca. 0,2V, wie er es nach Datenblatt sollte.
> Bist du da um ein paar Zehnerpotenzen verrutscht?
Ja 0,02V sollte das natürlich heißen. Danke für eure Hilfe! Dann hab ich 
jetzt einen Punkt, von dem ich weitermachen kann.

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.