Startseite>I2C-Workshop, Teil 20: APDS-9960
Aus Raspberry Pi Geek 08/2018

I2C-Workshop, Teil 20: APDS-9960

Farbenspiele

Martin Mohr

Der winzige Sensorbaustein APDS-9960 vereint vier unterschiedliche Anwendungsfälle in einem Chip.

Der winzige Sensorbaustein APDS-9960 erkennt neben Farben auch noch Annäherung, Bewegung und Umgebungshelligkeit. Schon für wenig Geld gibt es im Handel Module, auf denen er verbaut ist. Mit 38 Seiten geriert sich das Datenblatt [1] zum APDS-9960 schon eher als kleines Buch. Eine komplette Seite darin zählt die Register des Halbleiters samt ihrer Funktion auf. Alle davon bis ins Detail zu beschreiben, würde den Rahmen des Artikels sprengen, sodass wir uns im Folgenden auf die Farbkennung des APDS-9960 beschränken.

Bevor wir ins Detail gehen, sehen wir uns noch einige allgemeine Daten des APDS-9960 an. Als Betriebsspannung verträgt er maximal 3,8 Volt. Die Stromaufnahme hängt vom Betriebsmodus ab, liegt aber immer unter 1 Milliampere. Diese geringe Stromaufnahme erlaubt, das Modul über den 3,3-Volt-Anschluss des Raspberry Pi mit Energie zu versorgen. Am I2C-Bus meldet sich der Baustein unter der Adresse 0x39h.

Wir verwenden für unsere Versuche die Testumgebung, die wir in Teil 18 dieser Reihe aufgebaut haben. In der Tabelle “Verbindung zum APDS-9960-Modul” sehen Sie, wie Sie das Modul an die I2C-Schnittstelle des Raspberry Pi anschließen, Abbildung 1 zeigt den Versuchsaufbau.

Verbindung zum APDS-9960-Modul

GPIO-Pin

APDS-9960-Modul

1 (+3,3 Volt)

VIN

3 (SDA)

SDA

5 (SCL)

SCL

9 (0 Volt)

GND

Abbildung 1: Der Testaufbau.

Abbildung 1: Der Testaufbau.

Für einen Funktionstest benötigen wir eine starke Lichtquelle und Farbfilter, die nur ein bestimmtes Lichtspektrum durchdringen lassen. Interessanterweise funktionieren Gummibärchen als Farbfilter sehr gut, sofern sie den Appetit des Experimentators überleben. Als Lichtquelle dient eine Taschenlampe oder ein Stück eines LED-Bands.

Einstieg

Wie eingangs erwähnt, handelt es sich beim APDS-9960 um einen sehr komplexen Halbleiter. Daher beschäftigen wir uns nur mit den Registern, die wir zur Farberkennung benötigen (siehe Tabelle Tabelle “Register des APDS-9960”).

Der APDS-9960 verwendet intern dieselbe Hardware für unterschiedliche Funktionen. Daher müssen Sie beim Verwenden mehrerer Funktionen aufpassen, in welcher Reihenfolge sich diese auswerten lassen. Das Datenblatt liefert alle dazu nötigen Informationen. Da wir hier nur die Farberkennung nutzen, müssen wir uns nicht um die Reihenfolge kümmern.

Register des APDS-9960

Register

Bit

Funktion

Beschreibung

0x80

 

Aktivierungsregister

Sensor einschalten, Funktionen aktivieren

 

0

Power on

Messeinrichtungen anschalten

 

1

ALS Enable

aktiviert Farb- und Lichtsensor

 

2

Proximity Enable

aktiviert die Annäherungserkennung

 

3

Wait Enable

aktiviert den Warte-Timer

 

4

ALS Interrupt Enable

aktiviert die Interrupt-Verarbeitung für Farb- und Lichtsensor

 

5

Proximity Interrupt Enable

aktiviert die Interrupt-Verarbeitung für Annäherungserkennung

 

6

Gesture Enable

aktiviert Gestenerkennung

 

7

reserviert

0x8F

 

Steuerregister 1

Funktionsparameter des ICs einstellen.

 

0/1

 

Verstärkung Farb- und Lichtsensor (00=1x, 01=4x, 10=16x, 11=64x)

 

2/3

 

Verstärkung Annäherungssensor (00=1x, 01=2x, 10=4x, 11=8x)

 

4/5

 

reserviert

 

6/7

 

Stromstärke LED (00=100mA, 01=50mA, 10=25mA, 11=12,5mA)

0x94

 

CDATAL

Low Byte Helligkeit

0x95

 

CDATAH

High Byte Helligkeit

0x96

 

RDATAL

Low Byte rot

0x97

 

RDATAH

High Byte rot

0x98

 

GDATAL

Low Byte grün

0x99

 

GDATAH

High Byte grün

0x9A

 

BDATAL

Low Byte blau

0x9B

 

BDATAH

High Byte blau

Um sicherzustellen, dass der Versuchsaufbau fehlerfrei arbeitet, scannen Sie mithilfe der I2C-Tools den Bus nach Teilnehmern (Listing 1). Meldet sich der APDS-9960 unter der Adresse 0x39h, funktioniert der Testaufbau. Mit den Kommandos aus Listing 2 aktivieren Sie die Farberkennung des Moduls und lassen sich die Werte der Farbregister (jeweils nur das Low Byte) anzeigen. Um den Watch-Befehl abzubrechen, verwenden Sie [Strg]+[C].

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: -- -- -- -- -- -- -- -- -- 39 -- -- -- -- -- --
40: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
50: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
60: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
70: -- -- -- -- -- -- -- --

Listing 2

$ i2cset -y 1 0x39 0x8f 0x01
$ i2cset -y 1 0x39 0x80 0x03
$ watch 'i2cget -y 1 0x39 0x96; i2cget -y 1 0x39 0x98; i2cget -y 1 0x39 0x9a'

Testprogramm

Das in Go geschriebene Testprogramm aus Listing 3 starten Sie mit dem Kommando go run APDS-9960.go. Es aktiviert zunächst die Farberkennung des APDS-9960 und beginnt dann, die einzelnen Register auszulesen und die gemessenen Werte auszuwerten. Mit verschiedenfarbigen Gummibärchen erzeugen Sie für den Sensor unterschiedliche Farben – so lässt er sich einfach testen. Danach können Sie die Filterbären umweltschonend entsorgen.

Damit das Programm fehlerfrei arbeitet, müssen Sie die unterschiedlichen Farbkanäle miteinander abgleichen: Jede Lichtquelle erzeugt ein etwas anderes Licht, die Sensoren zeigen sich für die einzelnen Farben unterschiedlich empfindlich. Auch der Abstand zwischen Sensor und Lichtquelle beeinflusst die Messwerte.

Für den Abgleich aktivieren Sie in Listing 3 zunächst die drei auskommentierten Zeilen 33 bis 35. Danach setzen Sie alle Korrekturfaktoren auf 100 und starten das Programm. Sie erhalten daraufhin unterschiedliche Werte für die einzelnen Farbkanäle. Das Ziel des Abgleichs: Die Resultate für die drei Farben sollen bei weißem Licht möglichst alle denselben Wert annehmen. Passen Sie also nach dem ersten Prüflauf die Faktoren an, starten Sie das Programm erneut, und beginnen Sie gegebenenfalls von vorn, bis alles passt. Es hilft, zum Abgleich die Division durch 1000 in den Berechnungszeilen auszukommentieren.

DIESEN ARTIKEL ALS PDF KAUFEN
EXPRESS-KAUF ALS PDFUmfang: 4 HeftseitenPreis €0,99
(inkl. 19% MwSt.)
€0,99 – Kaufen
RASPBERRY PI GEEK KAUFEN
EINZELNE AUSGABE Print-Ausgaben Digitale Ausgaben
ABONNEMENTS Print-Abos Digitales Abo
TABLET & SMARTPHONE APPS
Deutschland