febrero 12, 2022

JLASER – Adaptador para sensor RGB

Written by

El sensor RGB que pensamos usar (TCS34725) no detecta el color cuando se le apunta con la luz del láser directamente. En estos casos se satura y los colores que devuelve son blanco o casi blanco, con las tres componentes al máximo. Este sensor no está preparado para recibir luz directa sino para ver una superficie de un color. El LED interno es para iluminar los objetos y verlos mejor.

La solución que pensamos es añadir un adaptador para que la luz no incida directamente sobre él y pueda verse reflejada.

De esta forma, creamos en OpenSCAD un adaptador de prueba para recibir la luz en ángulo recto, consistente en un tubo y un cilindro cortado a 45º.

Diseño del soporte para el sensor RGB

Imprimimos estas piezas y nos quedan así:

Piezas del soporte impresas

La superficie del cilindro a 45º debería ser blanca, para no alterar el color de la luz detectada. Además debería ser lo más satinada posible para no reflejar la luz. Probamos con varios tipos de papel pero no parecen adecuados. Al final lo que mejor resultado da es pintarla con corrector ‘tipex’:

Cilindro pintado de blanco

Y el conjunto construido , usando unos tornillos y tuercas M2.5:

Sensor RGB con el soporte

Ahora vamos a probar el sensor, a ver si nos da un resultado satisfactorio. Lo conectamos a un Arduino UNO y desactivamos el LED interno, para no falsear la medida.

Esquema de prueba del sensor con Arduino UNO

Preparamos el montaje, que nos queda de la siguiente manera:

Montaje del sensor para la prueba

Y el código que usamos es muy similar al del ejemplo que viene con la librería:

#include <Wire.h>
#include "Adafruit_TCS34725.h"

/* Example code for the Adafruit TCS34725 breakout library */
/* Connect SCL    to analog 5
   Connect SDA    to analog 4
   Connect VDD    to 3.3V DC
   Connect GROUND to common ground */

/* Initialise with default values (int time = 2.4ms, gain = 1x) */
// Adafruit_TCS34725 tcs = Adafruit_TCS34725();

/* Initialise with specific int time and gain values */
Adafruit_TCS34725 tcs = Adafruit_TCS34725(TCS34725_INTEGRATIONTIME_700MS, TCS34725_GAIN_1X);

void setup(void) {
  Serial.begin(9600);

  if (tcs.begin()) {
    Serial.println("Found sensor");
  } else {
    Serial.println("No TCS34725 found ... check your connections");
    while (1);
  }
}

void loop(void) {
  uint16_t r, g, b, c, colorTemp, lux;

  tcs.getRawData(&r, &g, &b, &c);
  colorTemp = tcs.calculateColorTemperature_dn40(r, g, b, c);
  lux = tcs.calculateLux(r, g, b);

  Serial.print("Color Temp: "); Serial.print(colorTemp, DEC); Serial.print(" K - ");
  Serial.print("Lux: "); Serial.print(lux, DEC); Serial.print(" - ");
  Serial.print("R: "); Serial.print(r, DEC); Serial.print(" ");
  Serial.print("G: "); Serial.print(g, DEC); Serial.print(" ");
  Serial.print("B: "); Serial.print(b, DEC); Serial.print(" ");
  Serial.print("C: "); Serial.print(c, DEC); Serial.print(" ");
  Serial.println(" ");
 
  if ((r>5000)&&(r>g)&&(r>b))
    Serial.println("rojo");
  if ((g>5000)&&(g>r)&&(g>b))
    Serial.println("verde");
  if ((b>5000)&&(b>r)&&(b>g))
    Serial.println("azul");
}

Probamos con los laser de los tres colores y el resultado es satisfactorio. Los tres producen valores de su componente muy alta sin subir mucho las componentes de los otros colores.

Prueba del sensor con láser rojo
Prueba del sensor con láser verde
Prueba del sensor con láser azul

Category : JUEGO LÁSER

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Proudly powered by WordPress and Sweet Tech Theme