BAĞLAN

LM 393 Kızılötesi Hız Sensörü Kullanımı

  • Görüntüleme 1099
  • Bir dc motorun hangi yönde ne kadar hızla döndüğü, kaç tur yaptığı vs bilgilere, bazı projelerde ihtiyaç duymaktayız. Bundan dolayı bu yazımda sizlere lm 393 kızılötesi hız sensöründen bahsedeğim.

    Sensörün çalışma mantığı:

    Sensör kızılötesi iletişim metodunu kullanarak, verici ile alıcı arasına engel girdiğinde çıkış low, engel olmadığında ise high verir. Yani bir buton gibi devreyi açıp kapatır diyebilir. Bu high low durumları bir yorumlayıcı ile işlenerek saydırma işlemi yapılır ve  motorun hızı,  devri ölçülür.

    Şimdi örnek bir proje yaparak daha iyi kavrayalım. Projede bir tane dc motorun hızını ve devrini ölçeceğiz.

    Malzemeler:

    1. Arduino
    2. Lm393 hız sensörü
    3. Motor sürücü ( l293d yeterli)
    4. Potansiyometre
    5. Dc motor ve Tekerlek
    6. Encoder disk
    7. Jumper kablolar
    8. Batarya

    Encoder diski aşağıdaki gibi motor miline takın  ve sensörü de şekildeki gibi encoder diske konumlandırın.

    Elektronik Kısım: 

     

    Şekildeki gibi bağlantıları yapalım.

     Yazılım Kısmı:

    Yazılımda Interrupt (kesme) özelliği kullanmak uygun olacaktır. Kesme işlemi yaparsanız hatasız sonuç alırsınız. Çünkü arduino başka olayları çalıştırırken, kesmeye bağlı olay gerçekleştiğinde otomatik olarak haberi olur. Buradaki sensördeki durum değiştiğinde otomatik olarak tespit eder . Interrupt kütüphanesini aşağıdan indirebilirsiniz.

    Kütüphane: timerone-r11

    /* Robimek - Robotik Sistemler
    www.robimek.com */
    #include <TimerOne.h>
    unsigned int sayac=0;
     
    int in1 = 9; 
    int in2 = 5; 
     int ena = 10;
    void say() // sayma işlemi
    {
     sayac++; // sayacı bir arttır
    } 
     
    void timerIsr()
    {
     Timer1.detachInterrupt(); //zamanlayıcıyı durdur
     Serial.print("Motor hızı: "); 
     int devir = (sayac / 15); // buradaki 15 sayısı encoderdeki boşluk veya delik sayısıdır. Sizdeki kaç delik ise o sayıyı yazın.
     Serial.print(devir,DEC); 
     Serial.println(" Saniyedeki Devir Sayısı"); 
     sayac=0; // sayacı sıfırla
     Timer1.attachInterrupt( timerIsr ); //zamanlayıcıyı etkinleştir
    }
     
    void setup() 
    {
     Serial.begin(9600);
     
     pinMode(in1, OUTPUT); 
     pinMode(in2, OUTPUT); 
     pinMode(ena, OUTPUT);
     digitalWrite(in1, HIGH); 
     digitalWrite(in2, LOW); 
     Timer1.initialize(1000000); // zamanlayıcıyı bir saniyeye ayarla
     attachInterrupt(0, say, RISING); // Sensör pini high olduğunda sayacı bir arttır.
     Timer1.attachInterrupt( timerIsr ); // timerIsr zamanlayıcıyı etkinleştir
    } 
     
    void loop()
    {
     int pot_deger = analogRead(0); // Potansiyometreden veri okuma 
     int motor_hizi = map(pot_deger, 0, 680, 255, 0); // hız değerini hesapla
     analogWrite(ena, motor_hizi); // hız değerini yazdır.
     
    }

    Koddaki ” int devir = (sayac / 15); ” ifadesinde 15 değeri encoderdin üzerindeki delik veya boşluk sayısıdır. Sizdeki encoderde kaç tane varsa o sayıyı yazınız.

    PAYLAŞ

    Sezgin GÜL

    Makine Mühendisi, Maker, Robotik Sistemler Uzmanı

    Bir Yorum "LM 393 Kızılötesi Hız Sensörü Kullanımı"

    1. erdinç
      12 Ocak 2017

      slm sezgin ben devir sayısı üzerine led yakmak istiyorum devir arttıkça 4 led sırayla yanacak düştükçe sırayla sönecek bu konuda yardımcı olabilirmisn

      Cevapla

    Bir yorum yaz

    E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir

    Projeler Devamı

    Bizi Takip Et

    izmir escort- izmir escort- izmir escort- izmir escort- izmir escort