Arduino RPM számláló optikai érzékelő használatával
Építése RPM (forradalmak per perc) számláló egy klasszikus és hasznos Arduino projekt. Ez a kalauz végigsétál, hogy létrehozzon egy optikai tachométer IR LED, IR fototransistor és 16 × 2 LCD kijelző segítségével. Az eredmény egy egyszerű, pontos RPM számláló alkalmas motorok, ventilátorok, vagy propellerek.
Projektáttekintés
Ez az Arduino RPM számláló úgy működik, hogy egy infravörös sugarat egy forgó objektummal (például propellerrel) megszakít. Minden megszakítás észleli az Arduino, megszámlált, és átalakított egy RPM értéket jelenik meg egy LCD képernyőn.
Főbb jellemzők:
Az RPM valós idejű mérése
Optikai (nem érintkező) érzékelés
LCD kimenet könnyű olvasáshoz
Egyszerű és alacsony költségű komponensek
Alkatrészek listája
A következő komponensekre lesz szükséged:
1 × Arduino tábla
1 × 16 × 2 LCD kijelző (HD44780 kompatibilis)
1 × 10 kg- os potenciométer (LCD kontraszt szabályozó)
1 × 10 kg- os ellenállás
1 × IR LED
1 × IR fototranzisztor
Ugró huzalok
Wiring Utasítások
Kövesse gondosan ezeket a lépéseket az áramkör összeszereléséhez. Minden alszakasz pontosan megmagyarázza, hogy hova kell menni, hogy elkerüljük a zűrzavart.
Teljesítményelosztás
Csatlakoztassa a Arduino 5V pin a kenyérre pozitív sín.
Csatlakoztassa a Arduino GND pin a kenyérre földi sín.
Győződjön meg róla, hogy minden komponens (LCD, potenciométer, IR LED, és fototransistor) osztozik ebben a közös talajban.
LCD és Potentiométer csatlakozások (16 × 2 párhuzamos LCD)
LCD Pin 1 (VSS) → Földi
LCD Pin 2 (VDD) → 5V
LCD Pin 3 (VO) → Középső pin a 10k - Potenciométer
Potentiométer oldalcsapok → 5V és Ground (LCD kontraszt beállításához)
LCD Pin 4 (RS) → Arduino digitális pin 7
LCD Pin 5 (RW) → Földi (LCD beállítva írásra)
LCD Pin 6 (E) → Arduino digitális pin 8
LCD Pin 11 (D4) → Arduino digitális pin 9
LCD Pin 12 (D5) → Arduino digitális pin 10
LCD Pin 13 (D6) → Arduino digitális pin 11
LCD Pin 14 (D7) → Arduino digitális pin 12
LCD Hátsó lámpa
Pin 15 (A) → 5V ellenálláson keresztül
Pin 16 (K) → Földi
IR LED (továbbító)
Anód (hosszabb ólom) → Arduino digitális pin 13
Katód (rövidebb ólom) → Földi
Az IR LED folyamatosan bekapcsolva marad, hogy infravörös sugarat bocsáthasson ki a fototransistor felé.
IR Fototransistor (Fogadó)
Gyűjtő (rövidebb ólom) → Arduino digitális pin 2
Kibocsátó (hosszabb ólom) → Földi
Helyezze a fototransistort közvetlenül az IR LED felé, így a sugarat megszakítja a forgó tárgy.
Végső ellenőrzések
Biztosítani kell az összes a földi kapcsolatok gyakoriak.
Duplán ellenőrizd a pin számokat, mielőtt bekapcsolod az áramkört.
Állítsa be a potenciométert, amíg a szöveg nem látható az LCD-n.
Tipp: Digitális pin 2 használják, mert támogatja hardvermegszakításokhogy az Arduino pontosan megszámolhassa a sugár megszakítását, és megbízhatóan kiszámítsa az RPM-et.
Arduino-kód
Töltse fel a következő rajzot az Arduino táblára:
/*
* 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);
}
Az RPM-számítás megértése
Ez a projekt feltételezi Fordulatonként két megszakításolyan motorokat, amelyek kétélű propellerrel vannak felszerelve.
Ezért használja az RPM számítás ezt a képletet:
rpm = 30 * 1000 / (millis() - timeold) * rpmcount;
A beállítás beállítása
Forradalomonként egy megszakítás:
Csere30és60Több penge vagy jelölés:
Osztás60a megszakítások száma teljes rotációnként, és ennek megfelelően frissíti a képletet.
Ez a rugalmasság lehetővé teszi, hogy a projekt a különböző motorok és forgó tárgyak.
Záró megjegyzések
Biztosítani kell, hogy az IR LED és a fototransistor megfelelően igazodjon a megbízható olvasáshoz.
Használjon fényvisszaverő szalagot vagy hornyolt lemezt, hogy következetesebben megszakítsa a sugarat.
Ez a projekt kiterjeszthető RPM-adatok naplózásával vagy sorozatkimenet hozzáadásával.
Készen állsz az építkezésre?
Ez Arduino RPM számláló egy nagyszerű alapja a motorvezérlő projektek, robotika, és mechanikai diagnosztika. Gyűjtse össze az összetevőket, töltse fel a kódot, és kezdje el mérni RPM bizalommal.