Aus Raspberry Pi Geek 06/2017

Profi-A/D-Wandler ADC128D818

© Pinkomelet, 123RF

Mehr Präzision

Martin Mohr

Wenn es beim Messen auf hohe Genauigkeit ankommt, brauchen Sie einen A/D-Wandler wie den ADC128D818. Er bringt einige interessante Funktionen mit.

In Teil 9 dieser Reihe haben Sie den A/D-Wandler PCF8591 [1] kennengelernt, der für viele Anwendungen durchaus ausreicht. Geht es aber darum, sehr genaue Messungen vorzunehmen, greifen Sie besser zu einer Alternative wie dem ADC128D818 von Texas Instruments. Mit einer Auflösung von 12 Bit leistet er bei Messaufgaben hervorragende Dienste. Darüber hinaus haben die Entwickler einige Extras verbaut, die den Baustein für RasPi-Bastler besonders interessant machen.

Der ADC128D818 [2] verfügt über acht Kanäle sowie einen eingebauten Temperatursensor und eignet sich für den Betrieb am I2C-Bus. Der Bereich für die Betriebsspannung reicht von 3 bis 5,5 Volt. Intern verfügt der Baustein über 35 – verwirrenderweise nicht linear durchadressierte – Register, die abhängig vom Betriebsmodus unterschiedliche Funktionen aufweisen.

Für Bastler unangenehm ist die Bauform des Gehäuses, TSSOP, die das Löten erschwert. Um den ADC128D818 erst einmal auf einem Breadboard auszuprobieren, benötigen Sie einen Adapter [3], der die Anschlüsse im üblichen Rastermaß bereitstellt. Abbildung 1 zeigt die Pinbelegung des Bausteins.

Abbildung 1: Die Pinbelegung des ADC128D818 in der schematischen Darstellung.

Abbildung 1: Die Pinbelegung des ADC128D818 in der schematischen Darstellung.

Die Hardware stellt zwei Pins bereit, um die I2C-Adresse einzustellen. Als Leser dieser Artikelreihe wissen Sie, dass dies normalerweise vier Adressen ermöglicht. Nicht so beim ADC128D818: Hier besteht die Möglichkeit, die Leitungen nicht nur HIGH und LOW anzulegen, sondern zusätzlich noch MIDDLE, also mit der Hälfte der Betriebsspannung. Mit diesem dritten logischen Zustand lassen sich nicht nur vier Adressen nutzen, sondern neun. Das erklärt, warum wir im Testaufbau an die Pins A0 und A1 je ein Poti anschließen können.

In der Tabelle “ADC128D818: I2C-Adressen” sehen Sie die möglichen Beschaltungen der Leitungen für die Adresse. Das Datenblatt [4] des Bausteins beinhaltet alles, was es noch über diesen Halbleiter zu wissen gibt.

ADC128D818: I<+>2<+>C-Adressen

A1

A0

Adresse

LOW

LOW

0x1D

LOW

MID

0x1E

LOW

HIGH

0x1F

MID

LOW

0x2D

MID

MID

0x2E

MID

HIGH

0x2F

HIGH

LOW

0x35

HIGH

MID

0x36

HIGH

HIGH

0x37

Register im Detail

Wie eingangs schon erwähnt, hat der ADC128D818 eine Menge Register, was es erlaubt, ihn flexibel an unterschiedliche Anwendungsfälle anzupassen. Die Tabelle “ADC128D818: Interne Register” vermittelt einen Überblick über die vorhandenen Register und deren Funktionen.

Der ADC128D818 verfügt über komplexe Möglichkeiten zum Verarbeiten der Interrupts und arbeitet bei Bedarf in unterschiedlichen Modi. Neben dem bereits erwähnten internen Temperatursensor steht ein mehrstufiger Energiesparmodus bereit.

ADC128D818: Interne Register

Register

Funktion

Anmerkung

0x00h

Steuerregister

Bit 0 LOW: Baustein im Energiesparmodus, Bit 0. HIGH: Baustein misst kontinuierlich. Bit 1 und Bit 3: Interrupt-Verarbeitung. Bit 7 HIGH: Register mit Vorgabewerten laden.

0x01h

Interrupt-Register

Zeigt das Erreichen der Schwellwerte für jeden Kanal einzeln an.

0x03h

Interrupt-Steuerregister

(De-)Aktivieren der Interrupt-Ausgabe auf den Pin 6. (INT) pro Kanal.

0x07h

Wandelmodus

Bit 0 schaltet zwischen Energiesparmodus und kontinuierlichem Messen um.

0x08h

Steuerregister-Eingangskanäle

Eingangskanäle einzeln deaktivieren.

0x09h

Steuerregister-Einzelmessung

Sobald Sie das Bit 1 auf HIGH setzen, misst der Baustein. Danach wechselt er wieder in den Energiesparmodus.

0x0Ah

Energiesparmodus

Sobald Bit 0 auf HIGH steht, wechselt der ADC128D818 in den Tiefschlafmodus.

0x0Bh

Erweiterte Einstellungen

Mit Bit 0 wählen Sie zwischen interner und externer Referenzspannung. Dabei definiert LOW die interne Referenz. Mit den Bits 1 und 2 wählen Sie den Betriebsmodus (siehe Datenblatt).

0x0Ch

Registerstatus

Bit 0 bleibt HIGH, solange der A/D-Wandler arbeitet. Bit 1 ist HIGH während des Starts.

0x20h0x27h

Messwerte der Eingänge

Worte, keine Bytes (siehe Datenblatt).

0x2Ah0x39h

Grenzwert-Register der Eingänge

Worte, keine Bytes (siehe Datenblatt). Dieses Register definiert die Grenzwerte für die Interrupts.

0x3Eh

ID des Herstellers

0x3Fh

ID der Version

Testaufbau

Für den Testaufbau kommt die in Teil 9 dieser Reihe schon installierte C-Umgebung zum Einsatz. Damit das Testprogramm etwas hermacht, erhält es in diesem Teil eine hübsche GTK-Benutzeroberfläche. Infos zum Toolkit und eine Anleitung zur Installation finden Sie im Kasten “GTK+”. Der Testaufbau der Hardware erfolgt auf dem Breadboard (Abbildung 2).

Abbildung 2: Der Testaufbau auf dem Breadboard ermöglicht einen einfachen ersten Test des Bausteins.

Abbildung 2: Der Testaufbau auf dem Breadboard ermöglicht einen einfachen ersten Test des Bausteins.

GTK+

Mit dem Gimp Toolkit [6] erstellen Sie komponentenorientierte Oberflächen. Es beinhaltet viele Steuerelemente, mit denen Sie leicht eigene kleine grafische Anwendung entwickeln. Das GTK+ steht für den RasPi in der Version 3 bereit. Sie installieren es mit den bekannten Bordmitteln (Listing 1, Zeile 1 bis 3). Außerdem benötigen Sie das Terminalprogramm Xterm (Zeile 4), um die Verbindung zwischen RasPi und PC zu testen.

Um die Ausgabe des Mini-Rechners auf den Desktop-PC umzuleiten, gibt es mehrere Möglichkeiten. Die einfache und sichere Variante besteht darin, beim Aufbau der SSH-Verbindung X11-Forwarding zu aktivieren. Das erledigen Sie mit dem Parameter -X des SSH-Befehls (Zeile 5). Den Hostnamen raspi ersetzen Sie durch den korrekten Wert für Ihren Host. Um das zu testen, starten Sie nun das X-Terminal und legen es mit dem Ampersand & in den Hintergrund – so blockiert es nicht die SSH-Sitzung (Zeile 6).

Nach einigen Sekunden öffnet sich ein Terminal, in dem Sie wie gewohnt auf dem RasPi arbeiten. Das signalisiert gleichzeitig, dass das Weiterleiten der Anfragen an den X-Server funktioniert hat.

Listing 1

 

$ sudo apt-get update
$ sudo apt-get upgrade
$ sudo apt-get install libgtk-3-dev
$ sudo apt-get install xterm
$ ssh pi@raspi -X
$ xterm &
[1] 27328

Abbildung 3 zeigt den Schaltplan. Interessant dabei sind die Potis zum Einstellen der I2C-Adresse (siehe Tabelle “ADC128D818: I2C-Adressen”). Für einen ersten Test rufen Sie im Terminal das Tool I2cdetect auf. Der Baustein sollte sich unter der Adresse 0x1D melden, sofern die zwei Potis für die Adresse auf LOW stehen (Listing 2).

DIESEN ARTIKEL ALS PDF KAUFEN
EXPRESS-KAUF ALS PDFUmfang: 5 HeftseitenPreis €0,99
(inkl. 19% MwSt.)
RASPBERRY PI GEEK KAUFEN
EINZELNE AUSGABE Print-Ausgaben Digitale Ausgaben
ABONNEMENTS Print-Abos Digitales Abo
TABLET & SMARTPHONE APPS Raspberry Pi Geek bei Google Play Readly Logo
Nach oben