VIDEO 16: Sensores de Infrarrojos (IR) - Obijuan/digital-electronics-with-open-FPGAs-tutorial GitHub Wiki

Vídeo

Click to see the youtube video

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

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

Click to see the youtube video

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:

Click to see the youtube video

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

Click to see the youtube video

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

![](Click to see the youtube video)

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:

Click to see the youtube video

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

Click to see the youtube video

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

Click to see the youtube video

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 :-)

Click to see the youtube video

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:

Click to see the youtube video

Ejercicio 2

  • Vídeo en Youtube:

Click to see the youtube video

Ejercicio 3

  • Vídeo en Youtube:

Click to see the youtube video

Ejercicio 4

  • Vídeo en Youtube: El icebot siguiendo al escornabot :-)

Click to see the youtube video

Josep Montoliu (Klarojms)

Ejercicio 1

  • Vídeo en Youtube:

Click to see the youtube video

Ejercicio 2

  • Vídeo en Youtube:

Click to see the youtube video

Ejercicio 3

  • Vídeo en Youtube:

Click to see the youtube video

Ejercicio 4

  • Vídeo en Youtube: El icebot siguiendo la línea negra

Click to see the youtube video

Andrés (@Avarez_)

Ejercicio 1

Ejercicio 2

Ejercicio 3

Autor

Licencia

Créditos y agradecimientos

Enlaces

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

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