Autor Tema: Calibración de sensor de color TCS3200 (arduino)  (Leído 12514 veces)

0 Usuarios y 1 Visitante están viendo este tema.

Desconectado KILLERJC

  • Colaborador
  • DsPIC33
  • *****
  • Mensajes: 8242
Re:Calibración de sensor de color TCS3200 (arduino)
« Respuesta #15 en: 28 de Abril de 2017, 14:47:13 »
No Picuino, es cierto que existe muy buenos trabajos realizados con Arduino. Pero si observas la mayoria lo unico que hace es servir de intermedio entre la PC y aquello a comandar. Enviar/Recibir + como maximo un poco mas de codigo para el Arduino. Si te fijas hay mas tiempo de diseño en 3D, software de PC que la parte de electronica, aunque la hubieras realizado con un micro comun.

Pero adivina... Eso lo puede hacer cualquiera, cualquier programador. Solo sabiendo como conectarlo.
Pero que un Ingeniero en Electronica no sepa ubicar componentes, o que no sepa crear una una linea de transmision para su cablecito de ethernet es el problema. Por que esa persona luego lo unico que sabe es programar. Y tal ves se pueda dedicar enteramente a ello y jamas tocar el Hardware. Pero para un trabajo de final de grado donde se le pide que debe demostrar los conocimientos adquiridos en la carrera, ir y llevar una Placa NO realizada por vos, con modulos comprados NO realizados por vos. Y simplemente lo unico que hiciste ( ya que encima tenes las librerias para todos los sensores - que me parece genial -) es programar lo tuyo.

Tu segundo link es un "laboratorio" para enseñanza, genial enseñas mas que nada a programar y como esta realizado, pero nada mas.

¿Te parece que eso es lo que necesitas para evaluar a la persona?

Citar
¿Por qué hay tan mala opinión sobre las librerías de Arduino? Me encuentro con esa mala opinión sobre Arduino por todas partes y no lo entiendo. Nadie critica de esa forma las funciones de CCS o las librerías de Microchip que no son ni siquiera opensource.

Parece que nunca me leiste cuando hablo de CCS, Mirochip no me quejo porque son pocas las librerias que uso, se que PIC16 posee librerias y que no encontras el codigo lo cual eso si me quejo, pero PIC18 y lo demas esta todo, la mayoria de las funciones built in del compilador son delays o alguno que te facilita no tener que escribir 3 instrucciones en ves llamo a una funcion ( siempre son de proteccion de escritura ). Y lo otro es que no posee directivas fuera de lugar como CCS.

Mi unico problema con Arduino es eso, acepto peores trabajos de final de grado pero sin una placa Arduino encima.
Y siempre pensando en un producto final.

Y una cosa mas...

tesis doctorales, aca exigen mucho mas para alcanzar el titulo de doctor tengo entendido, eso parece mas un trabajo de final de grado. ( Obviamente el del medidor de caño es muy bueno)
« Última modificación: 28 de Abril de 2017, 14:49:21 por KILLERJC »

Desconectado manwenwe

  • Moderadores
  • PIC24H
  • *****
  • Mensajes: 2211
Re:Calibración de sensor de color TCS3200 (arduino)
« Respuesta #16 en: 28 de Abril de 2017, 17:57:42 »
Tesis doctoral con arduino? Sin palabras :?
Ojo por ojo y todo el mundo acabará ciego - Mahatma Gandhi -

Desconectado Picuino

  • Moderadores
  • DsPIC33
  • *****
  • Mensajes: 5892
    • Picuino
Re:Calibración de sensor de color TCS3200 (arduino)
« Respuesta #17 en: 29 de Abril de 2017, 04:11:57 »
Si alguien hace un mal trabajo con Arduino, el problema es del que hace el trabajo mal, no del entorno Arduino, que no tiene la culpa.
Lo mismo vale para CCS, XC o cualquier otro compilador, placa de desarrollo o shield.

En una cosa estoy de acuerdo. Si presentas una placa de desarrollo (Arduino o cualquier otra) y no fabricas ningún shield propio, no estás demostrando que sepas hacer un circuito con PCB.
Pero eso tampoco me parece motivo de crítica. No es tan difícil diseñar y hacer un PCB con un Atmel, no son muchos los trabajos donde tengas que hacerleo y hay muchos otros conocimientos que demostrar en la carrera.
Si te centras por ejemplo en un sistema de identificación de parámetros de máquinas eléctricas y no utilizas Arduino, todo va bien. Pero si se te ocurre añadir un arduino... ya piensan que el trabajo no vale nada.
Creo que hay un problema de prejuicios contra Arduino que no existe en otros entornos de desarrollo.

Un saludo.

Desconectado xocas

  • Administrador
  • PIC24H
  • *******
  • Mensajes: 2312
Re:Calibración de sensor de color TCS3200 (arduino)
« Respuesta #18 en: 29 de Abril de 2017, 10:10:55 »
ya logre solucionar el problema, después de muchas pruebas y unas cuantas horas de lectura, logre comprender por completo el funcionamiento de este sensor, puedo decir que este sensor da buenos resultados si el objeto esta a una distancia de aproximadamente un centímetro, si se mantiene siempre la misma distancia entre el sensor y el objeto y si se reduce al mínimo la luz externa. Gracias por atender este tema.
Una vez entendido el proceso se avanza bastante rápido...

La incidencia de luz externa es importante porque su componente de color será detectada también por el sensor. La luz de fluorescentes tiene una fuerte dominante verdosa, amarillo-naranja la luz de tungsteno y azul la luz solar (por la radiación UV).

Recuerdo tener buenos resultados a ~3cm con colores primarios y buena iluminación. En mi caso usé una guía de color Kodak con su respectiva carta de grises para la calibración, pero puedes partir de una cartulina blanca y ajustar sobre los colores que se vayan a usar.
Ten en cuenta que los colores de los objetos (cartulina, plástico, etc) se basan en tintas y no siguen el patrón RGB. El color amarillo del modelo RGB (R:255, G:255, B:0) es imposible conseguir mediante tintas. Haciendo la conversión en Photoshop al amarillo más próximo mediante tintas (CMYK) tengo R:240, G:222, B:33.

No sé que punto de precisión necesitas y no descarto que esta información te sobre, si te lo comento es porque en un principio te decía que este sensor tiene sus 'cosillas' y una de ellas es la falta de precisión.
El TCS34725 (del mismo fabricante) es más moderno, incorpora filtrado IR y hay una librería bastante completa para su uso con Arduino.

un saludo

Desconectado camilo1

  • PIC10
  • *
  • Mensajes: 13
Re:Calibración de sensor de color TCS3200 (arduino)
« Respuesta #19 en: 29 de Abril de 2017, 15:45:26 »
toda la razón, es bastante impreciso, por suerte en mi caso solo necesito que detecte 4 colores, mas precisamente necesito detectar el color de tapas plásticas que serán transportadas por una banda y para este fin el sensor funciona bien con la calibración necesaria y por algún motivo los resultados que obtuve a corta distancia fuera mas precisos con los valores RGB de los colores en las tapas

Desconectado Picuino

  • Moderadores
  • DsPIC33
  • *****
  • Mensajes: 5892
    • Picuino
Re:Calibración de sensor de color TCS3200 (arduino)
« Respuesta #20 en: 30 de Abril de 2017, 05:37:12 »
A la hora de identificar tonos, como te comento xocas, es más útil utilizar el modelo HSL:
https://es.wikipedia.org/wiki/Modelo_de_color_HSL

Aquí tienes cómo realizar la conversión RGB a HSL:
https://es.wikipedia.org/wiki/Modelo_de_color_HSL#Conversi.C3.B3n_desde_RGB_a_HSL

La variable H (Hue) en castellano es Matiz o Tono de color, que es lo que tú buscas identificar. Es un solo valor real que puedes comparar con un pequeño rango de valores para decidir si se trata del color que quieres.

Aquí una librería Arduino para realizar la conversión:
https://github.com/ratkins/RGBConverter/blob/master/RGBConverter.cpp


Código: C
  1. void RGBConverter::rgbToHsl(byte r, byte g, byte b, double hsl[]) {
  2.     double rd = (double) r/255;
  3.     double gd = (double) g/255;
  4.     double bd = (double) b/255;
  5.     double max = threeway_max(rd, gd, bd);
  6.     double min = threeway_min(rd, gd, bd);
  7.     double h, s, l = (max + min) / 2;
  8.  
  9.     if (max == min) {
  10.         h = s = 0; // achromatic
  11.     } else {
  12.         double d = max - min;
  13.         s = l > 0.5 ? d / (2 - max - min) : d / (max + min);
  14.         if (max == rd) {
  15.             h = (gd - bd) / d + (gd < bd ? 6 : 0);
  16.         } else if (max == gd) {
  17.             h = (bd - rd) / d + 2;
  18.         } else if (max == bd) {
  19.             h = (rd - gd) / d + 4;
  20.         }
  21.         h /= 6;
  22.     }
  23.     hsl[0] = h;
  24.     hsl[1] = s;
  25.     hsl[2] = l;
  26. }

Un saludo.
« Última modificación: 30 de Abril de 2017, 05:40:05 por Picuino »

Desconectado xocas

  • Administrador
  • PIC24H
  • *******
  • Mensajes: 2312
Re:Calibración de sensor de color TCS3200 (arduino)
« Respuesta #21 en: 02 de Mayo de 2017, 11:11:24 »
Le daré un ojo a los backups a ver si hay suerte y encuentro el código que usé en su día, pero no te garantizo nada porque era más un juego que otra cosa.

Recuerdo que para obtener buenos resultados la distancia al objeto tiene que ser muy corta y hay que evitar otra luz sobre el sensor que no sea la rebotada por el objeto.

Si encuentro algo te comento...

Bueno, no conseguí localizar el código, pero ya metido en faena busqué el sensor y estuve probando el código utilizado en el vídeo que puse en un mensaje anterior(*).

Me encontré el sensor con una arandela de goma (que seguramente usé para reducir la incidencia de luz ambiental), la típica junta de goma usada por fontaneros y que se puede localizar sin problemas en cualquier ferretería. No recuerdo si llegué a sacarle partido, ni siquiera recordaba su existencia...

Supongo que la idea la tomé de un módulo de TAOS:


He visto una idea parecida en módulos con TCS230 pero dudo que sean una buena solución. Al estar tan separados los leds, en distancias cortas el centro será una zona de sombra. No lo sé, me lo parece.


camilo1, ¿Quieres que haga algunas pruebas o ya lo das por solucionado?

un saludo

(*) pdf con código en este enlace.

Desconectado xocas

  • Administrador
  • PIC24H
  • *******
  • Mensajes: 2312
Re:Calibración de sensor de color TCS3200 (arduino)
« Respuesta #22 en: 02 de Mayo de 2017, 11:20:06 »
A la hora de identificar tonos, como te comento xocas, es más útil utilizar el modelo HSL:

Eso creo pero, en un caso como éste, si los colores están lo bastante separados, el resultado será prácticamente el mismo. No merece la pena complicar más el código.

saludo

Desconectado camilo1

  • PIC10
  • *
  • Mensajes: 13
Re:Calibración de sensor de color TCS3200 (arduino)
« Respuesta #23 en: 04 de Mayo de 2017, 02:36:55 »
problema solucionado, basto con calibrar el sensor bajo las condiciones que debe trabajar y funciona bien, no es un sensor que utilizaría para el proyecto de algún cliente pero para lo que estoy haciendo es mas que suficiente, les agradezco la ayuda.


 

anything