Arduino - TCS3200D/TCS230 Kleurensensor
Deze tutorial toont hoe u een TCS3200D/TCS230 kleurherkenningssensor koppelt aan een Arduino om RGB-waarden van verschillende objecten te meten en te identificeren. U leert sensor kalibratietechnieken en programmering voor kleurdetectie beheersen.
Behandelde onderwerpen:
- Het aansluiten van het TCS3200D/TCS230 sensormodule op uw Arduino board
- Het uitvoeren van omgevingskalibratie voor nauwkeurige metingen
- Arduino programmeren om RGB kleurgegevens uit te lezen

Hardware benodigd
Of u kunt de volgende kits kopen:
| 1 | × | DIYables Sensorkit (30 sensoren/displays) | |
| 1 | × | DIYables Sensorkit (18 sensoren/displays) |
Over TCS3200D/TCS230 Kleurensensor
De TCS3200D/TCS230 is opgebouwd rond een 8x8 fotodiodenmatrix en identificeert kleuren middels gespecialiseerde optische filtering. De 64-diodenmatrix bevat 16 rood-gefilterde fotodiodes, 16 groen-gefilterde, 16 blauw-gefilterde en 16 ongefilterde (heldere) fotodiodes. Kleurdetectie gebeurt door te schakelen tussen filtertypes en het analyseren van de uitgangsfrequentie in vierkante golven die de lichtintensiteit representeren.
De meeste modules bevatten geïntegreerde witte LED’s die voor consistente verlichting van het meetobject zorgen. Dit garandeert stabiele metingen bij wisselende omgevingslichtomstandigheden en verbetert de prestaties bij weinig licht.
Pinout
De aansluitpinnen op het TCS3200D/TCS230 module zijn:
- VCC pin: Voedingsaansluiting (+5V).
- GND pin: Massa (0V).
- S0, S1 pinnen: Frequentieschaal-controle-ingangen.
- S2, S3 pinnen: Kleurfilter selectiepinnen.
- OUT pin: Frequentie-uitgang (vierkante golf).
- OE pin: Output enable bediening (actief bij LOW). Bij de meeste commerciële modules is deze pin intern verbonden met GND, waardoor externe bekabeling overbodig is. Is dit niet het geval, verbind de pin dan handmatig met GND.

Hoe het werkt
Om de sensor te bedienen moet u twee belangrijke parameters instellen: het actieve kleurkanaal en de signaalsterkte. Deze instellingen worden geregeld door pinparen:
Uitgangsschaal via S0 en S1:
- Beide LOW: power-down modus
- S0 LOW, S1 HIGH: 2% frequentieschaal
- S0 HIGH, S1 LOW: 20% frequentieschaal
- Beide HIGH: Volledige 100% schaal
Filterselectie via S2 en S3:
- Beide LOW: Rood kanaal actief
- S2 LOW, S3 HIGH: Blauw kanaal actief
- S2 HIGH, S3 LOW: Helder kanaal (ongefilterd)
- Beide HIGH: Groen kanaal actief
De OUT pin genereert vierkante golf signalen met een frequentie tussen ca. 2 Hz en 500 kHz. Hogere frequenties geven een sterkere lichtintensiteit van het geselecteerde kanaal aan. Met de Arduino-functie pulseIn() kan de pulsbreedte gemeten worden, die omgekeerd evenredig is: kortere pulsen betekenen helderdere kleuren. Na kalibratie worden de waarden omgezet naar de standaard RGB-schaal.
Maximaliseren van uitleesnauwkeurigheid
- Houd 1-3 cm afstand tussen sensor en doelobject, en zorg voor consistente positionering.
- Activeer de ingebouwde witte LED’s voor uniforme belichting.
- Verminder omgevingslichtinterferentie door de sensor af te schermen voor meer precisie.
Aansluitschema
Aansluitschema voor TCS3200 kleurensensor en Arduino:
| TCS3200 Color Sensor | Arduino |
|---|---|
| VCC | 5V |
| GND | GND |
| S0 | Pin 4 |
| S1 | Pin 3 |
| S2 | Pin 6 |
| S3 | Pin 5 |
| OUT | Pin 7 |

This image is created using Fritzing. Click to enlarge image
Arduino Code - Sensor Kalibratie via Pulsbreedte
Omgevingskalibratie is essentieel omdat de ruwe sensoroutput varieert met meerdere factoren: lichtintensiteit van ingebouwde LED’s, afstand tot het doel, eigenschappen van het oppervlak en omgevingsverlichting. Beschouw deze variabelen als meetruis. Kalibratie kwantificeert deze interferentie door minimum- en maximumwaarden per kanaal te bepalen, zodat een accurate omzetting naar de standaard 0–255 RGB-schaal mogelijk wordt voor uw specifieke opstelling.
Snelle Stappen
- Open de kalibratiecode in de Arduino IDE
- Upload deze naar uw Arduino board met de Upload knop
- Start de Serial Monitor om live uitlezingen te bekijken met Min/Max tracking
- Scan diverse objecten met de sensor: witte oppervlakken (papier), zwarte objecten, en verschillende gekleurde voorwerpen
- Observeer automatische updates van Min/Max-waarden bij het registreren van extremen
- Wanneer de waarden stabiliseren (meestal na 10-20 seconden), noteer dan alle zes kalibratieconstanten
Uit bovenstaande output zijn uw kalibratiewaarden bijvoorbeeld:
- RedMin = 42, redMax = 210
- GreenMin = 55, greenMax = 185
- BlueMin = 60, blueMax = 172
Arduino Code - RGB Kleurwaarden uitlezen
Snelle Stappen
- Zoek de kalibratievariabelen declaraties aan het begin van de code:
- Vervang ALLE zes nullen door de kalibratiewaarden uit de vorige oefening. Voorbeeldtoewijzing (met de kalibratieresultaten redMin = 42, redMax = 210, greenMin = 55, greenMax = 185, blueMin = 60, blueMax = 172):
- Upload de aangepaste code naar de Arduino
- Plaats een gekleurd doelobject voor de sensor
- Bekijk de RGB-uitvoer in de Serial Monitor
De RGB-waarden zijn nu gemapt op de standaard 0-255 schaal. Lagere pulsbreedtes (meer licht) leiden tot hogere RGB-waarden, hogere pulsbreedtes (minder licht) tot lagere RGB-waarden.
Toepassingen
Nu u RGB-waarden kunt uitlezen, kunt u projecten bouwen zoals:
- Kleurensorteerder: Sorteer objecten op basis van kleur (rood, groen, blauw)
- Kleurenmatch-spel: Controleer of twee objecten dezelfde kleur hebben
- Lijnvolger robot: Volg gekleurde lijnen op de vloer
- Kwaliteitscontrole: Detecteer defecte producten op basis van kleur
- Kleurgestuurde alarm: Activeer een buzzer of LED bij detectie van een specifieke kleur
Video Tutorial
We overwegen het maken van videotutorials. Als u videotutorials belangrijk vindt, abonneer u dan op ons YouTube-kanaal om ons te motiveren de video's te maken.