Hanki ilmainen toimitus kaikista tilauksista yli 20 puntaa!

Arduino RPM Counter käyttäen optista sensoria

Arduino RPM Counter käyttäen optista sensoria

Rakentaminen RPM (revolutions per minuutti) on klassinen ja hyödyllinen Arduino-projekti. Tämä opas opas opastaa sinua luomaan optinen takometri IR-LED, IR-valotransistori ja 16×2 LCD-näyttö. Tuloksena on yksinkertainen ja tarkka RPM-laskuri, joka soveltuu moottoreille, tuulettimille tai potkurille.


Hankkeen yleiskatsaus

Tämä Arduino RPM-laskuri toimii keskeyttämällä infrapunasäteen pyörivällä esineellä (kuten potkurilla). Jokainen keskeytys havaitaan Arduino, lasketaan, ja muunnetaan RPM-arvo, joka näkyy LCD-näytöllä.

Tärkeimmät ominaisuudet:

  • Reaaliaikainen kierrosnopeuden mittaus

  • Optinen (koskettamaton) anturi

  • LCD-ulostulo helppolukuiseen lukemiseen

  • Yksinkertaiset ja edulliset komponentit


Osaluettelo

Tarvitset seuraavat komponentit:

  • 1 × Arduinon lauta

  • 1 × 16×2 LCD-näyttö (HD44780 yhteensopiva)

  • 1 × 10kΩ potentiometri (LCD-kontrastiohjaus)

  • 1 × 10kΩ vastus

  • 1 × IR LED

  • 1 × IR-valotransistori

  • Hyppykaapelit


Johto-ohjeet

Seuraa näitä ohjeita huolellisesti piirin kokoamiseksi. Jokainen alakohta selittää tarkalleen minne jokainen johto pitäisi mennä välttää sekaannusta.

  1. Tehonjako

    • Yhdistä Arduino 5V pin leipälaudalle positiiviset kiskot.

    • Yhdistä Arduino GND -neula leipälaudalle maarata.

    • Varmista, että kaikki komponentit (LCD, potentiometri, IR LED ja fototransistori) jakavat tämän yhteisen pohjan.

  2. LCD- ja potentiometriyhteydet (16×2 rinnakkaista LCD:tä)

    • LCD Pin 1 (VSS) → Maa

    • LCD Pin 2 (VDD) → 5V

    • LCD Pin 3 (VO) → Keskellä pin 10k Ω potentiometri

      • Potentiometrin sivupinnat → 5V ja maa (käytetään LCD kontrastin säätöön)

    • LCD Pin 4 (RS) → Arduino digitaalinen pin 7

    • LCD Pin 5 (RW) → Maa (LCD kirjoitustila)

    • LCD Pin 6 (E) → Arduino digitaalinen pin 8

    • LCD-pin 11 (D4) → Arduino digitaalinen pin 9

    • LCD Pin 12 (D5) → Arduino digitaalinen pin 10

    • LCD Pin 13 (D6) → Arduino digitaalinen pin 11

    • LCD Pin 14 (D7) → Arduino digitaalinen pin 12

    • LCD Taustavalo

      • Pin 15 (A) → 5V vastuksen läpi

      • Pin 16 (K) → Maa

  3. IR LED (lähetin)

    • Anodi (pitkämpi lyijy) → Arduino digitaalinen pin 13

    • Katodi (lyhyempi lyijy) → Maa

    • IR LED pysyy jatkuvasti päällä lähettääkseen infrapunasäteen kohti fototransistoria.

  4. IR-valotransistori (Receiver)

    • Keräin (lyhyempi lyijy) → Arduino digitaalinen pin 2

    • Emitter (pitkämpi lyijy) → Maa

    • Aseta valotransistori suoraan IR-LEDiin päin, jotta pyörivä esine keskeyttää säteen.

  5. Lopputarkastukset

    • Varmista kaikki maayhteydet ovat yleisiä.

    • Tarkista pin-numerot ennen virtapiirin kytkemistä.

    • Säädä potentiometriä, kunnes LCD:ssä näkyy selvästi tekstiä.

Vihje: Digitaalinen pin 2 käytetään, koska se tukee laitteiston keskeytykset, mahdollistaa Arduino laskea säde keskeytykset tarkasti ja laskea RPM luotettavasti.


Arduinon koodi

Lataa seuraava luonnos Arduino-lautallesi:

/*
 * 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);
}

RPM-laskennan ymmärtäminen

Hankkeessa oletetaan kaksi keskeytystä per kierros, kuten käytettäessä moottoria, jossa on kaksisylinterinen potkuri.

Tämä on syy, miksi RPM-laskelmassa käytetään tätä kaavaa:

rpm = 30 * 1000 / (millis() - timeold) * rpmcount;

Säädetään asetuksia

  • Yksi keskeytys per vallankumous:
    Korvaa 30 kun 60

  • Lisää teriä tai merkintöjä:
    Jaa 60 Keskeytysten lukumäärä täyttä kiertoa kohti ja kaavan päivitys vastaavasti.

Tämä joustavuus mahdollistaa projektin mukauttamisen eri moottoreihin ja pyöriviin kohteisiin.


Lopulliset huomautukset

  • Varmista, että IR LED ja valotransistori ovat oikein linjassa luotettavia lukemia varten.

  • Käytä heijastavaa teippiä tai piirrettyä levyä johdonmukaisemman säteen katkaisuun.

  • Projektia voidaan laajentaa kirjaamalla RPM-tietoja tai lisäämällä sarjalähtö.


Valmiina rakentamaan?

Tämä Arduino RPM-laskuri on hyvä perusta moottorien ohjausprojekteille, robotiikka ja mekaaninen diagnostiikka. Kokoa komponentit, lataa koodi ja aloita RPM:n mittaaminen luottavaisin mielin.

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.

Jätä kommentti