Projekt je dostupný zadarmo na stiahnutie!
Arduino IR LCD RPM

Infračervený otáčkomer na platforme Arduino


  • Otáčkomer na platforme Arduino využíva infračervený senzor prekážok, ktorý dokáže rozpoznať prekážku na vzdialenosť nastavenú potenciometrom.
  • Druhotné využitie podobného senzora je v podstate vyhotovenie čítača, ktorý dokáže reagovať na otáčky remenice od kľukového hriadeľa.
  • Na remenicu sa umiestni reflexívna plocha (rádovo v milimetroch, max 1 centimeter) - plech, páska, alobal, ktorý dokáže z vysielacej diódy odraziť infračervené svetlo do prijímacej diódy.
  • Senzor nereaguje na vzdialenosť ako takú. Reaguje iba na odraz svetla od reflexívnej plochy.
  • Výsledkom je pomerne spoľahlivý otáčkomer, ktorý výsledok reprezentuje na znakový LCD displej s I2C prevodníkom.
  • Možno využiť na snímanie otáčok remeníc (kombajny, traktory), ale aj na bicykle, koleso auta (možnosť prepočítavať pri známom obvode kolesa aj na rýchlosť pohybu).
  • Hardvérové vybavenie pre projekt:

  • Arduino Uno R3
  • IR Obstacle senzor
  • LCD 20x4 alebo 16x2
  • I2C prevodník pre LCD
  • Výsledok

    Zapojenie

    Program

    #include <LiquidCrystal_I2C.h>
    LiquidCrystal_I2C lcd(0x3F, 20, 4);     //alebo 0x27 --> I2C adresy sa mozu roznit
    float value = 0;
    float rev = 0;
    int rpm;
    int oldtime = 0;
    int time;
    
    void isr() {
      rev++;
    }
    
    void setup() {
      lcd.begin();
      lcd.backlight();
      lcd.setCursor(0, 0);
      lcd.print("-----ZETOR 4011-----");
      attachInterrupt(digitalPinToInterrupt (2), isr, RISING); //interrupt pin
    }
    
    void loop() {
      delay(1000);
      detachInterrupt(digitalPinToInterrupt(2));      
      time = millis() - oldtime;    //rozdiel casov
      rpm = (rev / time) * 60000;   //vyrataj otacky/min
      oldtime = millis();           //uloz aktualny cas
      rev = 0;
      lcd.setCursor(0, 1);
      lcd.print(rpm);
      lcd.print(" ot/min");
      attachInterrupt(digitalPinToInterrupt (2), isr, RISING);
    }