Raspberry Pi Pico: Farberkennung mit TCRT5000

Der TCRT5000 ist ein optischer Infrarot-Sensor, bestehend aus einer Infrarot-emittierenden LED und einem Infrarot-empfindlichen Fototransistor. Dabei wird das ausgehende Infrarot-Licht (IR) von einem Objekt reflektiert und vom Fototransistor empfangen. Damit kann man im einfachsten Fall Objekte erkennen oder einen Abstand zu eine Objekt messen.

Nun gibt es verschiedene Quellen, die behaupten, der TCRT5000 würde sich zur Farberkennung eignen und es sei möglich, ein Objekt anhand seiner Farbe zu erkennen.
Wir wollen mit mehreren Experimenten herausfinden, ob die Farberkennung mit dem TCRT5000 tatsächlich möglich ist.

Hierzu haben wir einen Farbverlauf angelegt, den man auf ein DIN A4 Blatt drucken kann. Die Farben des Farbverlaufs sollen gemessen werden.

Hinweis: Wenn Du keinen Farbdrucker hast, dann kannst Du die PDF-Datei auch auf einem Bildschirm oder Tablet anzeigen. Das Tablet kannst Du flach auf den Tisch legen. Bei einem senkrecht stehen Bildschirm musst Du Dir überlegen, wie Du den Sensor am Bildschirm wackelfrei befestigst. Alternativ kannst Du unterschiedlich gefärbte Gegenstände zusammensuchen. Allerdings wird ein systematischer Vergleich wegen unterschiedlicher Bedingungen und Lichtverhältnisse fehlerhafter sein.

Aufbau und Bauteile

Raspberry Pi Pico: Farberkennung mit TCRT5000

Für diesen Aufbau ist es sinnvoll, den TCRT5000 auf das Steckbrett zu stecken und dieses um 90 Grad zu kippen. Der Abstand zwischen dem TCRT5000-Sensor-LEDs und dem Untergrund sollte nur ein paar Millimeter betragen.

Raspberry Pi Pico TCRT5000
Pin 36 3V3 OUT VCC
Pin 33 GND GND
Pin 31 GPIO 26 (ADC0) AOUT

Schnell und einfach alle Bauteile zusammen bestellen

Programmcode

In diesem Programmcode wird die Onboard-LED, ein Taster zum Starten der Messung und ein ADC-Eingang initialisiert. Der ADC-Eingang wird mit dem analogen Ausgang des TCRT5000 verbunden.
Der Taster ruft die Funktion auf, in der die Messung durchgeführt wird. Im Programmcode existieren noch zwei Parameter. Der Parameter „measure_repeat“ gibt an, wie oft die Messung hintereinander wiederholt werden soll. Der Parameter „measure_wait“ gibt an, wie lange zwischen den Messungen gewartet werden soll.
Anschließend wird das Ergebnis als Durchschnittswert, sowie mit dem unteren und oberen gemessenen Wert auf der Kommandozeile ausgegeben.

# Bibliotheken laden
from machine import Pin, ADC
from time import sleep_ms

# Parameter
measure_repeat = 5
measure_wait = 500 # ms

# Initialisierung: Onboard-LED
led_onboard = Pin(25, Pin.OUT, value=0)

# Initialisierung: Taster (GPIO16)
btn = Pin(16, Pin.IN, Pin.PULL_UP)

# Initialisierung des ADC0 (GPIO26)
sensor_a = ADC(0)

# Funktion: Farbe messen
def measureColor():
    value_sum = 0
    value_high = 0
    value_low = 0
    for _ in range (measure_repeat):
        value_a = sensor_a.read_u16()
        value_sum += value_a
        if value_a > value_high: value_high = value_a
        if value_a < value_low or value_low == 0: value_low = value_a
        sleep_ms(measure_wait)
    print('Wert:', int(value_sum / measure_repeat), '(', value_low, '-', value_high, ')')

# Endlos-Schleife für Taster-Auswertung
print('Messung starten')
while True:
    sleep_ms(100)
    if btn.value() == 0:
        led_onboard.on()
        print('.')
        measureColor()
        led_onboard.off()

Experimente

Zuerst ordnen wir den Versuchsaufbau an und führen dann eine Testmessung durch.

  1. Lege das Blatt mit dem Farbverlauf flach auf den Tisch.
  2. Lege bzw. stelle den Aufbau auf das Blatt und positioniere den TCRT5000 an eine beliebige Stelle im Farbverlauf.
  3. Führe eine Testmessung durch, in dem Du auf den Button drückst.

Wenn der Aufbau und der Programmcode sich nach diesem Test als funktionsfähig herausstellen, dann können wir mit dem eigentlichen Versuch beginnen.

Zum Thema Messen gelten folgende Regeln:

  1. Wer misst, der misst Mist.
  2. Jede Messung ergibt ein anderes Ergebnis. Deshalb messe nur ein Mal.

Jetzt geht es los:

  1. Positioniere den TCRT5000 am oberen Ende des Farbverlaufs. Achte bei der Positionierung darauf, dass das schwarze TCRT5000-LED-Sensor-Modul exakt auf der Linie mit der Nummer 1 ausgerichtet ist.
  2. Beginne mit der ersten Messung durch Drücken auf den Taster. Schreibe den Messwert mit der Nummer auf.
  3. Im nächsten Schritt verschiebst Du den TCRT5000 zur nächsten Farbe, die Du messen willst. Führe die nächste Messung durch und dokumentiere den Messwert.

Hinweis: Es ist nicht notwendig, alle vorgegebenen Messpunkte durchzuführen. Im Prinzip kann man die Anzahl der Messungen auf die Farben beschränken, die für die eigenen Anforderungen relevant sind. Zum Beispiel Blau, Grün und Rot.

Erkenntnisse

Kann man mit einem TCRT5000, wie versprochen, eine Farberkennung durchführen? Hm, ja, nein, vielleicht oder es kommt drauf an.

Wenn man mit dem Aufbau und Programmcode herumspielt, wird man in dem Farbverlauf tatsächlich unterschiedliche Werte messen. Bei sich wiederholenden Messungen an der selben Stelle, wird man oft einen Wert messen, der sich im selben Wertebereich befindet. Das Problem ist, das funktioniert nicht immer. Gefühlt misst man dabei sehr viel Mist.

Wie lässt sich das eingrenzen? Beobachten lässt sich, dass man unterschiedliche Werte messen kann, die irgendwie in Zusammenhang mit dem farblich bedruckten Blatt stehen. Allerdings sind die messbaren Wertebereiche sehr groß und überschneiden sich auch noch. Außerdem können leicht verändernde Lichtverhältnisse die Wertebereiche nach oben oder unten driften lassen.

Sinnvoll verwenden lässt sich diese Farberkennung vielleicht dann, wenn man die Anzahl der möglichen Farben, die erkannt werden sollen, einschränkt. Vielleicht lassen sich die Farben Rot, Grün und Blau noch gut voneinander unterschieden. Besser funktioniert es, wenn man die Farbe Weiß (Blatt Papier) von einer bestimmten Farbe unterscheidet. Da ist die Differenz der Wertebereiche vergleichsweise groß.
Das Erkennen von Farben ist also möglich, aber nicht ganz so sicher, wie man sich das vorstellt.

Darf es ein bisschen mehr sein?

Wir wollen herausfinden, ob sich die Farberkennung für das Line-Tracking eignet.

Weitere verwandte Themen:

Frag Elektronik-Kompendium.de

Hardware-nahes Programmieren mit dem Raspberry Pi Pico und MicroPython

Elektronik-Set Pico Edition

Das Elektronik-Set Pico Edition ist ein Bauteile-Sortiment mit Anleitung zum Experimentieren und Programmieren mit MicroPython.

  • LED: Einschalten, ausschalten, blinken und Helligkeit steuern
  • Taster: Entprellen und Zustände anzeigen
  • LED mit Taster einschalten und ausschalten
  • Ampel- und Lauflicht-Steuerung
  • Elektronischer Würfel
  • Eigene Steuerungen programmieren

Elektronik-Set jetzt bestellen Online-Workshop buchen

Online-Workshop: Programmieren mit dem Raspberry Pi Pico

Programmieren mit dem Raspberry Pi Pico

Gemeinsam mit anderen und unter Anleitung experimentieren? Wir bieten unterschiedliche Online-Workshops zum Raspberry Pi Pico und MicroPython an. Einführung in die Programmierung, Sensoren programmieren und kalibrieren, sowie Internet of Things und Smart Home über WLAN und MQTT.

Online-Workshop buchen

Besuchen Sie unser fast monatlich stattfindendes Online-Meeting PicoTalk und lernen Sie uns kennen. Die Teilnahme ist kostenfrei.

Termine und Newsletter-Anmeldung

 

Elektronik-Sets für das Hardware-nahe Programmieren