Arduino UNO R4 - Sensor Óptico de Velocidade IR com Fenda
Neste guia, vamos aprender a usar o sensor óptico de velocidade IR com fenda com o Arduino UNO R4. Em detalhes, vamos aprender:
- Como o sensor IR de fenda em formato de U enxerga um objeto entre os seus dois braços.
- Como conectar o sensor de velocidade ao Arduino UNO R4.
- Como escrever um programa para o Arduino UNO R4 contar cada objeto que passa pela fenda.
- Como escrever um programa para o Arduino UNO R4 medir a velocidade de um motor (RPM) com um disco encoder e uma interrupção.

Hardware Necessário
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) |
Sobre o Sensor Óptico de Velocidade IR com Fenda
Este pequeno módulo tem formato de U. Também é chamado de fotointerruptor ou optointerruptor. Um braço tem um LED infravermelho. O outro braço tem um fototransistor NPN. Eles ficam um de frente para o outro, separados por um vão de 5,9 mm. O sensor diz uma coisa simples ao Arduino UNO R4: o vão está vazio ou tem algo dentro dele?
| Sensor Óptico de Velocidade IR com Fenda | |
|---|---|
| Tipo de sensor | fotoelétrico de fenda (LED IR + fototransistor NPN) |
| Largura da fenda | 5,9 mm |
| Tensão de operação | 3,3V a 5V DC |
| Saída | digital (TTL), LOW quando bloqueado, HIGH quando livre |
| Condicionamento de sinal | Schmitt trigger embutido |
| Fixação | furos para parafuso M3 nas duas pontas |
| Pinos | 3 (VCC, GND, OUT) |
Usos comuns:
- Medir a velocidade de um motor (RPM) com um disco encoder, como um tacômetro.
- Contar objetos ou pulsos.
- Medir distância contando as voltas de uma roda.
- Dar feedback da velocidade da roda para um robô.
- Detectar um limite ou uma posição inicial.
Pinagem

O módulo tem três pinos:
- Pino VCC: conecte ao 5V do Arduino UNO R4 (o módulo aceita de 3,3V a 5V).
- Pino GND: conecte ao GND (0V).
- Pino OUT: saída digital, conecte a um pino de entrada do Arduino UNO R4.
A ordem dos pinos pode mudar de um lote para outro. Sempre leia as etiquetas impressas no seu módulo.
Como Funciona

O LED IR ilumina a fenda o tempo todo.
- Fenda vazia: a luz chega ao fototransistor, então o pino OUT fica HIGH.
- Fenda bloqueada por algo opaco (um cartão, um dedo, um dente de um disco encoder): a luz não passa, então o pino OUT fica LOW.
O Schmitt trigger embutido transforma o nível bruto de luz em um 0 ou 1 limpo. O sinal não oscila, então você não precisa de debounce por software.
Duas coisas pequenas para saber:
- Plástico transparente ou vidro podem deixar a luz IR passar. Use objetos opacos.
- Alguns módulos de outros fabricantes funcionam ao contrário. Se a sua placa diz "bloqueado" com a fenda vazia, basta trocar LOW e HIGH no primeiro código. O código de RPM conta uma borda por fenda, então funciona com os dois tipos.
Diagrama de Ligação
Só três fios são necessários: VCC ao 5V, GND ao GND e OUT ao pino 2 do Arduino UNO R4. O UNO R4 é uma placa de 5V, então a alimentação de 5V serve bem aqui, e o sinal OUT continua em um nível seguro.

This image is created using Fritzing. Click to enlarge image
Veja A melhor forma de alimentar o Arduino Uno R4 e outros componentes.
Usamos o pino 2 porque ele consegue tratar uma interrupção. O segundo código precisa disso.
Como Programar o Sensor Óptico de Velocidade IR com Fenda
Verificar se a fenda está bloqueada (polling):
- Defina como entrada o pino que se conecta ao pino OUT:
- Leia o pino. LOW significa bloqueado, HIGH significa livre:
- Compare com a última leitura, para agir só quando o estado mudar:
Contar pulsos rápidos (interrupção):
- Crie um contador. Marque-o como volatile, porque a interrupção o altera:
- Escreva uma função bem pequena que soma um ao contador:
- Execute essa função toda vez que o sinal cair de HIGH para LOW (um dente entra na fenda):
- Uma vez por segundo, copie e zere o contador com as interrupções pausadas, depois transforme os pulsos em RPM:
Por que essa fórmula? Com um disco de 20 fendas, uma volta completa gera 20 pulsos. Pulsos em 1 segundo × 60 dá pulsos por minuto. Divida por 20 e você tem voltas por minuto (RPM).
Código Arduino UNO R4 - Detectar Objeto na Fenda
Este sketch verifica o pino OUT sem parar. Ele imprime uma linha só quando o estado muda, e soma um a um contador cada vez que a fenda é bloqueada.
Passos Rápidos
Siga estas instruções passo a passo:
- Se esta é a primeira vez que você usa o Arduino Uno R4 WiFi/Minima, consulte o tutorial sobre como configurar o ambiente para o Arduino Uno R4 WiFi/Minima no Arduino IDE.
- Ligue os componentes de acordo com o diagrama fornecido.
- Conecte a placa Arduino Uno R4 ao seu computador usando um cabo USB.
- Abra o Arduino IDE no seu computador.
- Selecione a placa Arduino Uno R4 correta (por exemplo, Arduino Uno R4 WiFi) e a porta COM.
- Copie o código acima e cole-o no Arduino IDE.
- Clique no botão Upload para enviar o código ao Arduino UNO R4.
- Abra o Serial Monitor e configure-o para 9600 baud.
- Deslize um pedaço de cartão (ou o seu dedo) para dentro da fenda e depois puxe para fora. Faça isso algumas vezes.
- Veja o resultado no Serial Monitor.
Cada passagem gera duas linhas: uma quando o cartão entra, outra quando ele sai. Nenhuma linha é impressa enquanto nada muda.
Código Arduino UNO R4 - Medir a Velocidade do Motor (RPM)
O polling no loop() funciona bem para objetos lentos. Um disco girando é muito mais rápido, e o loop() pode perder alguns dentes. Por isso, este sketch conta os pulsos com uma interrupção na borda de descida (FALLING), o que dá exatamente uma contagem por dente. A cada segundo, ele imprime a contagem de pulsos e a velocidade em RPM.
A constante SLOTS_PER_TURN está definida como 20. Esse é o disco encoder comum que acompanha os motores com caixa de redução TT. Se o seu disco tiver um número diferente de fendas, mude esse valor.
Configure o Disco Encoder
- Fixe o disco encoder no eixo do motor ou na roda.
- Posicione o sensor de modo que os dentes do disco passem pela fenda.
- Garanta que o disco não encoste nos braços do sensor.
- Você pode girar o disco com a mão ou alimentar o motor. O motor precisa da própria ligação. Veja o tutorial Arduino UNO R4 - Motor DC para essa parte.
Passos Rápidos
- Mantenha a mesma ligação de antes.
- Copie o código de RPM acima e cole-o no Arduino IDE.
- Clique no botão Upload.
- Abra o Serial Monitor em 9600 baud.
- Gire o disco e depois deixe-o parar.
- Observe a velocidade no Serial Monitor. Aqui o motor gira a cerca de 300 RPM:
Confira uma linha: 100 pulsos × 60 ÷ 20 = 300 RPM.
Quer saber a distância que uma roda percorreu? Multiplique o número de voltas pela circunferência da roda (π × diâmetro da roda).
※ Nota:
- Mantenha a função de interrupção curta. Não chame Serial.print() dentro dela.
- Qualquer variável que a interrupção altera deve ser volatile.
- Precisa detectar um objeto à distância, em vez de dentro de uma fenda? Experimente o sensor de desvio de obstáculos. Precisa de um botão que também informe o sentido da rotação? Experimente o encoder rotativo.