ATMEGA32 und TC1320 DAC funktioniert nicht

OP #7653575

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?

Angehängte Dateien:
OP

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.

$$V_{Out}=V_{ref}*\frac{Data}{256}$$

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

Moderator (Firma: Titel) Persönliche Seite

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?

Angehängte Dateien:
OP

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.

Antwort schreiben

Eine eigene Frage? Dieser Thread ist über 2 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.