VIDEO 16: Sensores de Infrarrojos (IR) - Obijuan/digital-electronics-with-open-FPGAs-tutorial GitHub Wiki
Vídeo
Haz click en la imagen para ver el vídeo en Youtube
Descripción
Los sensores de infrarrojos nos permiten detectar objetos a corta distancia. Aprenderemos a manejarlos y los usaremos para dotar al robot icebot de su primer comportamiento reactivo
¡Icestudio 0.3.2!
Hemos liberado hace muy poco Icestudio 0.3.2. La que estábamos usando antes era la 0.3.2-Beta. Por favor, actualizarse a esa versión. La colección empleada en este tutorial está hecha con esta versión, y en las anteriores no se verá correctamente
Colección
Academia-Jedi-HW-16.zip: Colección para este tutorial. Descargar e instalar
Contenido
- Introducción
- Sensores IR
- Modelos de sensores
- Practicando con el sensor octopus IR
- Comportamientos reactivos con el Icebot
- Ejercicios propuestos (25 Bitpoints)
- Ejercicios entregados
- Autor
- Licencia
- Enlaces
- Preguntas frecuentes
Introducción
En este tutorial practicaremos con un sensor nuevo: el sensor de IR digital, de corto alcance, que nos permitirá detectar objetos a corta distncia, así como distinguir el color negro del blanco en una superficie plana. Así es como nos queda el mapa de periféricos que hemos tratado hasta ahora
Sensores IR
Los sensores de infrarrojos (IR) que usaremos nos permiten detectar la presencia de un objeto que está delante de ellos, a un centímetro aproximadamente. Constan de un emisor y un receptor
El emisor es un LED infrarrojo. Es un LED de los que ya conocemos, pero en vez de emitir luz visible, la emite en el espectro infrarrojo, que no nuestros ojos no pueden ver. El emisor está constantemente emitiendo, cuando el sensor está alimentado. Esto lo podemos observar mirando el sensor a través de la cámara de nuestro teléfono móvil: se puede a preciar un color azulado/violeta:
El receptor es un fototransistor, que se activa cuando recibe luz infrarroja. La detección de objetos se hace por reflexión. La luz infrarroja que está constantemente generando el emisor se refleja en el objeto y llega al receptor, que nos devuelve un 1 (objeto detectado). Si por el contrario no hay objeto, la luz infrarroja se pierde y no regresa al receptor. En este caso el sensor nos devuelve un 0 (Objeto no detectado)
Estos sensores también se pueden utilizar para distinguir el blanco del negro en una superficie plana, y construir así robots que puedan por ejemplo seguir un camino negro. Cuando el sensor está sobre blanco, la luz del emisor se refleja completamente, devolviéndo un 1. Cuando esta sobre la parte negra, no hay reflexión. El negro absorbe la luz, y no la refleja, por lo que no llega nada al receptor y devuelve un 0
Modelos de sensores
Los sensores de IR que utilizaremos en este tutorial son digitales. Devuelven 0 ó 1 dependiendo de si detectan el objeto o no. Cualquier de estos valdría: (y si buscas por internet encontrarás todavía más)
Foto | Nombre | Descripción |
---|---|---|
![]() |
Octopus Hunt sensor | Este es el modelo que estoy usando en el tutorial. Está fabricado por Elecfreaks. Es el que se encuentra en los kits de robótica de BQ |
![]() |
Módulo sigue líneas mblock | Es el sensor del kit del robot mbot. Incluye 2 sensores IR en la misma placa. Hay que soldarle pines para conectar a la Icezum Alhambra |
![]() |
TCRT5000-ir | Compatible con la Icezum Alhambra. Permite también lectura analógica. Distribuido por Iberobotics |
![]() |
TCRT5000-IR-estrecho | Modelo estrecho. Compatible con Icezum Alhambra. Distribuido por Iberobotics |
![]() |
Sensor QTR-8RC | Tira de 8 sensores IR. Se puede partir en dos grupos de 2 y 6 sensores. Hay que soldarle los pines. Distribuido por BricoGeek |
![]() |
Sensores IR del kit Beduino | Kit distribuido por Logix5 |
Practicando con el sensor Octopus IR
El sensor que usaremos para las pruebas es el Octopus IR
Conexión a la Icezum Alhambra
La conexión del sensor a la placa Icezum Alhambra se hace igual que los sensores que hemos visto hasta ahora: mediante un cable de tres hilos (señal, 5v y masa)
Por un lado se conecta al sensor, y por el otro a cualquiera de los pines de datos con alimentación de la placa (D0 - D13). En esta foto está conectado a D13:
¡Y ya está listo! Ahora funciona exactmente igual que un pulsador externo
Ejemplo 1: Encendiendo un LED al detectar presencia
Vamos a probar el sensor. El circuito más sencillo posible que nos permite probarlo es el mismo que en el caso del pulsador: un cable que vaya directo desde el sensor IR a un LED externo. De esta forma, cuando el sensor detecte un objeto, devolverá un 1 que hará que se encienda en LED. Cuando no detecta objeto, devolverá 0 y el LED estará apagado
El montaje es el mostrado en la siguiente foto. El sensor está conectado a la entrada D13, y el LED a la salida D12
El circuito en Icestudio es el siguiente. Está accesible también desde la colección Academia-Jedi-HW-16.zip, en el menú Archivo/Ejemplos/1-Ejemplos/1-Senosr-IR-LED
Lo cargamos en la placa para probar. Al pasar un objeto, a una distancia de 1 cm aproximadamete, vemos que se enciende el LED
Ejemplo 2: Emitiendo pitidos al detectar objetos
Ampliamos el montaje anterior añadiendo un zumbador conectado a la salida D11
Haremos que pite al detectar un objeto, además de encenderse el LED. El circuito en Icestudio ya lo sabemos hacer. Sería así:
Se ha añadido un corazón de 2Khz, para emitir un pitido a esa frecuencia. Va modulado por la señal procedente del sensir IR. Cuando no hay objeto, por el sensor llega un 0 que deshabilita la señal de 2Khz, por lo que al zumbador sólo le entra una señal con todo ceros, y no suena. Al detectarse un objeto, la señal de corazón llega al zumbador y pita
Cargamos el circuito y lo probamos. Funcionará igual que en el ejemplo 1, pero ahora además sonará un pitido que se mantendrá mientras tengamos el objeto delante del sensor
En este Vídeo de youtube se puede ver un ejemplo de funcionamiento
Este ejemplo es muy sencillo, pero muy divertido. Suena como los escáneres que hay en las cajas de los supermercados. De hecho, cuando mi hija Alicia de 8 años vió este ejemplo por primera vez, exclamó: "¡Papi! Vamos a jugar a los supermercados" :-)
Ejemplo 3: Pitidos con spinner
La cosa se pone más divertida si al montaje anterior, usando el mismo circuito, añadimos un spinner de tal forma que sus brazos pasen por encima del sensor IR
Ahora si le damos vueltas al spinner, se escucharán pitidos continuamente, cada vez que los brazos atraviesan el sensor IR
En este vídeo de youtube se puede ver en acción:
Ejemplo 4: Detección blanco - negro
Este tipo de sensores son muy útiles para detectar el color negro sobre el blanco en superficies planas. Y así podemos crear robots rastreadores, capaces de seguir una línea negra
Como ejemplo haremos un circuito que encienda un LED y emita un pitido cuando se detecta el color Negro. Es igual que el circuito del ejemplo 3, pero añadimos una puerta NOT. Antes pitaba cuando el sensor estaba a 1 (objeto detectado). Esto es equivalente a detectar el color blanco. Ahora queremos lo contrario: que pite cuando no hay objeto, es decir, cuando no hay señal reflejada. Esto es lo que el negro consigue. Por eso añadimos la puerta NOT
El montaje es similar al del ejemplo anterior. Ahora colocamos una hoja blanca con un trozo de cinta aislante negra, para que haya zonas negras y blancas. Cambiamos la orientación del sensor para que apunte a la hoja
Cargamos el circuito y probamos. En este vídeo en youtube se puede ver su funcionamiento
Comportamientos reactivos con el Icebot
Los robots móviles más sencillos son los robots reactivos. Construiremos nuestro primer robot reactivo con el Icebot, y haremos una serie de experimentos para entender bien los comportamientos reactivos
Robots reactivos
Los robots reactivos son aquellos que reaccionan ante un estímulo, sin conocimiento del entorno. Hay unos estímulos de entrada, que provocan una respuesta inmediata en el robot
El esquema de un robot reactivo es el mostrado en el siguiente digrama:
El robot está formado por tres elementos:
- Sensores: Captan los estímulos del entorno y los entregan a la unidad que realiza su procesamiento
- Circuito de procesamiento: Es el que lee la información de los sensores y genera unas respuestas de salida para controlar los actuadores y generar la respuesta del robot. Es la parte que define el comportamiento del robot. Nosotros usaremos circuitos digitales en la FPGA
- Actuadores: Son los que realizan una acción sobre el entorno, y permiten al robot dar una respuesta
El comportamiento que emerge del robot, siguiendo este esquema se llama comportamiento reactivo
Esquema del Icebot
Para convertir el Icebot en un robot reactivo sólo tenemos que añadirle los sensores IR. Se los colocaremos en la parte frontal, sujetos por una goma. El sensor derecho lo conectaremos a D12 y el izquierdo a D13
El esquema de nuestro robot reactivo es:
Para este caso concreto, nuestros elementos serán los siguientes:
Estimulos | Son la presencia o NO de objetos delante de los sensores del robot |
Sensores | Dos sensores de infrarrojos digitales, que devuelven 1 cuando hay un objeto delante y 0 cuando no lo hay |
Actuadores | Dos servos de rotación continua, que tienen un controlador con 2 bits de entrada (Motorbit) que permiten que cada rueda esté en alguno de sus tres estados posibles: parada, giro en sentido horario, o giro en sentido antihorario |
Unidad de procesamiento | Circuito digital que diseñaremos nosotros y que estará dentro de la FPGA |
Respuesta | Son los movimientos del robot: avanzar, parado, arco derecha, arco izquierda... |
Experimento 1: Sensor derecho - motor derecho
Comenzaremos por un experimento muy sencillo: hacer que el motor derecho se mueva en sentido horario cuando se activa el sensor derecho. Además encederemos el LED0 de pruebas
El circuito es el siguiente:
El sensor derecho está conectado directamente al bit de on del motor de la rueda derecha, de modo que al detectarse un objeto, se recibe un 1 y se activa el motor derecho, mientras el izquierdo está parado. El robot girará a la izquierda en arco, embistiendo el objeto que había delante. En cuanto ho tiene nada en su campo, el sensor lee un 0 y el motor se para
En este vídeo en youtube se puede ver el comportamiento en acción
Experimento 2: Sensor derecho negado - motor derecho
Modificamos el circuito del experimento 1 añadiendo una puerta NOT
Ahora, cuando el sensor derecho detecte un objeto, el motor derecho se parará, y cuando no haya nada seguirá movimiento, haciendo que el robot gire hacia la izquierda, en arco
El comportamiento se puede ver en este vídeo en Youtube:
Experimento 3: Sensor izquierdo negado - motor izquierdo
El comportamiento del experimento anterior lo vamos a reproducir con el lado izquierdo del robot. Para que la rueda izquierda gire hacia "adelante" hay que configurarla en sentido antihorario, colocando un 0 en su bit del sentido de giro
Y en este vídeo en youtube se ve el nuevo comportamiento
Experimento 4: Superposición: Comportamiento de seguir objetos
Los circuitos de los experimentos 2 y 3 son independientes, ya que no tienen ningún recurso en común. Por tanto los podemos combinar mediante superposición, en la que los dos circuitos funcionan en paralelo. Uno controla la parte derecha de robot: sensor y rueda. Y el otro la izquierda. De forma independiente
El resultado es que aparece un comportamiente emergente que hace que el Icebot siga un objeto. Lo podemos ver en este vídeo de youtube
El patito y su mamá
Este comportamiento de seguir objetos lo utiliza mi hija Alicia, de 8 años, para jugar al juego del patito y su mamá. Nos explica en este vídeo cómo funciona :-)
Ejercicios propuestos (25 BitPoints)
Ver los detalles de los ejercicios y las entregas en el menú Archivos/Ejemplos/2-Ejercicios de la colección de este tutorial
Resumen:
- Ejercicio 1 (Total 5 Bitpoints): Alarma activada por sensor IR
Diseñar un circuito digital que haga sonar una alarma mientras el sensor de
infrarrojos esté detectando un objeto. La alarma sonará por un zumbador, y estará
compuesta por dos tonos de 1Khz y 2Khz, alternados a la frecuencia de 2Hz
Cuando el sensor no detecta objetos, la alarma estará callada
- Ejercicio 2 (Total 5 Bitpoints): Barrera automática
Diseñar un circuito digital que suba una barrera cuando el sensor de IR detecta la
presencia de un coche. Se cierra cuando no se detecta nada. El circuito todavía no
temporiza nada, ni almacena información. Simplemente sube o baja la barrera en función
del estado del sensor IR
- Ejercicio 3 (Total 10 Bitpoints): Icebot Policia
Hacer un circuito digital para que el robot icebot siga a un objeto. Utilizará dos
sensores IR colocados en su parte delantera. Siempre que el icebot esté en movimiento
se activará una sirena acústina y otra luminosa. La sirena es la misma que la del
ejercicio 1. La luminosa está formada por dos LEDs que parpadean anternativamente a
la misma frecuecia que la acústica (2Hz)
- Ejercicio 4 (5 Bitpoints). Ejercicio Libre. Premiar la creatividad. Entregar por redes sociales o github: Pantallazos, enlaces, vídeos, etc...
Ejercicios entregados
Ximo Catala (ximocat)
Ejercicio 1
- Vídeo en Youtube:
Ejercicio 2
- Vídeo en Youtube:
Ejercicio 3
- Vídeo en Youtube:
Ejercicio 4
- Vídeo en Youtube: El icebot siguiendo al escornabot :-)
Josep Montoliu (Klarojms)
Ejercicio 1
- Vídeo en Youtube:
Ejercicio 2
- Vídeo en Youtube:
Ejercicio 3
- Vídeo en Youtube:
Ejercicio 4
- Vídeo en Youtube: El icebot siguiendo la línea negra
Andrés (@Avarez_)
Ejercicio 1
Ejercicio 2
Ejercicio 3
Autor
- Juan González-Gómez (Obijuan)
Licencia
Créditos y agradecimientos
Enlaces
- Repositorio con las colecciones de la Academia Jedi de Hardware
- BricoGeek. Tienda Friki donde comprar componentes electrónicos
- Repositorio de la Icezum Alhambra
- Documentación de la Icezum Alhambra: (PNG)(SVG)(PDF)
- Icestudio
- Monedas Bit imprimibles
- Printbot Beetle
- Ultimate Gripper
- Pinza paralela
- Robot Educativo Zowi
- Qué es PWM y para qué sirve. Entrada en el bloq de Rincón Ingenieril
- Repositorio de PCBPrints
- PCBPrint Alhambra-Button
- PCBPrint Alhambra Switch
- Soporte Icezum Alhambra
- Soporte para Servo Futaba 3003
- Puntero para servo Futaba 3003
- Clavijas de amarre para servos
- Tablero indicador binario para servo
- Fijador de esquinas
- Fijador de cables
- Fijador de placas
- Octopus passive buzzer, de Elecfreak
- Kit de sensores para Arduino. BricoGeek. Dentro del kit con 37 módulos, hay uno con zumbador
Preguntas frecuentes
- ¿Dónde puedo conseguir la placa Icezum Alhambra?
Pueden conseguir una desde Alhambrabits
-
¿Dónde puedo comprar material electrónico?. Hay muchos sitios. Uno muy bueno es Bricogeek
-
¿Cómo aprendo a manejar github?
Hay mucha información en internet. En su momento hice este Tutorial: Github y FreeCAD para enseñar a manejarlo. Los ejemplos están hechos con ficheros de FreeCAD, sin embargo, lo que se enseña es genérico. También vale para las entregas de los ejercicios del tutorial de Electrónica digital para makers
- Los pulsadores de la Icezum Alhambra no me funcionan
Eso es debido a que se han metido restos de flux y no hacen buen contacto. En el apartado ¡No me funcionan los pulsadores! del Tutorial 9 se indica cómo solucionarlo fácilmente
- ¿Dónde puedo encontrar más información sobre las señales PWM?
Echa un vistazo a este post de Rincón Ingenieril sobre el tema
- He conectado un pulsador externo pero no me funciona. He hecho un circuito para conectar el botón con un led, y al apretar se enciende el LED, pero luego no se apaga. NO funciona bien
Los pulsadores externos que se conecten a los pines de 5v de la Alhambra (D0 - D13) tiene que llevar una resistencia de pull-up o pull-down con valores entre 460 ohm y 2K. Típicamente usamos 1K. Esto hace que los conversores de nivel se configuren como entradas y que el pulsador funcione correctamente. Puedes encontrar más información En este enlace
-
¿Donde puedo conseguir el switch que habéis usado en la PCBprint Alhambra switch? Es el mismo switch que se ha usado en la propio Icezum Alhambra (aunque la versión sin acodar). Los fabricantes los puedes encontrar en la lista de componentes de la propia icezum Alhambra. La referencia del componente en concreto es esta: Slide Switch, SPDT, On-On, Through Hole, WS-SLTV Series, 500 mA. Yo te recomiendo que uses la PCBprint de Diego Lale, que usa interruptores que puedes conseguir en Bricogeek: Mini-interruptor de 3 pines
-
¿Dónde puedo conseguir el servo de rotación continua SM-4303R?
Es un servo muy usado y muy estándar. Si buscar por internet encontrarás muchos sitios donde los vendes, a diferentes precios. Aquí en España se puede conseguir muy fácilmente a través de BricoGeek: Servo SM-4303R Bricogeek y también en Iberobotics: Servo SM-4303R Iberobotics
- Parece ser que los servos Futaba 3003 se pueden trucar para convertirlos en rotación continua. ¿Conoces algún tutorial sobre como hacerlo?
El Futaba 3003 es uno de los servos que típicamente se han trucado para construir robots móviles con ellos. Robots como Tritt, El Skybot o el Miniskybot los utilizan. Existen muchísimos tutoriales para hacerlo. En esta página puedes encontrar todas las formas de trucarlos. El que recomendamos es el caso 2