AD5593R Probleme

Hallo zusammen,

Ich bin im Moment und meine Projektarbeit und hänge gerade bei der Einbindung des DACs AD5593R. Ich bekomme diese einfach nicht zum laufen, da ich mit der Bibliothek auch nicht ganz zurecht kommen.

Datenblatt DAC:
https://www.analog.com/media/en/technical-documentation/data-sheets/AD5593R.pdf
Bibliothek:

Ich möchte folgendes tun:

Ich möchte mit dem Arduino due (ATSAM3X8E) den 8channel ADAC über den I2C steuern. Dieser soll mir 2 Analogsignale (0-5V) ausgeben und damit jeweils eine Regelelektronik ansteuern, die wiederum jeweils ein Proportionalventil steuert. Damit möchte ich zwei Gasströme regeln, diese werden durch ein Referenzgerät referenziert.
(Ich hoffe das reicht als Info)

Ich habe folgendes versucht:

  • Kopieren des Beispielcodes
  • Kopieren einzelner Teile Bibliotheken
  • Einzelne voids kopiert
  • Das Kommunikationsprotokoll selbst zu programmieren

Leider alles ohne Erfolg.

Eine Verbindung zum ADAC besteht, dieser wird durch den I2C-Scanner auf die Adresse 0x10 gefunden.
SDA und SCL sind durch Pull-Up Wiederstände (10k) auf + 5V gegeben. Am selben Kreis angeschlossen sind der Arduino, der ADAC und Vref vom ADAC.

Im Anhang findet ihr mein kläglicher Versuch die Kommunikation selbstständig herzustellen

Seht mir bitte nach, dass ich mir das Programmieren selbst "beibringen" muss und noch in den Kinderschuhen stecke.
Würde vorallem das Problem sehr gerne verstehen.

Ich würde mich sehr über Hilfe freuen.

Vielen Dank!

ADC_I2C_communication.ino (1.58 KB)

Hast Du ein Modul gekauft oder den Chip selbst angeschlossen?
Kannst Du Deinen Code in CodeTags </> direkt einbinden?

Das Modul ist fertig gekauft.

ich hoffe du meinst es so:

#include <Wire.h>

int dacAdress = 0x10;


void setup() {

Serial.begin(9600);
Wire.begin();

}

void loop() {

// Frame 1 Slave Adress + Write
Wire.beginTransmission(dacAdress);
Wire.write(0);  
Wire.write(0);  
Wire.write(1);  
Wire.write(0);  
Wire.write(0);  
Wire.write(0);  
Wire.write(0);  
Wire.write(0);  // 0 = Write
Wire.endTransmission();



//Frame 2 POINTER BYTE -> || DAC pin configuration || (Table 11) [Default Value 0x00FF]
Wire.beginTransmission(dacAdress);
Wire.write(1);  // [D0]
Wire.write(0);  // [D1]
Wire.write(1);  // [D2]
Wire.write(0);  // [D3]
Wire.write(1);  // [D4]
Wire.write(0);  // [D5]
Wire.write(0);  // [D6]
Wire.write(0);  // [D7]
Wire.endTransmission();


// Frame 1 Slave Adress + Read
Wire.beginTransmission(dacAdress);
Wire.write(0);  
Wire.write(0);  
Wire.write(1);  
Wire.write(0);  
Wire.write(0);  
Wire.write(0);  
Wire.write(0);  
Wire.write(1);  // 1 = Read
Wire.endTransmission();


// DAC Adress + 4 MSB´s  || Value = 110011001100 == 3276 von 4095 == 4V)
Wire.beginTransmission(dacAdress);
Wire.write(0);  // [D8]
Wire.write(0);  // [D9]
Wire.write(1);  // [D10]
Wire.write(1);  // [D11]
Wire.write(0);  // [D12]
Wire.write(1);  // [D13]
Wire.write(0);  // [D14]
Wire.write(1);  // [D15]
Wire.endTransmission();

// DAC LSB´s
Wire.beginTransmission(dacAdress);
Wire.write(0);  // [D0]
Wire.write(0);  // [D1]
Wire.write(1);  // [D2]
Wire.write(1);  // [D3]
Wire.write(0);  // [D4]
Wire.write(0);  // [D5]
Wire.write(1);  // [D6]
Wire.write(1);  // [D7]
Wire.endTransmission();

}

Hallo
ich habe mal schnell in das weltweite Netz geschaut und habe festgestellt, dass das AD-Modul anscheinend ein "Exot" ist.
Bis Du auf die Vorgabe der Hardware eingeschränkt?

Hallo,

Eine Vorgabe der Hardware habe ich nicht, ich wollte nur mindestens eine 12 bit auflösung.

Hallo,
dann nehme eine Suchmaschine deiner Wahl und beschäftige diese mit arduino +12 bit AD/DC.

Eine schnelle Marktanalyse kann Dir zeigen ob es arduinokompatible AD/DCs gibt, die Deine Anforderungen erfüllen.

Hallo,

dann werde ich mich nach einem anderen Modul umsehen.
Ich hätte zwar gern aus lerngründen das Modul zum laufen gebracht, aber wichtig ist erstmal das ich weiterkomme!

Daher vielen Dank für die schnelle Hilfe! :slight_smile:

3,3V werden wohl nicht für die Folgeelektronik reichen, oder? Dann könntest Du nämlich die 2 DACs nehmen die der DUE hat. Die haben auch 12Bit Auflösung.

Gruß, Jürgen

Ne, kann die nur mit min. 0-5V ansteuern

Der DUE funktioniert mit 3,3V. Da kannst Du keine Pullup auf 5V schalten. Du brauchst einen Levelshifter oder Du läßt den DAC probeweise mit 3,3V laufen.

Es ist zu klähren ob die Verwendete Bibliothek auf dem DUE funktioniert.

Es wäre auch nützlich, daß der TO uns die Fehlermeldungen beim Beispielsketch der Bibliothek gibt.

Grüße Uwe

Ich dachte das wäre möglich, da ich ihn ja mit einem 5V Netzteil betreiben kann.
Aber ich werde das mit den 3,3V Testweise mal versuchen.

Leider bekomme ich keine Fehlermeldungen. Das überspielen funktioniert, aber er geschieht danach nichts.

Evtl. wirklich das Thema, dass die Bibliothek auf dem due nicht läuft? Ich habe im Beispielsceth des des Erstellers gesehen das bei ihm gewisse Funktionen in blauer Schrift waren, bei mir jedoch nicht.
Habe darauf hin gecheckt ob ich alle Bibliotheken eingebunden habe und das war leider auch der Fall.

Leider bekomme ich keine Fehlermeldungen

Klarer Fall!
Du prüfst ja auch nicht ob z.B. Wire.endTransmission(); Erfolg hatte.

This topic was automatically closed 120 days after the last reply. New replies are no longer allowed.