Cómo conectar sensores ópticos en Arduino y tal…
¡Rufián por acá! Seguramente hayas oído hablar de robots que siguen líneas de color negro. ¿Cómo lo hacen? Con sensores ópticos. Y de eso hablamos hoy.
Los sensores ópticos no son más que otro tipo de sensores. Tienen dos partes: una que lanza una serie de rayos infrarrojos y otra que los recibe. Los más famosos en el mundo Arduino son los TCRT5000 porque son baratos a rabiar. Aunque la verdad es que de precisión no andan muy finos. Físicamente se ve que tienenuna parte negra y otra azul, esas son las dos partes del circuito.
Hoy voy a utilizar un sensor un poco más pijo (y caro) que es el QRD1114. Pero bueno, cómo son muy parecidos te explicaré la única diferencia seria que hay con uno y otro. Porque claro, al final son el mismo tipo de sensor y funcionan con la misma tecnología 😉
¿Cómo funciona un sensor óptico?
Ya te he comentado que los sensores ópticos se dividen en dos partes. Exactamente en un emisor y un receptor. El emisor es un led que emite infrarrojos. El receptor es un fototransistor. Lo primero está claro, ya sabes lo que es un led y supongo que los infrarrojos sabes de sobra lo que son. Lo segundo… ¿Qué es un fototransistor?
Un fototransistor es una cápsula que deja pasar la luz y ataca un transistor (En este caso es negro para intentar captar solamente los infrarrojos y que no entre el resto de luz). Un transistor es algo que se utiliza mucho en electrónica. Sus usos son muchos, lo que hace es cambiar su corriente de entrada para modificar la salida. La verdad es que los transistores son un verdadero jaleo porque sirven para muchas cosas y encima tienen tres extremos (emisor, colector y base) que depende de cómo los conectes se comportan de una manera u otra. Vamos que esto da para una clase magistral. Mejor voy a contarte lo básico de estos sensores 😉
¿Cómo funcionan? El led emite algo que no podemos ver (los infrarrojos y tal) y esa luz en un principio se pierde en el espacio. Si se coloca algo encima del led lo que sucede es que estos infrarrojos golpearán y rebotarán, llegando al fototransistor y cambiando la corriente de éste. Así sabremos si hay algo cerca o no. En cuanto a la distancia aceptada, el TCRT5000 acepta una distancia entre 3 y 15 mm pero el QRD1114 detecta bien distancias algo menores.
Para saber esto, cómo siempre, hay que acabar yendo al datasheet. La última vez te dije que podías buscar el datasheet en Google. Hoy, así como quien no quiere la cosa, te presento Octopart. Que no es más que un catálogo de componentes. Te permite ver los precios de las distintas tiendas y comprar lo que quieras, además de tener el datasheet en la esquina superior derecha. Entiendo que si compras desde esa web ellos ganarán algunos centimillos, pero vale la pena hacerlo para que cuiden la pedazo de base de datos que tienen.
Conectando el QRD1114
Vamos al meollo del asunto. ¿Ves esa flecha hacia abajo? Eso es el led infrarrojo. Si te fijas, hay como un rayo que sale del led y va a parar al transistor. Digamos que el rayo del led pega en esa parte plana que ves. Eso se llama base del transistor. La flecha siempre indica el emisor y el que te queda es el colector. En este caso, cómo la flecha va hacia afuera es un transistor NPN, si fuese hacia adentro sería PNP. Digamos que son distintos tipos de transistores.
Para la conexión no se puede hacer directamente. Sino que se le añaden unas resistencias a cada uno de estos componentes. En la parte del emisor, añadiremos una resistencia de 220 Ohms y en la parte del receptor algo más grande, una de 10K. ¿Y esto porqué?
Bueno, vamos con el led infrarrojo. Al final es lo mismo que te expliqué para un led normal. Separamos la imagen de antes en solo el led (la flecha) y conectamos el extremo que tiene un 3 a 5 Voltios y el extremo que tiene un 4 a 0 Voltios o GND. Además, añadimos una resistencia antes de llegar al led. Algo como esto:
Tenemos un voltaje de 5 Voltios y, según el datasheet, una pérdida de 1.7 Voltios. Así que será algo como esto:
Una vez con esto, solo faltará conocer el valor de la resistencia. Que será la famosa ley de Ohm:
Sabiendo que Arduino nos da unos 20mA de Intensidad, sacamos que la resistencia debe de ser de 165 Ohms o superior. Superior porque con una resistencia menos la intensidad subiría y se quemarían cosas 🙁
Esto lo puedes ver si despejas la intensidad, la resistencia se queda bajo de manera que cuando sea más pequeña, dividirá menos y la corriente se hará mayor. Total, que la resistencia que toca es la de 180 Ohms. Yo, como me parece un pateo ir hasta la tienda a por una utilizaré una de 220 Ohms, que es la que tengo por aquí.
Ahora le toca a el fototransistor. Para el fototransistor tenemos este circuito:
De manera que la resistencia tendría que ser lo bastante decente como para poder aguantar la caída de los 5 Voltios a una corriente de 20mA. Esto es una resistencia muy poca cosa. Es lo que llamamos una resistencia pull-up. Por lo general a éstas se le pone una resistencia 4K7.
En este caso yo he utilizado una de 10K. La razón es porque es la que tenía. Aunque también dicen que estos fototransistores tienen más sensibilidad a resistencias mayores. La verdad es que no he hecho la prueba, tiene sentido pero no he hecho la prueba. Pero te dejo el vídeo donde sí hacen la prueba con un transistor transparente que deja pasar la luz. El del QRD1114 es negro para evitar que pase la luz normal y forzar a que solo pase la infrarroja.
Por lo que nuestro circuito al final quedaría así:
Funcionamiento del sensor óptico
El funcionamiento no es otro que, cuando no hay rayo el transitor está cerrado, de esta manera lo que llega a la salida es casi 5 Voltios. Claro, al estar cerrado le llega lo que yo le he ofrecido, los 5 Voltios. Cuando se acerca algo, el valor depende del color. Si es negro, el transistor se queda abierto por lo que , aunque hay algunas pérdidas, el valor se queda en HIGH (alrededor de los 3.6 Voltios). Por otra parte, si lo que acercamos es de color blanco, la tensión cae a casi 0 Voltios.
O sea, tendremos siempre un HIGH que, al acercarse a algo blanco se convertirá en un LOW. Te dejo aquí el código para poder leer el valor de la tensión en el pin analógico 0. Ten en cuenta que conecto el cable desde este pin 0 a el punto que une la resistencia de 10K con el transistor.
float dato = 0; void setup() { Serial.begin(9600); } void loop() { dato = analogRead(A0)*5; dato = dato/1023; Serial.println(dato); delay(1000); }
Pero bueno, puede que esto no sea de tu gusto. Puede que estés pensando: ojalá el blanco fuese HIGH y el negro LOW. Pues, antes te he dicho que utilizaba una resistencia de pull-up. Se puede convertir en una de pull-down en un periquete. Tan sólo debes de cambiar la resistencia a dónde tenias GND en el transisitor (negro) y conectar la resistencia a GND. Luego, los 5 Voltios los conectarás a la patilla número 1 y la conexión a Arduino la pondrás en en punto en que la resistencia y el transistor se unen.
Ufff que lio. En definitiva lo que quiero decir es esto:
Si pruebas ahora con el código que te di antes lo que verás es que de primeras la resistencia de pull-down consigue que el valor sea casi 0 Voltios. Al poner algo negro el Voltaje sube hasta 2 Voltios y al poner algo blanco sube a casi 5 Voltios. Es la misma situación que antes pero a la inversa.
Información básica sobre Proteción de datos
Responsable ➥ Sergio Luján Cuenca
Finalidad ➥ Gestionar el envío de correos electrónicos con artículos, noticias y publicidad. Todo relacionado con los temas de rufianenlared.com
Legitimación ➥ Consentimiento del interesado
Destinatarios ➥ Estos datos se comunicarán a MailRelay para gestionar el envío de los correos electrónicos
Derechos ➥ Acceder, rectificar y suprimir los datos, así como otros derechos, como se explica en la política de privacidad
Plazo de conservación de los datos ➥ Hasta que se solicite la supresión por parte del interesado
Información adicional ➥ Puedes encontrarla en la política de privacidad y el aviso legal
Diferencias con TCRT5000
Bueno, ha llegado el momento de la despedida pero antes… ¿Cuál es la diferencia de este componente con el TCRT5000? Básicamente que el transistor está a la inversa. Si te fijas en la imagen que hay en el datasheet del componente me entenderás:
Si miras el transistor, verás que en el caso del TCRT5000 el emisor está en la parte de abajo (recuerda, el emisor es el que tiene la flecha) mientras que en el QRD1114 está hacia arriba. Esto hace que algo cambie.
Aunque parezca un lío al mirarlo te recomiendo que conectes el TCRT5000 exactamente igual que el QRD1114 y luego cambies la parte del led a la inversa. GND y la resistencia se cambian de posición. Y ya está. Sino, puedes mirar lo que he hecho antes y darle la vuelta visualmente, que siempre puede ser más curro y puedes llegarlo a entender mejor.
Y nada, a ver si me dejas algún comentario ahí debajo que me siento muy sólo últimamente. ¡Y dale a los botones de compartir a ver si hay alguien que se anima a hacer sus propias cosas con esto!