Obtenga entrega gratuita en todas las órdenes más de £20!

Arduino RPM Con un sensor óptico

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.

  1. 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.

  2. 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) →

  3. 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.

  4. 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.

  5. 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:
    Reemplazamiento 30 con 60

  • Más cuchillas o marcas:
    Divide 60 por 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.

Notice an Issue? Have a Suggestion?
If you encounter a problem or have an idea for a new feature, let us know! Report a problem or request a feature here.

Escribir un comentario