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.
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.
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
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.
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.
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:
Sostituire30con60Altre lame o marcature:
Dividenze60dal 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.