1 $ sensor de color.
Mis aventuras en la electrónica continúan. Mientras hablaba con un amigo sobre los colores, me habló de los sensores de color. Más tarde me acordé del video donde ordenan los smarties y por eso quise saber más. Viendo unos videos encontré uno con un led LDR y uno RGB. Dicen que no es preciso. Mirando las diversas versiones de esos sensores, supongo que parte de los problemas son el caso que mantiene todo unido. La mayoría tienen mucho espacio entre el LDR y la superficie de color, algunos tienen los leds delante del LDR... que no pueden funcionar.
Se debe evitar la iluminación directa del rgb. Para obtener un buen color homogéneo, coloco una pieza de plástico blanco semitransparente frente al Led.
El LDR solo debe recibir la luz reflejada. Coloque el sensor encima del plástico blanco. ¡La luz debe estar detrás del LDR!.
No puede funcionar para todo. Puede usarlo solo para superficies específicas. Por ejemplo, uso papel fotográfico brillante. Opaco probablemente sería mejor. pero tenía algo de papel fotográfico en la impresora, así que imprimí una paleta de colores y una paleta en blanco y negro.
Necesita saber más sobre Led y LDR. Ese es básicamente el problema. El rojo, el verde y el azul que emite el led no son 100% rojo, verde y azul. El LDR no puede absorber todos los colores a la perfección.
Sin buscar otros códigos, conecté este lápiz con sensor de color al arduino... y medí cuánto tiempo necesita para encender los distintos colores. Terminé con 50 ms para cada color. Hecho eso, solo dejo que el LDR imprima algunos valores en la pantalla. Blanco y negro... ¿cuánto rango tengo de negro a blanco? Escribí un código donde autocalibra el blanco y negro. Básicamente, medí la absorción de luz en el papel fotográfico en blanco y negro previamente impreso. De hecho, me impresionó cuánto alcance podría tener. Del rango total de 1023 disponibles en el arduino, elegí un negro de alrededor de 30-50 en todos los colores y un blanco de alrededor de 700. Eso significa que el sensor de color tiene una precisión teórica de, digamos un rango promedio de 650 en cada color, 650*650*650 =274.625.000, alrededor de 270 millones de colores. Eso es mucho...rgb tiene 16 millones de colores. Personalmente conozco unos 5-6 colores. En ese momento comencé a probar. para que sea sencillo coloqué otro led rgb en la placa y una caseta de plástico blanco en el led. Los colores aparecían ya similares pero con mucha luminosidad. También en superficies oscuras encendí el led. Luego reduje el rango a aproximadamente un 10 % en la parte inferior y un 10 % en la parte superior. Y guau... el color se ve igual. Pero veamos los números. Imprimir los valores rgb en la pantalla dio números diferentes a los que medí... pero abrir un selector de color rgb en la pantalla y mostrarlo... mostró aproximadamente el color correcto... así que en realidad fue muy correcto. Incluso si mi impresora es una fotoimpresora no significa que los colores se impriman correctamente. Nunca calibré una impresora o un monitor... Entonces puede haber una gran diferencia. Así que traté de calibrar los distintos colores según la paleta impresa. Encendí la luz roja y disminuí el rango de verde y azul a 0 mientras estaba en rojo... lo mismo para verde y azul. Finalmente encontré los problemas reales. El rojo es casi perfecto. El azul está ligeramente desplazado hacia el rojo. ¿El green no tiene suficiente luz? Cuando estoy en verde, necesito poner los niveles de rojo y azul muy bajos. Pero hacer eso reduce mucho la precisión. Obtengo rojo perfecto (255,0,0), azul (0,0,255), verde (0,255,0), amarillo (255,255,0), fucsia (255,0,255), aguamarina (0,255,255). el rango de cada color se reduce tanto que al final probablemente solo pueda medir alrededor de 10-15 colores principales. ¿El green no tiene suficiente luz? Cuando estoy en verde, necesito poner los niveles de rojo y azul muy bajos. Pero hacer eso reduce mucho la precisión. Obtengo rojo perfecto (255,0,0), azul (0,0,255), verde (0,255,0), amarillo (255,255,0), fucsia (255,0,255), aguamarina (0,255,255). el rango de cada color se reduce tanto que al final probablemente solo pueda medir alrededor de 10-15 colores principales. ¿El green no tiene suficiente luz? Cuando estoy en verde, necesito poner los niveles de rojo y azul muy bajos. Pero hacer eso reduce mucho la precisión. Obtengo rojo perfecto (255,0,0), azul (0,0,255), verde (0,255,0), amarillo (255,255,0), fucsia (255,0,255), aguamarina (0,255,255). el rango de cada color se reduce tanto que al final probablemente solo pueda medir alrededor de 10-15 colores principales.
¿Cómo podría calibrar un sensor de color de 1 $?
Cada color de LED se desplaza ligeramente.
El verde no emite suficiente luz.
Mi impresora no imprimió los colores correctos.
El LDR no lee todos los colores correctamente (longitud de onda, luz...)
Creo que en algún lugar hay un cálculo matemático que permite el cambio virtual de cada color.
Publiqué esto aquí porque es una gran pregunta que necesita los conceptos básicos de ingeniería electrónica. Si bien creo que la mayoría de los problemas podrían resolverse con una función matemática compleja, podría estar equivocado y resolver el problema con una simple atenuación del LED, agregando más LED, tal vez filtrando la fuente de luz o simplemente moviendo el sensor hacia arriba o hacia abajo dentro del tubo. que tal solo cambiando las resistencias?. En todos los casos se necesita un ingeniero electrónico. La forma en que los LED emiten la luz y el sensor la absorbe tiene que ver con la longitud de onda individual... no soy ingeniero electrónico.
Creo que también vale la pena preguntar por el hecho de que los sensores de color normalmente no son tan baratos.
Está intentando asignar un triplete de valores (las respuestas del LDR a sus LED RGB) a otro triplete (los valores RGB que usó para imprimir los colores en el papel). Hay muchos valores ambientales que influirán en este mapeo. En mi opinión, lo mejor que puedes hacer es
Asegúrese de que cada LED proporcione un efecto decente y comparable. Dependiendo de sus LED y la sensibilidad de su LDR a los distintos colores, esto podría significar que debe usar diferentes corrientes (resistencias en serie) para los LED.
Establezca los valores de calibración para sus colores (como lo ha hecho) y utilícelos para 'linealizar' los valores R, G y B.
Limite los efectos externos al mínimo. (Parece que has hecho esto)
Yo uso exactamente esto como un ejercicio para mis alumnos. Tengo reputación de no ser fácil con mis alumnos. Aprueban cuando pueden distinguir de manera confiable 3 colores :) Una hoja de esa tarea:
1) En realidad, no necesita saber los voltajes exactos para cada color. Simplemente elija un conjunto práctico de números y quédese con él. Lo más probable es que esté utilizando un solo voltaje para los 3 LED, con una resistencia diferente para cada color. No tienes que usar la misma resistencia para cada LED. En particular, puede usar una resistencia más pequeña en el verde para obtener más brillo. ¿Cuán pequeño? Eso dependerá del LED, y DEBE aprender a calcular la relación entre voltaje, corriente y resistencia. Se llama Ley de Ohm, y esta respuesta no es el lugar para comenzar a enseñarla.
2) Tampoco necesita saber la respuesta exacta para el LDR. Todo lo que necesita saber es la respuesta relativa para diferentes niveles de luz de cada color. Puedes hacer esto calibrando tus respuestas. Ya que estás usando un Arduino, no solo enciendas y apagues los 3 LED, como lo estás haciendo ahora. En su lugar, PWM para obtener diferentes niveles de luz y use un objetivo blanco "estándar" (es estándar porque usted dice que lo es, es SU estándar). Conduzca los LED con diferentes niveles de luz, igual al ciclo de trabajo PWM, y registre la salida LDR. Los LDR son bastante lentos. Recomiendo aumentar el tiempo de encendido para cada color a 0,1 segundo y tomar la lectura de LDR al final de ese tiempo. A partir de esto, puede configurar una tabla de cuánta luz en un color dado corresponde a cada lectura de LDR.
3) Puede usar su LDR para calibrar sus LED de salida. Encienda el LED de salida en su LDR (asegurándose de mantener la luz ambiental fuera con una funda alrededor de ellos). Lleve los LED de salida a diferentes niveles y registre la salida LDR. Puede usar esto para compensar la salida de modo que para una lectura de LDR de sensor dada, obtenga la misma lectura cuando el LDR está mirando la salida.
4) Finalmente, nunca puede obtener una respuesta perfecta en el mundo real, especialmente con su configuración. Considere lo que sucedería si su muestra de color fuera un amarillo puro. Refleja solo amarillo, por lo que no responderá a ninguno de sus tres LED y el sensor informará que es negro. En este caso, es bueno que sus LED no sean de colores puros y que muy pocos materiales reales tengan una reflectancia de color súper pura. Por lo que vale, el ojo humano tampoco tiene receptores de color extremadamente selectivos. Desde http://en.wikipedia.org/wiki/Color_vision puede ver que hay mucha superposición de color entre los tres tipos de receptores. Y para hacer la vida más interesante, hay algunos colores que simplemente no se pueden reproducir con LED de 3 colores, por ejemplo, marrón.
geométrico
coco
coco
coco
Spehro Pefhany
coco
mate joven