20 fontnál több rendelés esetén ingyen szállítsák!

Arduino RPM számláló optikai érzékelő használatával

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.

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

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

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

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

  5. 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:
    Csere 30 és 60

  • Több penge vagy jelölés:
    Osztás 60 a 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.

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.

Hagyj egy megjegyzést