I2C-Workshop (Teil 25): A/D-Wandler MCP3424

Testaufbau

Als Testaufbau kommt die Konfiguration aus Teil 18 [3] dieser Reihe zum Einsatz. Dort können Sie bei Bedarf nachlesen, wie Sie die I2C-Schnittstelle des Raspberry Pi aktivieren und die passende Software installieren. Auf dem Schaltplan (Abbildung 3) erkennen Sie, wie Sie das Modul anschließen.

Abbildung 3: Der Schaltplan des Testaufbaus zeigt Ihnen, wie Sie die einzelnen Komponenten richtig miteinander verdrahten.

Abbildung 4 zeigt den Testaufbau in ganzer Pracht. Achten Sie darauf, Potenziometer mit linearer Charakteristik zu verwenden. Deren Widerstand hängt linear vom Winkel des Schleifers ab, die Mittelstellung entspricht also der halben Betriebsspannung.

Abbildung 4: Testaufbau mit Potenziometern.

Für einen ersten Test verwenden Sie das Werkzeug I2cdetect. Dessen Ausgabe sollte so ausfallen wie in Listing 1 zu sehen, der MCP3424 meldet sich unter der I2C-Adresse 0x68h.

Listing 1

$ i2cdetect -y 1
     0  1  2  3  4  5  6  7  8  9  a  b  c  d  e  f
00:          -- -- -- -- -- -- -- -- -- -- -- -- --
10: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
20: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
30: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
40: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
50: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
60: -- -- -- -- -- -- -- -- 68 -- -- -- -- -- -- --
70: -- -- -- -- -- -- -- --

Kernel-Treiber

Der Einsatz eines Kernel-Treibers bietet den Vorteil, dass Sie so aus jeder Programmiersprache heraus Zugriff auf den Baustein erhalten. Es ist sogar möglich, die Messwerte direkt auf der Kommandozeile abzufragen. Aktuelle Versionen von Raspbian bringen den fraglichen Treiber bereits mit, Sie brauchen ihn nur noch zu aktivieren. Den Quellcode des Treibers finden Sie bei Interesse auf Github [4].

Im ersten Schritt sollten Sie überprüfen, ob das Kernel-Modul für den MCP3424 bereits geladen ist. Dazu verwenden Sie das Kommando lsmod in einem Terminal. Die Liste, die Sie vom System erhalten, fällt je nach Installation unterschiedlich lang aus. Daher ist es sinnvoll, gezielt nach dem konkreten Modul zu filtern. Im konkreten Fall sieht das Kommando dazu wie folgt aus:

$ lsmod | grep -i mcp34

In der Regel sehen Sie als Ausgabe – nichts. Um das Kernel-Modul zu aktivieren, schreiben Sie die I2C-Adresse und den Typ des A/D-Wandlers in eine spezielle Datei. Das funktioniert nur als User root (Listing 2, erste Zeile). Ein einfaches Sudo hilft hier nicht weiter: Das Kommando hinter sudo würde dann zwar mit administrativen Rechten ausgeführt, das Umleiten der Ausgabe aber wieder mit User-Rechten. Daher wechseln Sie für die Aktion komplett in das Konto des Administrators.

Listing 2

$ sudo su -
# echo mcp3424 0x68 > /sys/bus/i2c/devices/i2c-1/new_device
# exit
logout
$ lsmod | grep -i mcp34
cp3422         16384  0
industrialio   73728  1 mcp3422

Nun aktivieren Sie das Kernel-Modul (Listing 2, Zeile 2). Dann überprüfen Sie als normaler Benutzer (Zeile 3) mit Lsmod noch einmal, ob das Modul geladen ist (Zeile 5). Das Kernel-Modul erzeugt im Dateisystem einige Dateien, in denen die Messwerte stehen; Sie finden sie im Verzeichnis /sys/bus/i2c/devices/1-0068/iio:device0. Mit dem Kommando aus Listing 3 sehen Sie sich die Namen an, die weitgehend selbsterklärend ausfallen.

Listing 3

$ ls -l /sys/bus/i2c/devices/1-0068/iio:device0
total 0
-r--r--r-- 1 root root 4096 Feb 24 16:24 dev
-rw-r--r-- 1 root root 4096 Feb 24 16:24 in_voltage0_raw
-rw-r--r-- 1 root root 4096 Feb 24 16:24 in_voltage0_scale
-rw-r--r-- 1 root root 4096 Feb 24 16:24 in_voltage1_raw
-rw-r--r-- 1 root root 4096 Feb 24 16:24 in_voltage1_scale
-rw-r--r-- 1 root root 4096 Feb 24 16:24 in_voltage2_raw
-rw-r--r-- 1 root root 4096 Feb 24 16:24 in_voltage2_scale
-rw-r--r-- 1 root root 4096 Feb 24 16:24 in_voltage3_raw
-rw-r--r-- 1 root root 4096 Feb 24 16:24 in_voltage3_scale
-rw-r--r-- 1 root root 4096 Feb 24 16:24 in_voltage_sampling_frequency
-r--r--r-- 1 root root 4096 Feb 24 16:24 in_voltage_scale_available
-r--r--r-- 1 root root 4096 Feb 24 16:24 name
drwxr-xr-x 2 root root    0 Feb 24 16:24 power
-r--r--r-- 1 root root 4096 Feb 24 16:24 sampling_frequency_available
lrwxrwxrwx 1 root root    0 Feb 24 16:24 subsystem -> ../../../../../../../bus/iio
-rw-r--r-- 1 root root 4096 Feb 24 16:15 uevent

Um zu sehen, wie der MCP3424 arbeitet, lesen Sie die Werte aus den Dateien, deren Namen auf _raw enden. Das gelingt am einfachsten mit dem Kommando watch. Der Befehl aus Listing 4 liest die Dateien mit den Messwerten jede halbe Sekunde aus und zeigt sie an.

Listing 4

$ watch -n 0.5 'cat /sys/bus/i2c/devices/1-0068/iio:device0/in_voltage*_raw'
Every 0.5s: cat /sys/bus/i2c/devices/1-0068/iio:device0/in_v...  raspberrypi:
1646
1566
1442
-627

Diesen Artikel als PDF kaufen

Express-Kauf als PDF

Umfang: 5 Heftseiten

Preis € 0,99
(inkl. 19% MwSt.)

Raspberry Pi Geek kaufen

Einzelne Ausgabe
 
Abonnements
 
TABLET & SMARTPHONE APPS
Bald erhältlich
Get it on Google Play

Deutschland

Ähnliche Artikel

Aktuelle Ausgabe

12/2019
RasPi-Alternativen

Diese Ausgabe als PDF kaufen

Preis € 9,99
(inkl. 19% MwSt.)

Stellenmarkt

Neuigkeiten

  • Grußbotschaften

    Mit Sonic Pi zaubern Sie komplexe Sounds, die Sie bei Bedarf sogar noch während des Abspielens modifizieren.

  • Das Runde und das Eckige

    Mit dem MCP4725 ergänzen Sie einen RasPi um einem D/A-Wandler, der bei Bedarf noch weitere Funktionen erfüllt.

  • Alles unter Kontrolle

    Schon ein einfaches Mikrocontrollerboard wie das CY8CKIT-049-42xx bietet erstaunlich viele Möglichkeiten beim Ansteuern von Hardware.

  • Viele Kerne

    Das Spresense Development Board von Sony lässt sich mit der Arduino IDE programmieren und bringt auch ein eigenes Entwickler-SDK mit.

  • Exotische Früchte

    Der aus China stammende Orange Pi positioniert sich mit einem guten Preis und interessanten Features gegen die RasPi-Truppe. Kann er sich auch behaupten?

  • Flexibler Surfer

    Mit dem neuen RasPi 4 setzen Sie einen öffentlichen Webkiosk schnell und kostengünstig auf.

  • Auskunftsfreudig

    Viele Devices, so auch der E.ON-Aura-Controller, verwenden eine Schnittstelle namens REST, um Zustandsdaten zu übermitteln. Mit ein wenig Bastelei lesen Sie diese auch über Ihr Smartphone aus.

  • Doppelt gemessen

    Mit wenig Aufwand und einem Pi Zero realisieren Sie einen mobilen Zweikanal-Spannungsprüfer.

  • Elegant zusammengeführt

    Tizonia streamt Musik von Online-Quellen und lokalen Sammlungen. Die schlanke Architektur macht den Player zur guten Wahl für den Einsatz auf dem RasPi.

  • Kommunikativ

    Nicht jeder traut sich zu, sein eigenes Smartphone zu bauen. Allerdings kann jeder Linux-Nutzer den Raspberry Pi im Handumdrehen zu einem VoIP-Telefon aufrüsten.