Manufactura industrial
Internet industrial de las cosas | Materiales industriales | Mantenimiento y reparación de equipos | Programación industrial |
home  MfgRobots >> Manufactura industrial >  >> Manufacturing Technology >> Proceso de manufactura

Tutorial de detección de color Arduino - Sensor de color TCS230 TCS3200

En este Tutorial de Arduino aprenderemos a detectar colores usando Arduino y el Sensor de Color TCS230/TCS3200. Puede ver el siguiente video o leer el tutorial escrito a continuación para obtener más detalles.

Cómo funciona el sensor de color TCS230 / TCS3200

El TCS230 detecta la luz de color con la ayuda de una matriz de fotodiodos de 8 x 8. Luego, utilizando un convertidor de corriente a frecuencia, las lecturas de los fotodiodos se convierten en una onda cuadrada con una frecuencia directamente proporcional a la intensidad de la luz. Finalmente, usando la placa Arduino podemos leer la salida de onda cuadrada y obtener los resultados para el color.

Si observamos más de cerca el sensor, podemos ver cómo detecta varios colores. Los fotodiodos tienen tres filtros de color diferentes. Dieciséis de ellos tienen filtros rojos, otros 16 tienen filtros verdes, otros 16 tienen filtros azules y los otros 16 fotodiodos son claros sin filtros.

Cada 16 fotodiodos están conectados en paralelo, por lo que usando los dos pines de control S2 y S3 podemos seleccionar cuál de ellos será leído. Entonces, por ejemplo, si queremos detectar el color rojo, podemos usar los 16 fotodiodos con filtro rojo configurando los dos pines en un nivel lógico bajo de acuerdo con la tabla.

El sensor tiene dos pines de control más, S0 y S1, que se utilizan para escalar la frecuencia de salida. La frecuencia se puede escalar a tres valores predeterminados diferentes de 100 %, 20 % o 2 %. Esta función de escalado de frecuencia permite optimizar la salida del sensor para varios contadores de frecuencia o microcontroladores.

Ahora estamos listos para continuar y conectar el sensor TCS230 a la placa Arduino. Aquí está el esquema del circuito.

Puede obtener los componentes necesarios para este tutorial de Arduino en los siguientes enlaces:

  • Sensor de color TCS230 TCS3200…….
  • Placa Arduino ………………………………
  • Placa de prueba y cables de salto ……… 
  •  

Código fuente del sensor de color TCS230

Descripción: Primero necesitamos definir los pines a los que está conectado el sensor y definir una variable para leer la frecuencia. En la sección de configuración, debemos definir los cuatro pines de control como salidas y la salida del sensor como una entrada de Arduino. Aquí también debemos configurar la escala de frecuencia, para este ejemplo, la configuraré en 20% e iniciaré la comunicación en serie para mostrar los resultados en el Monitor en serie.

En la sección de bucle, comenzaremos con la lectura de los fotodiodos filtrados rojos. Para ello pondremos los dos pines de control S2 y S3 a nivel lógico bajo. Luego, usando la función "pulseIn()", leeremos la frecuencia de salida y la pondremos en la variable "frecuencia". Usando la función Serial.print() imprimiremos el resultado en el monitor serial. El mismo procedimiento se aplica a los otros dos colores, solo necesitamos ajustar los pines de control para el color apropiado.

/*     Arduino Color Sensing Tutorial
 *      
 *  by Dejan Nedelkovski, www.HowToMechatronics.com
 *  
 */
 
#define S0 4
#define S1 5
#define S2 6
#define S3 7
#define sensorOut 8

int frequency = 0;

void setup() {
  pinMode(S0, OUTPUT);
  pinMode(S1, OUTPUT);
  pinMode(S2, OUTPUT);
  pinMode(S3, OUTPUT);
  pinMode(sensorOut, INPUT);
  
  // Setting frequency-scaling to 20%
  digitalWrite(S0,HIGH);
  digitalWrite(S1,LOW);
  
  Serial.begin(9600);
}

void loop() {
  // Setting red filtered photodiodes to be read
  digitalWrite(S2,LOW);
  digitalWrite(S3,LOW);
  // Reading the output frequency
  frequency = pulseIn(sensorOut, LOW);
  // Printing the value on the serial monitor
  Serial.print("R= ");//printing name
  Serial.print(frequency);//printing RED color frequency
  Serial.print("  ");
  delay(100);

  // Setting Green filtered photodiodes to be read
  digitalWrite(S2,HIGH);
  digitalWrite(S3,HIGH);
  // Reading the output frequency
  frequency = pulseIn(sensorOut, LOW);
  // Printing the value on the serial monitor
  Serial.print("G= ");//printing name
  Serial.print(frequency);//printing RED color frequency
  Serial.print("  ");
  delay(100);

  // Setting Blue filtered photodiodes to be read
  digitalWrite(S2,LOW);
  digitalWrite(S3,HIGH);
  // Reading the output frequency
  frequency = pulseIn(sensorOut, LOW);
  // Printing the value on the serial monitor
  Serial.print("B= ");//printing name
  Serial.print(frequency);//printing RED color frequency
  Serial.println("  ");
  delay(100);
}Code language: Arduino (arduino)

Ahora, si ejecutamos el Serial Monitor, comenzaremos a obtener algunos valores. Estos valores dependen de la escala de frecuencia seleccionada, así como de la iluminación ambiental.

Tenga en cuenta aquí que tres valores difieren debido a la diferente sensibilidad de cada tipo de fotodiodo, como se ve en el diagrama de respuesta espectral del fotodiodo de la hoja de datos del sensor.

Sin embargo, ahora veamos cómo reaccionan los valores cuando traigamos diferentes colores frente al sensor. Entonces, por ejemplo, si traemos el color rojo, el valor inicial bajará, en mi caso de alrededor de 70 a alrededor de 25.

Así que ahora, si queremos representar los colores detectados con el modelo RGB que tiene valores de 0 a 255, usaremos la función map() para mapear o convertir las lecturas a los valores de 0 a 255.

//Remaping the value of the frequency to the RGB Model of 0 to 255
  frequency = map(frequency, 25,70,255,0);

El valor de 70 se asignará a 0 y el valor de 25 a 255. El mismo procedimiento se aplica a los otros dos colores.

Aquí está el código fuente final para este ejemplo:

/*     Arduino Color Sensing Tutorial
 *      
 *  by Dejan Nedelkovski, www.HowToMechatronics.com
 *  
 */
 
#define S0 4
#define S1 5
#define S2 6
#define S3 7
#define sensorOut 8

int frequency = 0;

void setup() {
  pinMode(S0, OUTPUT);
  pinMode(S1, OUTPUT);
  pinMode(S2, OUTPUT);
  pinMode(S3, OUTPUT);
  pinMode(sensorOut, INPUT);
  
  // Setting frequency-scaling to 20%
  digitalWrite(S0,HIGH);
  digitalWrite(S1,LOW);
  
  Serial.begin(9600);
}

void loop() {
  // Setting red filtered photodiodes to be read
  digitalWrite(S2,LOW);
  digitalWrite(S3,LOW);
  // Reading the output frequency
  frequency = pulseIn(sensorOut, LOW);
  //Remaping the value of the frequency to the RGB Model of 0 to 255
  frequency = map(frequency, 25,72,255,0);
  // Printing the value on the serial monitor
  Serial.print("R= ");//printing name
  Serial.print(frequency);//printing RED color frequency
  Serial.print("  ");
  delay(100);

  // Setting Green filtered photodiodes to be read
  digitalWrite(S2,HIGH);
  digitalWrite(S3,HIGH);
  // Reading the output frequency
  frequency = pulseIn(sensorOut, LOW);
  //Remaping the value of the frequency to the RGB Model of 0 to 255
  frequency = map(frequency, 30,90,255,0);
  // Printing the value on the serial monitor
  Serial.print("G= ");//printing name
  Serial.print(frequency);//printing RED color frequency
  Serial.print("  ");
  delay(100);

  // Setting Blue filtered photodiodes to be read
  digitalWrite(S2,LOW);
  digitalWrite(S3,HIGH);
  // Reading the output frequency
  frequency = pulseIn(sensorOut, LOW);
  //Remaping the value of the frequency to the RGB Model of 0 to 255
  frequency = map(frequency, 25,70,255,0);
  // Printing the value on the serial monitor
  Serial.print("B= ");//printing name
  Serial.print(frequency);//printing RED color frequency
  Serial.println("  ");
  delay(100);
}Code language: Arduino (arduino)

Tenga en cuenta que los colores no son tan precisos, pero aún son lo suficientemente buenos para proyectos simples. Como otro ejemplo del sensor de color TCS230 en mi próximo video, aprenderemos cómo hacer una máquina clasificadora automática de color Arduino.

No dude en hacer cualquier pregunta en la sección de comentarios a continuación y no olvide consultar mi colección de proyectos Arduino.


Proceso de manufactura

  1. Sensor de luz Raspberry Pi:un tutorial sencillo de LDR
  2. Tutorial de bloqueo RFID de Arduino
  3. Monitoreo de CO2 con sensor K30
  4. ¿Qué tan alto eres?
  5. Sensor capacitivo de huellas dactilares con Arduino o ESP8266
  6. Torre de sensores de nubes Arduino
  7. Mezclador de colores Arduino RGB
  8. Mezclador de colores Arduino
  9. Color musical
  10. Tutorial del sensor de huellas dactilares Arduino
  11. Tutorial de Arduino 01:Primeros pasos