Ottenere la consegna gratuita su tutti gli ordini oltre £ 20!

Contatore RPM Arduino utilizzando un sensore ottico

Contatore RPM Arduino utilizzando un sensore ottico

Costruire un contatore RPM (rivoluzioni al minuto) è un classico e utile progetto Arduino. Questa guida ti accompagna attraverso la creazione di un tachimetro ottico utilizzando un LED IR, un fototransistor IR e un display LCD 16×2. Il risultato è un semplice contatore RPM preciso adatto per motori, ventilatori o eliche.


Panoramica del progetto

Questo contatore RPM Arduino funziona interrompendo un raggio a raggi infrarossi con un oggetto rotante (come un'elica). Ogni interruzione viene rilevata dall'Arduino, contata e convertita in un valore RPM che viene visualizzato su uno schermo LCD.

Caratteristiche principali:

  • Misura RPM in tempo reale

  • Sensibilizzazione ottica (non-contatto)

  • Uscita LCD per una facile lettura

  • Componenti semplici e a basso costo


Elenco delle parti

Avrete bisogno dei seguenti componenti:

  • 1 × Arduino board

  • 1 × display LCD 16×2 (compatibile HD44780)

  • Potenziometro 1 × 10kΩ (controllo di contrasto LCD)

  • 1 × 10kΩ resistore

  • 1 × LED IR

  • 1 × fototransistor IR

  • Fili del saltatore


Istruzioni di cablaggio

Seguire questi passaggi con attenzione per assemblare il circuito. Ogni sottosezione spiega esattamente dove ogni filo dovrebbe andare per evitare confusione.

  1. Distribuzione di energia

    • Collegare Arduino 5V perno alla tavola del pane binario positivo.

    • Collegare Arduino perno GND alla tavola del pane binario.

    • Assicurarsi che tutti i componenti (LCD, potenziometro, LED IR e fototransistor) condividono questo terreno comune.

  2. Connessione LCD e potenzialemetro (16×2 LCD parallelo)

    • Perno LCD 1 (VSS) → Terra

    • Perno LCD 2 (VDD) → 5V

    • Perno LCD 3 (VO) → Perno medio del 10. Potenziometro Ω

      • Potentiometro perni laterali → 5V e terra (utilizzati per regolare il contrasto LCD)

    • Pin LCD 4 (RS) → Perno digitale Arduino 7

    • Perno LCD 5 (RW) → Ground (LCD impostato per scrivere modalità)

    • Perno LCD 6 (E) → Perno digitale Arduino 8

    • Perno LCD 11 (D4) → Perno digitale Arduino 9

    • Perno LCD 12 (D5) → Perno digitale Arduino 10

    • Perno LCD 13 (D6) → Perno digitale Arduino 11

    • Perno LCD 14 (D7) → Perno digitale Arduino 12

    • LCD Indietro

      • Pin 15 (A) → 5V attraverso un resistore

      • Pin 16 (K) → Terra

  3. IR LED (trasmettitore)

    • Anode (piombo più lungo) → Arduino pin 13

    • Cathode (capo corto) → Terra

    • Il LED IR rimane acceso continuamente per emettere un raggio a raggi infrarossi verso il fototransistor.

  4. IR Phototransistor (Receiver)

    • Collezionista (capo corto) → Arduino perno digitale 2

    • Emitter (piombo più lungo) → Terra

    • Posizionare il fototransistor direttamente di fronte al LED IR così il fascio viene interrotto dall'oggetto rotante.

  5. Controlli finali

    • Assicurarsi tutto collegamenti a terra sono comuni.

    • Controllare i numeri dei pin prima di alimentare il circuito.

    • Regolare il potenziometro fino a quando il testo non è chiaramente visibile sul LCD.

Mancia: Perno digitale 2 viene utilizzato perché supporta interruzioni hardware, consentendo all'Arduino di contare le interruzioni del fascio con precisione e calcolare RPM in modo affidabile.


Codice Arduino

Carica il seguente disegno sulla tua scheda 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);
}

Comprendere la Calcolazione RPM

Questo progetto assume due interruzioni per rivoluzione, come quando si utilizza un motore con un elica a due pale.

Ecco perché il calcolo RPM utilizza questa formula:

rpm = 30 * 1000 / (millis() - timeold) * rpmcount;

Regolazione per la configurazione

  • Un'interruzione per rivoluzione:
    Sostituire 30 con 60

  • Altre lame o marcature:
    Dividenze 60 dal numero di interruzioni per rotazione completa e aggiornare la formula di conseguenza.

Questa flessibilità consente di adattare il progetto a diversi motori e oggetti rotanti.


Note finali

  • Assicurarsi che il LED IR e il fototransistor siano adeguatamente allineati per letture affidabili.

  • Utilizzare il nastro riflettente o un disco slotted per una maggiore interruzione del fascio coerente.

  • Questo progetto può essere esteso registrando i dati RPM o aggiungendo l'output seriale.


Pronto a costruire?

Questo contatore RPM Arduino è una grande base per progetti di controllo del motore, robotica e diagnostica meccanica. Assemblare i componenti, caricare il codice e iniziare a misurare RPM con fiducia.

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.

Lascia un commento