Arduino RPM Con un sensor óptico
Construir un contador RPM (revoluciones por minuto) es un proyecto Arduino clásico y útil. Este guía te lleva a través de la creación de un tacómetro óptico usando un LED IR, un fototransistor IR, y una pantalla LCD de 16×2. El resultado es un sencillo y preciso mostrador RPM adecuado para motores, ventiladores o hélices.
Panorama general del proyecto
Este contador Arduino RPM funciona interrumpiendo un rayo infrarrojo con un objeto giratorio (como una hélice). Cada interrupción es detectada por el Arduino, contado y convertido en un valor RPM que se muestra en una pantalla LCD.
Características clave:
Medición RPM en tiempo real
Sensación óptica (sin contacto)
Salida LCD para lectura fácil
Componentes simples y de bajo costo
Lista de Partes
Usted necesitará los siguientes componentes:
1 × Junta de Arduino
1 × 16×2 pantalla LCD (HD44780 compatible)
1 × 10kΩ potenciómetro (control de contraste CLD)
1 × 10kΩ resistor
1 × IR LED
1 × fototransistor IR
Cables de salto
Instrucciones de cableado
Siga estos pasos cuidadosamente para montar el circuito. Cada subsección explica exactamente dónde cada alambre debe ir para evitar confusión.
Distribución de la energía
Conectar el Arduino 5V pin a la panadería ferrocarril positivo.
Conectar el Arduino GND pin a la panadería ferrocarril terrestre.
Asegúrese de que todos los componentes (LCD, potenciómetro, IR LED y fototransistor) compartan este terreno común.
Conexiones LCD y Potentímetro (16×2 LCD paralela)
LCD Pin 1 (VSS) →
LCD Pin 2 (VDD) → 5V
LCD Pin 3 (VO) → Pin medio del 10k Ω potentiómetro
Potentímetros laterales → 5V y tierra (utilizados para ajustar el contraste LCD)
LCD Pin 4 (RS) → Pin digital Arduino 7
LCD Pin 5 (RW) → Modo de tierra (LCD para escribir)
LCD Pin 6 (E) → Pin digital Arduino 8
LCD Pin 11 (D4) → Pin digital Arduino 9
LCD Pin 12 (D5) → Pin digital Arduino 10
LCD Pin 13 (D6) → Pin digital Arduino 11
LCD Pin 14 (D7) → Pin digital Arduino 12
LCD Backlight
Pin 15 (A) → 5V a través de un resistor
Pin 16 (K) →
IR LED (transmisor)
Anodo (cabeza más joven) → Arduino pin digital 13
Cathode (cabeza corta) →
El LED IR permanece encendido continuamente para emitir un rayo infrarrojo hacia el fototransistor.
IR Phototransistor (Receptor)
Coleccionista (cabeza corta) → Arduino pin digital 2
Emitter →
Posicione el fototransistor directamente frente al LED IR para que el haz sea interrumpido por el objeto giratorio.
Comprobaciones finales
Garantizar todo las conexiones terrestres son comunes.
Doble control de los números del pasador antes de encender el circuito.
Ajuste el potenciómetro hasta que el texto sea claramente visible en el LCD.
Sugerencia: Pin digital 2 se utiliza porque soporta Interrumpe el hardware, permitiendo al Arduino contar las interrupciones del haz con precisión y calcular RPM de forma fiable.
Código Arduino
Cargue el siguiente boceto a su tablero de Arduino:
/*
* Optical Tachometer
*
* Uses an IR LED and IR phototransistor to implement an optical tachometer.
* The IR LED is connected to pin 13 and runs continuously.
* Digital pin 2 (interrupt 0) is connected to the IR detector.
*/
#include
int ledPin = 13; // IR LED connected to digital pin 13
volatile byte rpmcount;
unsigned int rpm;
unsigned long timeold;
// Initialize the LCD with the interface pins
LiquidCrystal lcd(7, 8, 9, 10, 11, 12);
void rpm_fun() {
// This interrupt runs every time the IR beam is cut
rpmcount++;
}
void setup() {
lcd.begin(16, 2); // Initialize the LCD
// Attach interrupt to digital pin 2 (interrupt 0)
attachInterrupt(0, rpm_fun, FALLING);
// Turn on IR LED
pinMode(ledPin, OUTPUT);
digitalWrite(ledPin, HIGH);
rpmcount = 0;
rpm = 0;
timeold = 0;
}
void loop() {
// Update RPM every second
delay(1000);
// Temporarily stop interrupts during calculation
detachInterrupt(0);
rpm = 30 * 1000 / (millis() - timeold) * rpmcount;
timeold = millis();
rpmcount = 0;
// Display RPM on LCD
lcd.clear();
lcd.print("RPM=");
lcd.print(rpm);
// Re-enable interrupt
attachInterrupt(0, rpm_fun, FALLING);
}
Comprender la Cálculo RPM
Este proyecto asume dos interrupciones por revolución, como cuando se utiliza un motor con una hélice de dos hojas.
Por eso el cálculo RPM utiliza esta fórmula:
rpm = 30 * 1000 / (millis() - timeold) * rpmcount;
Ajuste para su configuración
Una interrupción por revolución:
Reemplazamiento30con60Más cuchillas o marcas:
Divide60por el número de interrupciones por rotación completa y actualizar la fórmula en consecuencia.
Esta flexibilidad le permite adaptar el proyecto a diferentes motores y objetos giratorios.
Notas finales
Asegúrate de que el LED IR y el fototransistor estén debidamente alineados para lecturas confiables.
Use cinta reflectante o un disco ranurado para una interrupción de haz más consistente.
Este proyecto se puede ampliar mediante datos de RPM logging o agregando salida serie.
¿Listo para construir?
Este contador Arduino RPM es una gran base para proyectos de control de motores, robótica y diagnóstico mecánico. Coloque los componentes, suba el código y comience a medir RPM con confianza.