SENSOR DE LUZ

( FOTOCELULA )


Sensor sensor de Luz - fotocelula - para LEGO MINDSTORM NXT


down-verde-flecha

Construiremos aquí un sensor de luz casero para NXT (fotocélula). Quizás no nos salga tan bonito como el original de MINDSTORM pero funcionará exactamente igual, con su led y todo. Bueno, incluso puede que funcione mejor, porque éste lo puedes configurar a tu gusto, en Detección Directa o en Barrera, para contar pelotitas de LEGO o coches de Scalextric cuando pasan por la meta.


Veremos también, a partir de este sensor, cómo construir una Lámpara LED, simplemente quitando la parte sensora.


Como última aplicación y al final del todo, construiremos un Inclinómetro Analógico, es decir, nos dirá exactamene los grados de inclinación.


FOTOCELULA DIRECTA

DESCRIPCION


Este sensor de luz recibe el nombre de fotocélula en la industria. Podemos encontrarlo en distintas configuraciones. Directos, como el de MINDSTORM, en el que emisor y receptor están en la misma carcasa. En barrera si emisor y receptor se encuentran en los extremos de una línea recta. La longitud de esa línea es el alcance del sensor o la distancia útil.


También en la industria los podemos encontrar con "espejo", un catadióptrico de los de bici en el extremo, en lugar del receptor.


Como te podrás imaginar, este es un sensor "activo", es decir, necesita ser alimentado para que funcione. Lógico, ya que lleva un LED. Tendremos que usar el cable verde por tanto, que proporciona 4,3V. También es necesario para su funcionamiento el cable amarillo. Su función es la de controlar el encendido/apagado del led.


MATERIAL


1 Cable de conexión al NXT con cable blanco, negro, amarillo y verde.

Un led de alta intensidad luminosa. Luz blanca y 3 mm diámetro.

Una resistencia de 68 ohm.

Una placa para ubicar los elementos.

Una resistencia LDR como la que ya hemos usado en el sensor de luz ambiente. Puede ser incluso más pequeña para pasar por un agujero de viga de LEGO y poder hacer así un montaje más fácil luego.

2 resistencias de 10K

Un transistor NPN 2SC2274 o equivalente. Por cierto, he probado con 3 NPN distintos que me han dado en la tienda y los 3 me han funcionado bien. Información adicional en Componentes.


MONTAJE


Primero pondremos el esquema serio (más o menos):


Circuito sensor de luz fotocelula LEGO Mindstorm NXT

Y ahora uno pintado un poco a mi aire, que quizás te ayude un poco.


Esquema sensor de luz fotocelula LEGO Mindstorm NXT

El segundo esquema pretende ser la representación de esto:


Foto sensor de luz fotocelula LEGO Mindstorm NXT c1584

NOTAS


Si lo único que quieres es controlar 1 LED (encender y apagar), quita el LDR y desconecta el cable blanco. Tendrás que modificar el programa para realizar esta tarea.


El LED tiene polaridad. Fíjate cual es la pata más corta para conectarla al transistor, que es único elemento del circuito con 3 patas. El extremo largo del LED será el que vaya a la resistencia que acaba en el cable verde.


Para montar el transistor tal como aparece en la foto e identificarlo correctamente debes tener en cuenta que mirandolo de cara, con el código en la parte de delante bien a la vista, la pata de la izquierda es la E, la de enmedio la C y la de la derecha la B.


Tienes más información pinchando en Componentes


Los otros elementos (LDR y resistencias) no tienen polaridad, por lo que puedes montarlos como quieras.


Una mejora necesaria para el sensor


Fíjate en la foto y verás que lo más a la derecha de todo es el sensor de Luz Ambiente que ya montamos en su momento. El cable blanco llega por un extremo y el negro por el otro. Este es el receptor de la luz.


Para que funcione más parecido a como lo hace el del NXT, será necesario que juntemos mucho más el receptor y el emisor (el LDR y el LED), tal como en el sensor original. Yo lo he montado así para que se vea mejor el circuito.


Para acercar el LDR,no tienes más que fijarte en la foto. Solo hay que sacarlo de su alojamiento, pincharlo al lado del led y volver a conectar los cables blanco y negro. La única precaución es que no lo conectes por error a un agujerito de los que ya estén conectados a otro elemento del circuito, como el transistor.


Hay una segunda mejora casi obligada derivada de la primera. Al encender el LED, le llegará luz directa al LDR. Si no lo aislamos el intervalo de valores que podamos leer será mucho más pequeño. O sea, variará de 500 a 700 de raw por ejemplo.


Si hacemos un pequeño cilindro con cartulina o mucho mejor, insertamos el LED en tubo de plástico termoretráctil, dejará de llegarle luz directa cuando lo encendamos. De esta forma el abanico de valores de raw se ampliará bastante, con lo que haremos al sensor más sensible (curiosa frase).


Foto sensor de luz fotocelula LEGO Mindstorm NXT c1588

PROGRAMA 1


Este programa mantiene encendido el LED mientras se mantiene pulsado el botón ENTER del NXT.


El sensor se controla igual que el original, con el bloque "Light Sensor". Simplemente lo que hace el programa es encender la luz y leer el valor del raw, que es la luz que le llega al sensor, tanto del LED como del entorno, exactamente igual que al original. Obviamente también lee el raw con el LED apagado, tal como hacía el sensor de luz ambiente.


Programa sensor de luz fotocelula LEGO Mindstorm NXT

Fíjate bien que el icono del sensor de arriba tiene activada la pestaña "Generate Light" y el de abajo no. Hay otras formas de programar esto mismo, pero esta es muy sencilla de entender y de probar.


Te dejo también la configuración del switch, que puede que sea lo único con alguna complicación. Prueba a cambiar el switch de su posición actual, "Pressed", a "Release" y luego a "Bumped", que vienen a ser: Pulsado, No pulsado y Pulsado + Soltado (de forma consecutiva), para ver las diferencias.


Configuración icono sensor de luz fotocelula LEGO Mindstorm NXT

Una última sugerencia. Verás que hay 2 iconos que están repetidos en el programa arriba y abajo. Es un ejemplo perfecto para practicar cómo se hace un "My Block". Si lo creas, te aseguro que te resultará muy útil para cada vez que tengas que presentar un valor en pantalla, no sólo en este programa.


Recuerda que hay un mini-tutorial de My Block.


PROGRAMA 2


Este programa enciende y apaga el LED a cada pulsación del botón ENTER del NXT, es decir, mantiene la luz encendida sin necesidad de mantener el botón pulsado.


Programa 2 fotocelula LEGO Mindstorm NXT

El primer icono de la variable "luz" (marcado con una bolita roja) está configurado en "Read". En la línea de abajo, la primera variable marcada con la bolita amarilla está en "Write" opción "False". El siguiente (bola verde), en Write/True. Los loops que están entre las variables (que no tienen nada dentro) en la línea de abajo son los siguientes:


Programa 2 fotocelula LEGO Mindstorm NXT

Hemos creado esta vez un programa algo diferente, con "2 líneas". La de abajo está constantemente comprobando la pulsación del botón naranja del NXT. Cuando se pulsa y suelta (bumped), el programa avanza y la variable "luz" cambia de Falsa a Verdadera. En la línea superior, introducimos el valor de esa variable en la entrada que controla en encendido y apagado del LED.


DIFERENCIAS CON EL SENSOR DE LUZ DEL MINDSTORM NXT


Aunque hace la mima función, no son exactamente iguales ambos sensores, el que hemos construido y el del NXT. La primera diferencia podría se la intensidad de la luz.


Hemos elegido para este montaje un LED pequeño, de 3 mm, de alta intensidad de luz. Con esto conseguimos leer mejor las diferencias entre colores, aunque recuerda que este sensor "ve" en escala de grises. El caso es que puedes camiar el LED por uno normal sin problemas. Lo único es que debes ajustar luego la resistencia de 68 ohm en consecuencia (en rojo en el esquema), pero no creo que cambie mucho el valor.


Lo que no debe ocurrir nunca es que el LED se caliente. Si sucede eso, es que está pasando demasiada corriente, y debes aumentar el valor de la resistencia. Para un LED "normal" es de 220 o 330 ohm, para que tengas una referencia. Si te pasas con el valor de la resistencia, lo único que pasará es que la luz del LED sea muy débil.


La segunda diferencia con nuestra propuesta de fotocélula es el color. Ya hemos comentado que no hay problema en cambiar el LED a otro color. A mi, el que mejor resultado me ha dado (mayores diferencias de raw entre encendido y apagado) es el blanco. Puedes cambiar también en función del color del objeto a detecar. Es cuestión de probar distintos LEDs según la aplicación que le quieras dar.


La sensibilidad del LDR a los distintos colores no es la misma que la del sensor de LEGO. El sensor de LEGO es más sensible a la luz infrarroja (la que emiten las bombillas incandescentes) que el LDR. Si quieres ver la parte positiva, el LDR es mucho más parecido al ojo humano.


Una tercera diferencia podría ser la versatilidad del montaje. Aparte de lo que acabamos de decir en cuanto a cambiar las características del LED, también podemos cambiar la configuración misma del sensor, es decir, podemos montar el LED y el LDR uno al lado del otro para medir la luz reflejada en el objeto, línea, etc o podemos montarlos uno enfrente del otro en forma de barrera.


FOTOCELULA EN BARRERA


Los circuitos y esquemas anteriores son exactamente los mismos, aunque hay algunas variaciones. Hay que prolongar los cables blanco y negro que se unen al LDR para que tengamos márgen de poner uno enfrente del otro, haciendo una barrera de luz entre ellos, como se ve en la imagen.


Otra variación respecto del anterior programa es que habrá que calibrarlo. Es decir, no es lo mismo poner el emisor y el receptor alejados 10 cm que ponerlos así:


Foto sensor de luz fotocelula barrera LEGO Mindstorm NXT c1586

Y he de decir que funciona. Como ejemplo, en el primer caso, alejando sólo 10 cm, las diferencias en el raw de cuando la luz está encendida a cuando está apagada fueron de 800 a 1000. Y cuando lo separé como en la foto, el raw varió de 986 a 1000, o sea, muy poco.


Lógicamente habrá que modificar el valor del programa del bloque "Compare" en una y otra situación. Aquí, el "Compare" es de 800 para el caso de estar cerca. Y he tenido que ponerlo a 1000 para el caso de la foto. Cada vez que pasemos la mano entre emisor y receptor, dará un pequeño pitido.


Programa sensor de luz fotocelula barrera LEGO Mindstorm NXT

También puede ser un contador de pelotitas, coches de escalextric...


Programa contador sensor de luz fotocelula barrera LEGO Mindstorm NXT

La configuración es la siguiente, por orden. No te olvides de activar la pestaña de la flecha roja (figura de abajo) para poder conectar luego el cable de la flecha negra (figura de arriba). Fijate que el primer "Compare" es un "Greater than" y el segundo, un "Less than".


Lo "complicado" es encontrar el numerito correto, a mitad camino entre el máximo y el mínimo de raw (o sea, con y sin luz), ya que la luz ambiente influye mucho.


En este ejemplo he puesto 900 en ambos, pero puede variar mucho, como en el NXT. Cuanta menos luz haya en la habitación, mejor funcionará. Normal, mejor será el contraste entre el LED encendido y apagado.


Los iconos de configuración están por orden de aparición, como en las películas.


Configuracion icono sensor de luz fotocelula barrera LEGO Mindstorm NXT

NOTAS


1. El RAW va "al revés" de la luz que le llega. Cuanta más luz, menos RAW. No te líes.


2. Para encontrar el número adecuado, puedes utilizar el programa para ver el RAW, tomar los datos con y sin luz y luego programar.


3. Si utilizas este montaje para contar elementos que se están moviendo, la luz debe estar constantemente encendida, con el correspondinte gasto de batería del NXT. Una opción es construir una pequeña linterna aparte, con 2 pilas de 1,5V, una resistencia y el led. Y como sensor, únicamente el LDR, como el sensor de luz ambiente.


4. Si el elemento (coche, canica, etc) pasa demasiado rápido, quizás no le de tiempo a contar. Una opción para solucionar esto sería montar no uno enfrente del otro como una barrera, sino emisor y receptor en diagonal con respecto al camino de la bolita, coche etc.


Con este montaje diagonal la bolita estará más tiempo cortando el haz de luz y podrá marcar. Si va muy muy rápido, habría que llevar esto al extremo, y montar emisor y receptor justo encima de la carretera. Así, la bolita estaría interrumpiendo la luz desde una curva hasta la siguiente.


Ese tramo recto, entre curva y curva, puede ser todo lo largo que quieras, y desaparecerá el problema del tiempo. De todas formas, esto es muy exagerado, el sensor es relativamente rápido.


5. Habrás visto en el programa que se repiten dos bucles en su interior casi iguales. El primero detecta cuándo la luz es superior al valor de comparación, es decir, cuando se hace más oscuro porque algo está cortando el haz de luz.


El segundo a la inversa. Detecta cuándo el objeto se ha ido. Prueba un programa sin el segundo bucle, tapa con la mano y verás qué pasa.


6. Existe un icono de calibración en el NXT-G. Es un fonendoscopio. Sirve para esto, para marcarle el máximo y el mínimo de luz que le llega. Por eso hay que poner 2 al principio del programa. Podrías tratar de incorporarlo al programa en lugar de "buscar" previamente el valor RAW. Así quedaría todo en un programa y no en 2.


Un último montaje que no he probado aún es con espejo. Sería poniendo emisor y receptor juntos y usando un catadióptrico de bici como barrera. Si esto funciona, permitiría también otro montaje adicional: formando un ángulo recto con el espejo entre emisor y receptor, a modo de "campo vallado". Pero ya te digo, esto no lo he probado.


USOS


Los usos pueden ser los mismos que los del sensor de luz original del NXT. Por ejemplo como sigue líneas encima de la "Hoja para pruebas" que viene en la caja del NXT. Por si no te has dado cuenta, la fotocélula en barrera es lo que se usa en las puertas de los ascensores. Otros usos mejorados ya los hemos visto a lo largo de la explicación, como contador por ejemplo.


IDEAS ADICIONALES


Si por algún motivo tu montaje lo requiere, podrías regular la intensidad de la luz del LED. Me temo que no es posible hacerlo con el software. La idea es añadir, a continuación de la resitencia de 68 ohm, un potenciómetro de 10K. Con esto, puedes regular la intensidad del LED a tu gusto.


Conectas la resistencia a la pata central del potenciómetro. Ahora uno de los extremos del potenciómetro al cable verde del NXT. El otro extremo del potenciómetro quedará sin usar. Y ya está, ya lo puedes regular.


No quites la resistencia, ya que al girar a tope el potenciómetro, el LED se quedaría desprotegido, sin ninguna resistencia y con el potenciómetro "apagado". Esto funciona sin ningún problema.


Otra mejora que podrías hacer es poner, en lugar del potenciómetro, o incluso a continuación de él, un interruptor o un pulsador como los que ya hemos utilizado en la sección de Un Sensor de Contacto.


La conexión se hace igual: un extremo a la resistencia y el otro al cable verde del NXT. Si lo que has puesto es un interruptor, harás que funcione igual que la lámpara de la salita cuando la apagas. Si has puesto un pulsador, funcionará como el timbre de casa, solo cuando lo pulses.


INCLINOMETRO ANALOGICO


A partir de los elementos que tenemos, podemos construir un Inclinómetro que a diferencia del que ya construimos en la otra sección, nos dará los grados de inclinación.


Para construirlo, aprovecharemos el montaje "en barrera".


La idea es construir una especie de péndulo con un LDR y un led, es decir, el montaje en barrera. El led estará siempre apuntando al LDR y siempre a la misma distancia, de forma que ambos estarán montados sobre el mismo conjunto de piezas.


Entre ellos dos y montados sobre distintas piezas, colocaremos un rectángulo de papel impreso con una escala de grises. Esto es:


Escala de grises para Inclinometro LEGO Mindstorm NXT

El péndulo hará oscilar el led y el LDR, que siempre estarán en posición vertical con respecto al suelo. La escala de grises se inclinará solidariamente con la superficie que estemos midiendo.


Cuando el sensor de luz esté completamente vertical, nos dará el color central de la escala. Según nos inclinemos a uno u otro lado, nos irá dando distintos valores, que traduciremos en ángulos.


Quedaría más o menos así:


Foto Inclinometro analogico para LEGO Mindstorm NXT c1801

Aquí se señala dónde va el LDR, lo más escondido de la luz ambiente que he podido. Las ruedas dentadas sólo sirven de soporte al papel, y giran libremente sobre el eje.


Foto Inclinometro analogico para LEGO Mindstorm NXT c1799

Aquí en posición inclinada. Tanto el led como el LDR están verticales y encarados uno al otro, aunque el LDR está debajo y no ve. Lo que se ve medio bien es la posición de la escala de grises.


Foto Inclinometro analogico para LEGO Mindstorm NXT c1795

up-verde-flecha
Dos LEDs de intensidad variable
Un sensor magnético
.