Arduino - TCS3200D/TCS230 Farbsensor
Dieses Tutorial demonstriert die Anbindung eines TCS3200D/TCS230-Farberkennungssensors an Arduino, um RGB-Werte von verschiedenen Objekten zu messen und zu identifizieren. Sie werden Kalibrierungstechniken des Sensors und die Programmierung zur Farberkennung beherrschen.
Behandelte Themen:
- Verkabelung des TCS3200D/TCS230-Sensormoduls an das Arduino-Board
- Durchführung einer Umgebungskalibrierung für genaue Messwerte
- Arduino programmieren, um RGB-Farbdaten zu extrahieren

Erforderliche Hardware
Oder Sie können die folgenden Kits kaufen:
| 1 | × | DIYables STEM V3 Starter-Kit (Arduino enthalten) | |
| 1 | × | DIYables Sensor-Kit (30 Sensoren/Displays) | |
| 1 | × | DIYables Sensor-Kit (18 Sensoren/Displays) |
Über TCS3200D/TCS230 Farbsensor
Aufbauend auf einem 8×8-Photodioden-Array identifiziert der TCS3200D/TCS230 Farben durch spezialisierte optische Filterung. Das 64-Dioden-Gitter umfasst 16 Photodioden mit rotem Filter, 16 Photodioden mit grünem Filter, 16 Photodioden mit blauem Filter und 16 ungefilterten Photodioden. Die Farberkennung erfolgt durch das Umschalten zwischen Filtertypen und die Analyse der Frequenzausgabe einer Rechteckwelle, die die Lichtintensität repräsentiert.
Integrierte weiße LEDs in den meisten Modulen sorgen für eine gleichmäßige Zielbeleuchtung, wodurch stabile Messwerte bei wechselnden Umgebungsbedingungen gewährleistet und die Leistung bei schlechten Lichtverhältnissen verbessert wird.
Pinbelegung
Die Anschlusspins des TCS3200D/TCS230-Moduls umfassen:
- VCC-Pin: Stromversorgungsanschluss (+5V).
- GND-Pin: Masseverbindung (0V).
- S0, S1-Pins: Eingänge zur Steuerung der Frequenzskalierung.
- S2, S3-Pins: Eingänge zur Auswahl des Farbfilters.
- OUT-Pin: Frequenzausgang (Rechtecksignal).
- OE-Pin: Steuerung der Ausgangsaktivierung (aktiv bei LOW). Die meisten kommerziellen Module verbinden diesen Pin intern mit Masse, wodurch externe Verdrahtung entfällt. Falls er nicht vorverbunden ist, verbinden Sie ihn manuell mit Masse.

Wie es funktioniert
Der Betrieb des Sensors erfordert die Konfiguration zweier zentraler Parameter: des aktiven Farbkanals und der Signalstärke. Steuerpin-Paare verwalten diese Einstellungen:
Ausgabeskalierung über S0 und S1:
- Beide LOW: Power-down-Modus
- S0 LOW, S1 HIGH: 2%-Frequenzskalierung
- S0 HIGH, S1 LOW: 20%-Frequenzskalierung
- Beide HIGH: Volle 100%-Skalierung
Filterauswahl über S2 und S3:
- Beide LOW: Roter Kanal aktiv
- S2 LOW, S3 HIGH: Blauer Kanal aktiv
- S2 HIGH, S3 LOW: Kanal ohne Filterung (ungefiltert)
- Beide HIGH: Grüner Kanal aktiv
Der OUT-Pin erzeugt Rechteckwellen-Signale im Bereich von ungefähr 2 Hz bis 500 kHz. Höhere Frequenzen deuten auf eine stärkere Lichtintensität für den ausgewählten Kanal hin. Die Messung der Pulsbreite mit pulseIn() zeigt die inverse Beziehung – kürzere Pulse bedeuten hellere Farben. Nach der Kalibrierung liefert die Umrechnung Standard-RGB-Werte.
Maximierung der Lesegenauigkeit
- Halten Sie einen Abstand von 1–3 cm zwischen Sensor und Ziel ein, um eine konsistente Positionierung zu gewährleisten.
- Aktivieren Sie die integrierten weißen LEDs für eine gleichmäßige Beleuchtung.
- Beeinflussung durch Umgebungslicht minimieren, indem Sie den Sensor abschirmen, um eine höhere Präzision zu erreichen.
Verdrahtungsdiagramm
Verbindungsschema für den TCS3200-Farbsensor und das Arduino-Board:
| TCS3200 Color Sensor | Arduino |
|---|---|
| VCC | 5V |
| GND | GND |
| S0 | Pin 4 |
| S1 | Pin 3 |
| S2 | Pin 6 |
| S3 | Pin 5 |
| OUT | Pin 7 |

Dieses Bild wurde mit Fritzing erstellt. Klicken Sie, um das Bild zu vergrößern.
Arduino-Code - Sensor-Kalibrierung mittels Pulsbreite
Die Umweltkalibrierung ist essenziell, da der Rohsensor-Ausgang durch mehrere Faktoren variiert: die Intensität der integrierten LED, die Zielentfernung, die Reflexionseigenschaften der Oberfläche und die Umgebungsbeleuchtung. Betrachten Sie diese Variablen als Messstörungen. Die Kalibrierung quantifiziert diese Beeinflussung, indem sie für jeden Farbkanal Minimal- und Maximalwerte festlegt, was eine genaue Umrechnung auf die 0–255-RGB-Skala für Ihre spezifische Einrichtung ermöglicht.
Schnelle Schritte
- Öffnen Sie den Kalibrierungscode in der Arduino-IDE.
- Laden Sie den Kalibrierungscode auf Ihr Arduino-Board hoch, indem Sie die Hochladen-Schaltfläche verwenden.
- Starten Sie den Serial Monitor, um Live-Messwerte mit Min-/Max-Verfolgung anzuzeigen.
- Scannen Sie mit dem Sensor verschiedene Objekte: weiße Flächen (Papier), schwarze Gegenstände und eine Auswahl farbiger Objekte.
- Beobachten Sie automatische Min-/Max-Wertaktualisierungen, während Extreme erfasst werden.
- Wenn sich die Werte stabilisieren (typischerweise 10–20 Sekunden), notieren Sie alle sechs Kalibrierungskonstanten.
Beispielsweise würden Ihre Kalibrierungswerte aus der obigen Ausgabe stammen:
- RotMin = 42, RotMax = 210
- GrünMin = 55, GrünMax = 185
- BlauMin = 60, BlauMax = 172
Arduino-Code - RGB-Farbwerte auslesen
Schnelle Schritte
- Lokalisieren Sie die Deklarationen der Kalibrierungsvariablen am Anfang des Codes:
The content to translate is missing. Please provide the English text you want translated.
int redMin = 0; // Minimale Pulsbreite für Rot
int redMax = 0; // Maximale Pulsbreite Rot
int greenMin = 0; // Grüne Mindestpulsbreite
int greenMax = 0; // Maximale Pulsbreite für Grün
int blueMin = 0; // blaue minimale Pulsbreite
int blueMax = 0; // Maximale Pulsbreite des Blaukanals
Please provide the English text you want translated (inside the code block).
- Aktualisieren Sie ALLE sechs Nullwerte mit Kalibrierungsdaten aus der vorherigen Übung. Beispieltransformation (unter Verwendung der Kalibrierungsergebnisse redMin = 42, redMax = 210, greenMin = 55, greenMax = 185, blueMin = 60, blueMax = 172):
Bitte geben Sie den zu übersetzenden Text ein.
int rotMin = 42;
int rotMax = 210;
int gruenMin = 55;
int gruenMax = 185;
int blauMin = 60;
int blauMax = 172;
Please provide the English content to translate.
- Lade den modifizierten Code auf den Arduino hoch
- Platziere ein farbiges Ziel vor dem Sensor
- Überwache die RGB-Ausgabe im seriellen Monitor
Die RGB-Werte sind nun dem Standardbereich 0-255 zugeordnet. Niedrigere Pulsbreiten (mehr Licht) erzeugen höhere RGB-Werte, und größere Pulsbreiten (weniger Licht) erzeugen niedrigere RGB-Werte.
Anwendungen
Nun, da Sie RGB-Werte lesen können, können Sie Projekte wie:
- Farbsortierer: Objekte nach Farbe sortieren (Rot, Grün, Blau)
- Farbabgleichsspiel: Prüfe, ob zwei Objekte dieselbe Farbe haben
- Linienfolger-Roboter: Folge farbigen Linien auf dem Boden
- Qualitätskontrolle: Defekte Produkte anhand der Farbe erkennen
- Farbaktivierter Alarm: Löse einen Summer oder eine LED aus, wenn eine bestimmte Farbe erkannt wird
Video Tutorial
Wir erwägen die Erstellung von Video-Tutorials. Wenn Sie Video-Tutorials für wichtig halten, abonnieren Sie bitte unseren YouTube-Kanal , um uns zu motivieren, die Videos zu erstellen.