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 |
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 |
|---|---|---|---|
|
|
|
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 |
|
|
|
Steuerregister 1 |
Funktionsparameter des ICs einstellen. |
|
|
0/1 |
|
Verstärkung Farb- und Lichtsensor ( |
|
|
2/3 |
|
Verstärkung Annäherungssensor ( |
|
|
4/5 |
|
reserviert |
|
|
6/7 |
|
Stromstärke LED ( |
|
|
|
CDATAL |
Low Byte Helligkeit |
|
|
|
CDATAH |
High Byte Helligkeit |
|
|
|
RDATAL |
Low Byte rot |
|
|
|
RDATAH |
High Byte rot |
|
|
|
GDATAL |
Low Byte grün |
|
|
|
GDATAH |
High Byte grün |
|
|
|
BDATAL |
Low Byte blau |
|
|
|
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.






