Arduino UNO R4 - Sensor de velocidad óptico ranurado IR
En esta guía, aprenderemos a usar el sensor de velocidad óptico ranurado IR con Arduino UNO R4. En detalle, aprenderemos:
- Cómo el sensor de ranura IR en forma de U ve un objeto entre sus dos brazos.
- Cómo conectar el sensor de velocidad al Arduino UNO R4.
- Cómo escribir un programa para Arduino UNO R4 que cuente cada objeto que pasa por la ranura.
- Cómo escribir un programa para Arduino UNO R4 que mida la velocidad de un motor (rpm) con un disco codificador y una interrupción.

Hardware Requerido
Or you can buy the following kits:
| 1 | × | DIYables STEM V4 IoT Starter Kit (Arduino included) | |
| 1 | × | DIYables STEM V4B IoT Starter Kit (Arduino included) | |
| 1 | × | DIYables Sensor Kit (18 sensors/displays) |
Acerca del sensor de velocidad óptico ranurado IR
Este pequeño módulo tiene forma de U. La gente también lo llama sensor óptico de horquilla. Un brazo tiene un LED infrarrojo. El otro brazo tiene un fototransistor NPN. Se miran de frente a través de un hueco de 5.9 mm. El sensor le dice al Arduino UNO R4 una cosa simple: ¿el hueco está vacío, o hay algo dentro?
| Sensor de velocidad óptico ranurado IR | |
|---|---|
| Tipo de sensor | fotoeléctrico de ranura (LED IR + fototransistor NPN) |
| Ancho de la ranura | 5.9 mm |
| Voltaje de funcionamiento | 3.3V a 5V CC |
| Salida | digital (TTL), BAJO cuando está bloqueado, ALTO cuando está libre |
| Acondicionamiento de la señal | disparador Schmitt integrado |
| Montaje | orificios para tornillos M3 en ambos extremos |
| Pines | 3 (VCC, GND, OUT) |
Usos comunes:
- Medir la velocidad de un motor (rpm) con un disco codificador, como un tacómetro.
- Contar objetos o pulsos.
- Medir la distancia contando las vueltas de una rueda.
- Dar al robot información de la velocidad de la rueda.
- Detectar un límite o una posición de inicio.
Pinout

El módulo tiene tres pines:
- Pin VCC: conéctalo a 5V del Arduino UNO R4 (el módulo acepta de 3.3V a 5V).
- Pin GND: conéctalo a GND (0V).
- Pin OUT: salida digital, conéctalo a un pin de entrada del Arduino UNO R4.
El orden de los pines puede cambiar de un lote a otro. Lee siempre las etiquetas impresas en tu módulo.
Cómo funciona

El LED IR ilumina la ranura todo el tiempo.
- La ranura está vacía: la luz llega al fototransistor, así que el pin OUT está en ALTO.
- La ranura está bloqueada por algo opaco (una tarjeta, un dedo, un diente de un disco codificador): la luz no puede pasar, así que el pin OUT está en BAJO.
El disparador Schmitt integrado convierte el nivel de luz bruto en un 0 o un 1 limpio. La señal no tiembla, así que no necesitas antirrebote por software.
Dos cosas pequeñas que debes saber:
- El plástico transparente o el vidrio pueden dejar pasar la luz IR. Usa objetos opacos.
- Algunos módulos de otros fabricantes funcionan al revés. Si tu placa dice "bloqueado" cuando la ranura está vacía, solo cambia BAJO y ALTO en el primer código. El código de rpm cuenta un flanco por ranura, así que funciona con los dos tipos.
Diagrama de Cableado
Solo se necesitan tres cables: VCC a 5V, GND a GND y OUT al pin 2 del Arduino UNO R4. El UNO R4 es una placa de 5V, así que la alimentación de 5V está bien aquí, y la señal OUT se mantiene en un nivel seguro.

This image is created using Fritzing. Click to enlarge image
Ver La mejor forma de alimentar Arduino Uno R4 y otros componentes.
Usamos el pin 2 porque puede manejar una interrupción. El segundo código lo necesita.
Cómo programar para el sensor de velocidad óptico ranurado IR
Comprobar si la ranura está bloqueada (sondeo):
- Configura como entrada el pin que se conecta al pin OUT:
- Lee el pin. BAJO significa bloqueado, ALTO significa libre:
- Compara con la última lectura, para actuar solo cuando el estado cambia:
Contar pulsos rápidos (interrupción):
- Crea un contador. Márcalo como volatile porque la interrupción lo cambia:
- Escribe una función pequeña que suma uno al contador:
- Ejecuta esa función cada vez que la señal baja de ALTO a BAJO (un diente entra en la ranura):
- Una vez por segundo, copia y reinicia el contador con las interrupciones en pausa, y luego convierte los pulsos en rpm:
¿Por qué esta fórmula? Con un disco de 20 ranuras, una vuelta completa produce 20 pulsos. Los pulsos en 1 segundo × 60 dan los pulsos por minuto. Divide entre 20 y obtienes las vueltas por minuto (rpm).
Código Arduino UNO R4 - Detectar un objeto en la ranura
Este sketch revisa el pin OUT una y otra vez. Imprime una línea solo cuando el estado cambia, y suma uno a un contador cada vez que la ranura se bloquea.
Pasos R\u00e1pidos
Sigue estas instrucciones paso a paso:
- Si es la primera vez que usas el Arduino Uno R4 WiFi/Minima, consulta el tutorial sobre configurar el entorno para Arduino Uno R4 WiFi/Minima en el IDE de Arduino.
- Conecta los componentes según el diagrama proporcionado.
- Conecta la placa Arduino Uno R4 a tu computadora con un cable USB.
- Lanza el IDE de Arduino en tu computadora.
- Selecciona la placa Arduino Uno R4 adecuada (p. ej., Arduino Uno R4 WiFi) y el puerto COM.
- Copia el código anterior y pégalo en el IDE de Arduino.
- Haz clic en el botón Subir para enviar el código al Arduino UNO R4.
- Abre el Monitor Serie y ajústalo a 9600 baudios.
- Desliza un trozo de tarjeta (o tu dedo) en la ranura y luego sácalo. Hazlo unas cuantas veces.
- Mira el resultado en el Monitor Serie.
Cada paso produce dos líneas: una cuando la tarjeta entra y otra cuando sale. No se imprime ninguna línea mientras nada cambia.
Código Arduino UNO R4 - Medir la velocidad del motor (rpm)
El sondeo en loop() está bien para objetos lentos. Un disco que gira es mucho más rápido, y loop() podría perder algunos dientes. Por eso este sketch cuenta los pulsos con una interrupción en el flanco FALLING, lo que da exactamente un conteo por diente. Cada segundo imprime el número de pulsos y la velocidad en rpm.
La constante SLOTS_PER_TURN vale 20. Es el disco codificador común que viene con los motorreductores TT. Si tu disco tiene otro número de ranuras, cambia este valor.
Prepara el disco codificador
- Fija el disco codificador al eje del motor o a la rueda.
- Coloca el sensor de modo que los dientes del disco pasen por la ranura.
- Asegúrate de que el disco no toque los brazos del sensor.
- Puedes girar el disco con la mano, o alimentar el motor. El motor necesita su propio cableado. Para esa parte, consulta el tutorial Arduino UNO R4 - Motor de CC.
Pasos R\u00e1pidos
- Mantén el mismo cableado de antes.
- Copia el código de rpm de arriba y pégalo en el IDE de Arduino.
- Haz clic en el botón Subir.
- Abre el Monitor Serie a 9600 baudios.
- Gira el disco y luego déjalo parar.
- Mira la velocidad en el Monitor Serie. Aquí el motor funciona a unas 300 rpm:
Comprueba una línea: 100 pulsos × 60 ÷ 20 = 300 rpm.
¿Quieres saber cuánto se ha movido una rueda? Multiplica el número de vueltas por la circunferencia de la rueda (π × diámetro de la rueda).
※ Nota:
- Mantén corta la función de la interrupción. No llames a Serial.print() dentro de ella.
- Cualquier variable que cambie la interrupción debe ser volatile.
- ¿Necesitas detectar un objeto a distancia en lugar de dentro de una ranura? Prueba el sensor de evitación de obstáculos. ¿Necesitas una perilla que también dé el sentido de giro? Prueba el encoder rotatorio.
Video Tutorial
Estamos considerando crear tutoriales en video. Si considera que los tutoriales en video son importantes, suscríbase a nuestro canal de YouTube para motivarnos a crear los videos.