Dostać darmowe dostawy na wszystkich zamówieniach powyżej £20!

Licznik RPM Arduino przy użyciu czujnika optycznego

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.

  1. 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.

  2. 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

  3. 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.

  4. 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.

  5. 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ąp 30 z 60

  • Więcej ostrzy lub oznaczeń:
    Podziel 60 przez 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ą.

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.

Zostaw komentarz