Licznik RPM Arduino przy użyciu czujnika optycznego
Budowa licznika RPM (obroty na minutę) jest klasycznym i użytecznym projektem Arduino. Ten przewodnik prowadzi przez tworzenie tachometr optyczny przy użyciu diody podczerwieni, fototransystor podczerwieni oraz wyświetlacza LCD 16 × 2. Rezultatem jest prosty, dokładny licznik RPM odpowiedni dla silników, wentylatorów lub śmigieł.
Przegląd projektu
Ten licznik RPM Arduino działa poprzez zakłócanie wiązki podczerwieni przy pomocy wirującego obiektu (takiego jak śmigła). Każda przerwa jest wykrywana przez Arduino, liczona i przekształcana w wartość RPM wyświetlaną na ekranie LCD.
Główne cechy:
Pomiar RPM w czasie rzeczywistym
Czujnik optyczny (niekontaktowy)
Wyjście LCD do łatwego czytania
Proste i niskokosztowe komponenty
Lista części
Potrzebne są następujące składniki:
1 × Płyta Arduino
1 × 16 × 2 wyświetlacz LCD (kompatybilny z HD44780)
1 × 10kmbH potencjometr (kontrola kontrastu LCD)
1 × 10kmbH rezystor
1 × LED IR
1 × fototransystor IR
Kable skokowe
Instrukcje wyboru
Postępować ostrożnie, aby złożyć obwód. Każda podsekcja wyjaśnia dokładnie, gdzie każdy przewód powinien iść, aby uniknąć dezorientacji.
Dystrybucja mocy
Podłącz Arduino 5V pin do chlebowca Pozytywna kolej.
Podłącz Arduino GND pin do chlebowca kolej naziemna.
Upewnij się, że wszystkie elementy (LCD, potencjometr, IR LED i fototransistor) dzielą ten wspólny grunt.
Połączenia LCD i Potentiometru (16 × 2 równoległe LCD)
LCD Pin 1 (VSS) → Grunty
LCD Pin 2 (VDD) → 5V
LCD Pin 3 (VO) → Środkowy pin 10k ↔ potencjometr
Piny boczne Potentiometer → 5V i Ground (używane do regulacji kontrastu LCD)
LCD Pin 4 (RS) → Cyfrowy pin Arduino 7
LCD Pin 5 (RW) → Uziemienie (tryb zapisu LCD)
LCD Pin 6 (E) → Cyfrowy pin Arduino 8
LCD Pin 11 (D4) → Cyfrowy pin Arduino 9
LCD Pin 12 (D5) → Cyfrowy pin Arduino 10
LCD Pin 13 (D6) → Cyfrowy pin Arduino 11
LCD Pin 14 (D7) → Cyfrowy pin Arduino 12
LCD Podświetlenie
Pin 15 (A) → 5V przez rezystor
Pin 16 (K) → Ziemia
LED IR (nadajnik)
Anod (ołów dłuższy) → Arduino iglica cyfrowa 13
Katoda (krócej ołów) → Grunty
IR LED pozostaje włączone w sposób ciągły, aby emitować wiązkę podczerwieni w kierunku fototransistor.
Fototransistor IR (odbiornik)
Kolekcjoner (krótszy ołów) → Arduino cyfrowy pin 2
Emiter (ołów dłuższy) → Grunty
Ustawić fototransystor bezpośrednio w kierunku IR LED, tak aby wiązka została przerwana przez obracający się obiekt.
Kontrole końcowe
Zapewnienie wszystkich połączenia naziemne są wspólne.
Przed uruchomieniem obwodu należy sprawdzić numery sworzni.
Dostosuj potencjometr aż tekst będzie wyraźnie widoczny na LCD.
Wskazówka: Cyfrowy pin 2 jest używany, ponieważ wspiera przerwy sprzętowe, pozwalając Arduino dokładnie policzyć przerwy w wiązce i obliczyć RPM wiarygodnie.
Kod arduino
Wyślij poniższy szkic na planszę 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);
}
Zrozumienie obliczania RPM
Projekt zakłada, że dwa przerwy na jedną rewolucję, takich jak przy użyciu silnika ze śmigłem dwuostrzowym.
Dlatego obliczenie RPM używa tego wzoru:
rpm = 30 * 1000 / (millis() - timeold) * rpmcount;
Dostosowanie do ustawień
Jedna przerwa na rewolucję:
Zastąp30z60Więcej ostrzy lub oznaczeń:
Podziel60przez liczbę przerw na pełną rotację i odpowiednio uaktualnić wzór.
Elastyczność ta pozwala dostosować projekt do różnych silników i obiektów obrotowych.
Uwagi końcowe
Upewnić się, że diody IR i fototransistor są odpowiednio ustawione dla niezawodnych odczytów.
Użyj taśmy odblaskowej lub tarczy do bardziej konsekwentnego przerwania wiązki.
Projekt ten może zostać rozszerzony poprzez logowanie danych RPM lub dodanie wyjścia szeregowego.
Gotowy do budowy?
Ten licznik RPM Arduino jest doskonałym fundamentem dla projektów sterowania silnikami, robotyki i diagnostyki mechanicznej. Zebrać komponenty, przesłać kod i rozpocząć pomiar RPM z pewnością.