Descripción
El TCS3200 es un sensor de color que puede detectar y medir una amplia gama de colores visibles. Funciona utilizando una matriz de8x8 fotodiodos con filtros de color y emite una señal de frecuencia que varía según la intensidad del color detectado.
- Alta resolución de conversión de luz a frecuencia: Esto permite que el sensor detecte pequeñas variaciones en la intensidad del color.
- Frecuencia de salida programable: Puedes ajustar la escala de frecuencia para diferentes aplicaciones.
- Comunicación directa con microcontroladores: Gracias a sus salidas digitales, se puede conectar fácilmente a un Arduino u otros dispositivos.
- Coeficiente de temperatura: 200 ppm/°C, lo que muestra su estabilidad en diferentes condiciones ambientales.
Especificaciones
Voltaje de alimentación | 2.7V a 5.5V DC |
Corriente de funcionamiento | 25mA |
Temperatura de funcionamiento | -45°C a 85°C |
Error de no linealidad | 0.2% a 50KHz |
Coeficiente de temperatura | 200ppm/°C |
Prueba del TCS3200 con Arduino Nano
1
1. Conexiones físicas
Para conectar el TCS3200 a un Arduino, necesitarás configurar los pines S0 y S1 para seleccionar la escala de frecuencia de salida y los pines S2 y S3 para seleccionar el filtro de color. La salida es un pulso cuya frecuencia cambia de acuerdo al color detectado, y esta señal puede ser leída por el Arduino para determinar el color.
Conecta el sensor TCS3200 al Arduino Nano de la siguiente manera:
TCS3200 | Arduino NANO |
S0 | D4 |
S1 | D5 |
S2 | D6 |
S3 | D7 |
Out | D8 |
GND | GND |
Vcc | +5V |

2
2. Librería y Código
// Conexiones con Arduino y TCS230 o TCS3200
#define S0 4
#define S1 5
#define S2 6
#define S3 7
#define sensorOut 8
// Almacena la frecuencia leida por los fotodiodos
int redFrequency = 0;
int greenFrequency = 0;
int blueFrequency = 0;
void setup() { // Configurar las salidas
pinMode(S0, OUTPUT);
pinMode(S1, OUTPUT);
pinMode(S2, OUTPUT);
pinMode(S3, OUTPUT);
// Configurar sensorOut como entrada
pinMode(sensorOut, INPUT);
// Configurar escalado de frecuencia a 20%
digitalWrite(S0,HIGH);
digitalWrite(S1,LOW);
Serial.begin(9600);// Iniciar comunicación serial
}
void loop() { //Seleccionar fotodiodos con filtro Rojo para ser leidos
digitalWrite(S2,LOW);
digitalWrite(S3,LOW);
redFrequency = pulseIn(sensorOut, LOW); //Leer la frecuencia de salida
Serial.print("R = ");
Serial.print(redFrequency);//Mostrar el valor de Rojo
delay(100);
// Seleccionar fotodiodos con filtro Verde para ser leidos
digitalWrite(S2,HIGH);
digitalWrite(S3,HIGH);
// Leer la frecuencia de salida
greenFrequency = pulseIn(sensorOut, LOW);
Serial.print(" G = ");
Serial.print(greenFrequency); //Mostrar el valor de Verde
delay(100);
// Seleccionar fotodiodos con filtro Azul para ser leidos
digitalWrite(S2,LOW);
digitalWrite(S3,HIGH);
// Leer la frecuencia de salida
blueFrequency = pulseIn(sensorOut, LOW);
Serial.print(" B = ");
Serial.println(blueFrequency); //Mostrar el valor de Azul
delay(800);}
2. Resultado
Mientras cambiamos el enfoque del sensor entre los colores rojo, verde y azul veremos cómo los valores de cada uno van variando de acuerdo a punto donde demos el enfoque y la cantidad proporcional en cada uno.

