Schaltung der AD-Wandler der Skala mit Adressmultiplexer:

Es sollen Funktionen erstellt werden die es erlauben, in Abhängigkeit von dem Skalenwert den jeweils zugeordneten ADC-Kanal auszulesen.

Da ein einzelner der acht ADC's 7828 zunächst über seine jeweilige I2C-Adresse (0x90, 0x92, 0x94, 0x96) und sein Bussegment (über den Busmultiplexer PCA9540B mit 0 bzw. 1) angesprochen wird, muss hinzukommen noch die Kanalauswahl (0 - 7) am angesprochenen Baustein. Dies geschieht über ein Kommandobyte, welches  in den jeweiligen ADC vor dem Lesevorgang geschrieben wird und von dem die Bits 3,4, 5 und 6 für die Kanalauswahl vorgesehen sind. Mit dem Übersenden des Kommandobytes wird zugleich der Wandlervorgang des ADC gestartet, d.h. das Lesen des am Kanal anliegenden Spannungswertes. Drei Kriterien sind also zu beachten, das

  • Bussegment,  die
  • I2C-Adresse und der 
  • ADC-Kanal

eines Bausteins.

 

Die AD-Wandler ADS7828 werden über den I2C-Bus angesprochen. Der I2C-Bus wird unter Linux wie eine Datei behandelt: Datei öffnen, Datei lesen oder schreiben, Datei schließen, every thing is a file.

  • fd = open(filename, O_RDWR);
  • ioctl(fd, I2C_SLAVE, i2c_addr);
  • read(fd,buf,2);
  • write(fd,buf,3);

fd enthält eine eindeutige Zahl, über die die Datei angesprochen werden kann (der sog. Filediskriptor), O_RDWR ist eine Konstante, welche das Lesen und Schreiben erlaubt, buf ist ein Array, in das beim Lesen die Daten geschrieben werden bzw. aus dem beim Schreiben die Daten geholt werden, wobei die danach folgende Zahl die Pufferlänge, d.h. die Anzahl der im Array befindlichen Elemente, angibt.

Zu Auswahl von einem der acht des ADC-Kanäle wird der ADS7828 über einen I2C-Schreibbefehl konfiguriert. Zudem wird der Schaltungsmodus (Single-Ended oder Differential-Input) und der Power Down Modus mit Referenzauswahl eingestellt. Die Bits 0 und 1 sind unbenutzt. Für acht Kanäle sind also acht Konfigurationsbytes zu erstellen, welche in einer Liste DAT[i] vorgehalten und über die Channel-Select-Variable i ausgwählt werden.

Die AD-Wandler werden im Single-Ended-Modus betrieben, es wird die interne Referenzspannung verwendet und der Power-Down-Modus ist abgeschaltet.

Die Zuordnung von Kanal und Konfigurationsbyte findet man in rechten Spalte dieser Seite.

 

Die Bussegment-Auswahl erfolgt über die Funktion

  adc_group_select(n);

mit n (0,1) für die beiden ADC Vierergruppen.

Die Codierung dieser Funktion ist relativ einfach. Es wird ihr zunächst der Parameter 0 oder 1 für die Gruppenauswahl übergeben. Damit wird dann der Adressmultiplexer PCA9540B mit der Adresse 0xE0 über den I2C-Bus beschrieben.

 

ADS7828 Adress - Byte

 

ADS7828 Command - Byte

ADS7828 Kanal- und Kommandobyte- Zuordnung

  • ch = 0 : c_byte = 0x8C
  • ch = 1 : c_byte = 0xCC
  • ch = 2 : c_byte = 0x9C
  • ch = 3 : c_byte = 0xDC
  • ch = 4 : c_byte = 0xAC
  • ch = 5 : c_byte = 0xEC
  • ch = 6 : c_byte = 0xBC
  • ch = 7 : c_byte = 0xFC