Arduino RPM Counter Folosind un senzor optic
Construirea unui contor RPM (revoluții pe minut) este un proiect clasic și util Arduino. Acest ghid te plimba prin crearea unui tahometru optic folosind un LED IR, un fototransisor IR și un ecran LCD 16×2. Rezultatul este un contor RPM simplu, precis, potrivit pentru motoare, ventilatoare, sau elice.
Prezentare generală a proiectului
Acest contor RPM Arduino funcționează prin întreruperea unei raze infraroșu cu un obiect rotativ (cum ar fi o elice). Fiecare întrerupere este detectată de către Arduino, numărată și transformată într-o valoare RPM care este afișată pe un ecran LCD.
Caracteristici cheie:
Măsurarea RPM în timp real
Detectoare optică (fără contact)
Ieșire LCD pentru citire ușoară
Componente simple și ieftine
Lista pieselor
Veţi avea nevoie de următoarele componente:
1 × tabla Arduino
1 × 16×2 ecran LCD (HD44780 compatibil)
1 × 10k
1 × 10k
1 × IR LED
1 × fototransmițător IR
Fire de jumper
Instrucțiuni de cablare
Urmați cu atenție acești pași pentru a asambla circuitul. Fiecare subsecţiune explică exact unde ar trebui să meargă fiecare fir pentru a evita confuzia.
Distribuția energiei
Conectează Arduino 5V pin la placa de pâine șină pozitivă.
Conectează Arduino PIN GND la placa de pâine șine terestre.
Asigurați-vă că toate componentele (LCD, potențiometru, LED IR și fototransistor) împart acest teren comun.
Conexiuni LCD și potentiometru (16×2 Paralel LCD)
Pin LCD 1 (VSS) → Sol
Pin LCD 2 (VDD) → 5V
Pin LCD 3 (VO) → Pixul de mijloc al 10k potențiometru
Pioneze laterale cu potentiometru → 5V și Ground (utilizate pentru ajustarea contrastului LCD)
Pin LCD 4 (RS) → Arduino PIN digital 7
Pin LCD 5 (RW) → Ground (Set LCD de scris)
Pin LCD 6 (E) → Arduino PIN digital 8
Pin LCD 11 (D4) → Arduino PIN digital 9
Pin LCD 12 (D5) → Arduino PIN digital 10
Pin LCD 13 (D6) → Arduino PIN digital 11
Pin LCD 14 (D7) → Arduino PIN digital 12
LCD Lumina din spate
Pin 15 (A) → 5V printr-un rezistor
Pin 16 (K) → Sol
LED IR (Transmitter)
Anodă (conducere mai lungă) → Arduino PIN digital 13
Catode (mai scurt plumb) → Sol
LED-ul IR rămâne pornit continuu pentru a emite o undă infraroșu spre fototransisor.
Fototranzistor IR (Receiver)
Colecționar (cu plumb mai scurt) → Arduino PIN digital 2
Emițător (mai mult plumb) → Sol
Poziţionaţi fototranzistorul direct cu faţa spre LED-ul IR, astfel încât fasciculul să fie întrerupt de obiectul rotativ.
Controale finale
Asigură toate conexiunile la sol sunt comune.
Verificaţi numerele pinilor înainte de alimentarea circuitului.
Reglați potențiometrul până când textul este vizibil în mod clar pe LCD.
Sfat: PIN-ul digital 2 este utilizat deoarece suportă intreruperi hardware, permițând Arduino să numere cu precizie întreruperile fasciculelor și să calculeze RPM în mod fiabil.
Codul Arduino
Încărcați următoarea schiță pe tabla 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);
}
Înțelegerea calculului RPM
Acest proiect presupune două întreruperi per revoluție, cum ar fi atunci când se utilizează un motor cu o elice cu două lame.
De aceea, calculul RPM utilizează această formulă:
rpm = 30 * 1000 / (millis() - timeold) * rpmcount;
Ajustare pentru configurare
O întrerupere per revoluţie:
Înlocuiește30cu60Alte lame sau marcaje:
Divide60prin numărul de întreruperi per rotație completă și actualizarea formulei în consecință.
Această flexibilitate vă permite să adaptați proiectul la diferite motoare și obiecte rotative.
Note finale
Asigurați-vă că LED-ul IR și fototransistorul sunt aliniate corespunzător pentru citiri fiabile.
Utilizați banda reflectorizantă sau un disc slotted pentru întreruperea mai consecventă a fasciculului.
Acest proiect poate fi extins prin logarea datelor RPM sau adăugarea de rezultate seriale.
Eşti gata să construieşti?
Acest contor RPM Arduino este o fundație mare pentru proiecte de control motor, robotică, și diagnostice mecanice. Adună componentele, încarcă codul şi începe să măsori RPM cu încredere.