light&color

12. DIGITALE LICHT- UND FARBSENSOREN

 

 

DU LERNST HIER...

 

wie Licht- und Farbsensoren funktionieren und wie du sie in typischen Anwendungen einsetzt.

 

 

WIE FUNKTIONIEREN LICHTSENSOREN?

 

Die meisten Lichtsensoren bestehen aus einer Halbleiter-Fotodiode, deren elektrischer Widerstand bei einfallendem Licht kleiner wird. Darum nennt man sie auch LDR (Light Dependent Resistor). Bei Farbsensoren verwendet man gewöhnlich 3 rot-, grün- und blau-empfindliche Fotodioden oder Farbfilter.

In einfachen Anwendungen (Lichtschranken u.ä.) genügt es, die Widerstandsänderung in einer Potentiometerschaltung in eine Spannung zu wandeln und sie in einem ADC zu digitalisieren oder als Hell-Dunkel-Werte an einem GPIO zu detektieren. Es ist aber einfacher, Breakout-Boards zu verwenden, wo die Intensität oder Farbe über ein I2C-Interface als digitaler Wert abgegeben wird. Solche digitalen Sensoren liefern meist sogar geeichte Werte der Helligkeit (in Lux).

 

 

MUSTERBEISPIELE

 


Lichtsensoren

Du verwendest den Sensor TSL2561, der auf einem Breakout-Board verbaut ist (Bezugsquellen Adafruit, eBay). Um den Sensor mit dem Grove-Adapter der Oxocard zu verbinden, lötest du ein Grove-Kabel an den Pins Vin (rot), GND (schwarz), SDA (weiss) und SCL (gelb) ein. Beim Board von Seed sind keine Lötarbeiten nötig, da es  einen Grove-Stecker aufweist.

 
Digitaler Lichtsensor TSL2561 (Adafruit)
 
Digitaler Lichtsensor TSL2561 (Seed) mit Grove-Connector

Im folgenden Testprogramm schreibst du den gemessenen Helligkeitswert in Lux auf dem LED-Display  und  gleichzeitig in der Konsole aus. Du verwendest das Treibermodul tsl2561 mit der Methode getLux().

Programm:

from oxocard import *
from tsl2561 import TSL2561
from time import sleep

def show(lum):
    v = int(lum + 0.5)
    display(v // 100)
    sleep(2)
    display("%02d" % (v % 100))
    sleep(2)
    display("::")
    sleep(2)

tsl = TSL2561()
while True:
    lum = tsl.getLux()
    print("%5.1f Lux" %lum)
    show(lum)
► In Zwischenablage kopieren


 

Farbsensoren

Am Breakout-Board lötest du ein Grove-Kabel an den Pins Vin (rot), GND (schwarz), SDA (weiss) und SCL (gelb) ein. Mit dem Pin LED kannst du eine weisse LED als Beleuchtung ein/ausschalten. Standardmässig ist sie eingeschaltet. Um sie auszuschalten, musst du den Pin auf GND ziehen. Verbindest du ihn mit einem GPIO-Anschluss, so kannst du die LED programmgesteuert ein-/ausschalten.

 
Digitaler Colorsensor TCS34725 (Adafruit)
 
Digitaler Lichtsensor TCS34725 (eBay)

Im folgenden Testprogramm zeigst du den gemessenen Farbwert als 3 zweistellige Hexziffern auf dem LED-Display an und schreibst ihn in der Konsole aus.


Programm:

from oxocard import *
from tcs34725 import *
from time import sleep

def show(color):
    hex = rgbToHex(color)
    display(hex[0:2])
    sleep(2)
    display("")
    sleep(1)
    display(hex[2:4])
    sleep(2)
    display("")
    sleep(1)
    display(hex[4:6])
    sleep(2)
    display("::")
    sleep(3)

tcs = TCS34725()
while True:
    color = tcs.getRGB()
    print("color:", color, "0x" + rgbToHex(color))
    show(color)
► In Zwischenablage kopieren

 

 

MERKE DIR...

 

Digitale Licht- und Farbsensoren geben den digitalisierten Messwert meist über ein I2C-Interface ab. Typischen Anwendungen sind Lichtschranken, bei denen die Unterbrechung eines Lichtstrahls durch ein Objekt detektiert wird und Anlagen, die bei Dunkelheit eine Beleuchtung einschalten.

 

 

ZUM SELBST LÖSEN

 

 

1.

Baue eine Alarmanlage mit einer Lichtschranke auf, bei der ein optischer oder akustischer Alarm ausgelöst wird, wenn der Lichtstrahl unterbrochen wird.

2.

Der LED-Display soll auf allen Pixeln gleichzeitig die Farbe anzeigen, die der Sensor misst.