Bu projede dönme hareketi yapan cisimlerin RPM mini ölçebilmek için arduino yardımı ile bir takometre yapacağım.

TAKOMETRE VE RPM NEDİR?

Takometre sabit bir eksen etrafında dönme hareketi yapan cisimlerin birim zamanda tamamladıkları tam tur sayısını gösterten bir saattir. Genelde birim zaman olarak 1 dakika kullanılır. RPM ile ifade edilir.

RPM min açılımı ise revolutions per minute (dakikadaki devir sayısı) anlamına gelmekte.

Örnek bir takometre cihazını görmek ister iseniz aşağıdaki linke tıklayarak ulaşabilirsiniz.

UNIT UT 372 Dijital El Tipi Optik Takometre

Bu proje için ihtiyacınız olan malzemeler:

Takometre Bağlantı Şeması

blank

LCD5110 Ekranın Kullanımı

Ekran 84×48 piksel büyüklüğünde bir grafik LCD ekran olup 3.3V ile besleniyor. LCD ekranı kullanmak için buradan LCD5110_Basic kütüphanesini indirip arduino/library/ klasörüne atmamız gerek.

Şimdi lcd ekranımızı kullanabilmemiz için gerekli olan Kütüphane fonksiyonlarına bakalım;

  • myGLCD.InitLCD()   LCD ekranı başlatır.
  • myGLCD.setContrast(0-70 arasında bir değer girilmelidir) Kontrast ayarını yapar.
  • myGLCD.setFont( ) LCD ekrana yazdırmak için kullanacağımız fontu ayarlar. Bu fonksiyonda parantez içerisine SmallFont, MediumNumbers, BigNumbers yazılabilir.
  • myGLCD.clrScr(); Ekranı temizler,
  • myGLCD.print(“yazılacak terim”,X,Y); çift tırnak içerisine terimi yazdıktan sonra x ve y değerlerini girerek yazılan terimin konumunu belirliyoruz. X yerine 0-83 arası değer girilebilirken Y yerine 8 in 40 a kadar olan katlarını (0,8,16,24,32,40) yazabiliriz. Yada x için LEFT,RIGHT veya CENTER değişkenleri kullanılabilir.

TCRT5000 Kızılötesi Sensör

0,2mm ile 15mm  arasında sağlıklı şekilde çalışmaktadır. bu sensor de okuma hız artıkça tam lojik bir çıkış alamadığımı öğrendim yani karedalga formu bozuluyor. Osilaskop olsa idi bunu ekranda görebilirdik. Bu sorunu LMV358 kullanarak ya da üzerinde işlemsel yükselteç olan modülleri kullanarak halledebilirsiniz.

Ayarlanabilir Voltaj Yükseltici Kart – MT3608

step-up voltaj regülatörünü kullanma sebebimiz hem arduinoyu +5v ile beslemek hem de 18650 şarjlı pilin voltajının düşüşü sırasında arduinoya sabit bir gerilim vermektir.

Kodlar :

#include <LCD5110_Basic.h>

LCD5110 myGLCD(7, 6, 5, 3, 4);
extern uint8_t SmallFont[];
extern uint8_t MediumNumbers[];
extern uint8_t BigNumbers[];

int sensor = 9; //9. pine bağlı olan senyörümüze isim verdik
boolean sensordurum; // sensor durum değişikleri için değişken tanımlaması
int eskidurum; // karşılaştırma yapmak için değişken tanımlaması   
unsigned long sure;
unsigned long oncekisure;
unsigned long rpm = 0;

void setup() {

  myGLCD.InitLCD();
  myGLCD.setContrast(65);
  eskidurum = LOW;
  oncekisure = 0;
  pinMode(sensor, INPUT);
}

void loop() {
  sensordurum = digitalRead(sensor);

  if (eskidurum != sensordurum) {     // eskidurum sensor durumuna eşit değil ise koşulun altındaki if e geçilecek yani hazırda bekleyecek

    if (sensordurum == LOW) {       //sensör beyaz yüzey ile karşılaşınca millis komutu milisaniye olarak  saymaya başlayıp oncekisureden fark alıyor
      sure = (millis() - oncekisure);
      rpm = (60000 / sure);       //rpm hesabı için frekansı 1/T yi kullandık, frekans birimi sn olduğu için 60 ile genişletildi dk cinsinden yazmak için
      oncekisure = millis();     // ve millis komutu mili saniye olarak saydığı için 1000 ile çarpılıp 1 saniye cinsine çevrildi
    }
    myGLCD.clrScr();
  }

  eskidurum = sensordurum;
  myGLCD.setFont(SmallFont);
  myGLCD.print("RPM", CENTER, 0);
  myGLCD.setFont(BigNumbers);
  myGLCD.printNumI(rpm, CENTER, 24);

}

1 YORUM

CEVAP VER

Please enter your comment!
Please enter your name here