Contador de RPM Arduino de Alta Velocidade com Algoritmo Inovador
Componentes e Materiais
| Componente | Quantidade |
|---|---|
| Arduino UNO | 1 |
| Sensor de proximidade IR | 1 |
| Jumpers | 3 |
| Diodo Laser 655 nm (vermelho) | 1 |
| Motor DC (para teste) | 1 |
| Cabo USB-A para Mini-USB | 1 |
| Bateria 9V | 1 |
Ferramentas Necessárias
- Fio de solda (livre de chumbo)
- Ferro de solda (apenas para soldar fios nos terminais do motor)
Aplicativos
- Arduino IDE
Sobre o Projeto

Este projeto foi desenvolvido do zero como uma tentativa de medir o RPM exato (Rotações por Minuto) de vários motores usando um único sensor IR, uma placa Arduino e um ingrediente essencial – um Laser Pointer (necessariamente Vermelho).
O sensor IR também lê a baixa radiação IR emitida pelo laser vermelho. Com laser azul/verde, essa radiação cai para ~0.
Quando uma pá do ventilador acoplado ao motor intercepta o feixe laser, a leitura cai a 0. A pá gira continuamente, criando obstruções periódicas. Quando o caminho fica livre, o feixe atinge o sensor novamente.
NOVO ALGORITMO "SINGLE SHOT" PARA MEDIÇÕES MAIS RÁPIDAS E ADAPTATIVAS
O código usa um algoritmo recém-desenvolvido para este projeto. O algoritmo é único e faz medições em menos de 40 milissegundos com resultados precisos.
Uma característica importante é o que chamo de Single Shot Detection para Arduino. Calcula o RPM toda vez que a pá cria uma obstrução no feixe laser. Isso marca 1/n de revolução completa para n pás. Portanto, o programa é extremamente sensível a mínimas mudanças no RPM (até 2 casas decimais) a cada 1/n-ésima revolução da pá, onde n é o número de pás. Isso fornece valor de RPM extremamente preciso e alta sensibilidade a mudanças.

Na imagem acima, a taxa de atualização da saída é cerca de 2 vezes por segundo. Valores de RPM calculados com duas casas decimais.
Todos devem tentar este projeto e compartilhar avaliações. Sugestões para novos projetos são bem-vindas nos comentários.
Siga meu perfil @YASH36 para atualizações. Fiquem seguros e divirtam-se com Arduino!!
Código
RPM_counter_101
// code by YaSh
int sen = A0;
const float wid = 0.012; // largura da pá do ventilador (ajuste conforme necessário)
const float rad = 0.045; // raio do ponto de detecção na pá
const float konst = 6.2832; // 2*pi
float time_1, time_2, vel, diff, tnet, rpm;
void setup() {
Serial.begin(9600);
pinMode(sen, INPUT);
Serial.print(" \n Inicie o motor pelo menos 3 segundos antes.\n");
delay(3000);
}
void loop() {
if (analogRead(sen) < 950) {
time_1 = millis();
delay(30);
}
if (analogRead(sen) > 950) {
time_2 = millis();
diff = (time_2 - time_1);
vel = wid / diff; // velocidade de rotação
tnet = (konst * rad) / vel; // tempo = (2*pi*raio)/velocidade
rpm = (60000) / tnet; // conversão ms para minutos e depois RPM
}
Serial.print("\n O RPM é: ");
Serial.println(rpm);
}
Esquemáticos


Processo de manufatura
- Construa um Sistema Aeropônico Automatizado com Raspberry Pi e Sensor de Umidade
- Integrando Sensor Termopar com Arduino Portenta H7 usando CI MAX6675
- Construa um Jogo em Tempo Real com Giroscópio: Arduino Nano + Sensor MPU-6050
- Projeto DHT11: Sensor Temperatura/Umidade com LEDs Indicadores e Buzzer
- Sensor K30 CO₂: Monitoramento de Qualidade do Ar Interno em Tempo Real
- Unopad: Controlador MIDI Arduino Perfeito para Ableton Live
- Registrador de Temperatura e Umidade com Arduino, DHT11 e Ethernet Shield
- Construa um Pote Inteligente IoT com ESP8266, Arduino e Sensor Ultrassônico – Monitoramento em Tempo Real
- Construa um Sensor de Obstáculos Simples com Arduino – Tutorial Fácil com LED IR e Fotodiodo
- Autômatos Celulares em Tempo Real no Arduino com Display OLED 128x64