Projelerimiz

Arduino Analog Hız Ölçer Yapımı

Bu projede yabancı bir kaynaktan alıntı yapacağım , gerçekten çok hoş yapılmış bir proje analog olarak motor hızı ölçebilmektedir.Genelde motor hız ölçüm projelerinde IR sensör kullanılmaktadır.Ancak bazı projelerde hall efeckt sensörü ile mıknatıs kullanılarak yapılabilir.

Projenin devre şemalarını site paylaşmış bende burada detayları paylaşacağım takıldığınız yer olursa site aldından yorum yazarak bana ulaşabilirsiniz elimden geldiğince anladığım yerlerde yardımcı olmaya çalışırım.

Malzeme Listesi

  • Arduino UNO
  • A polar step motor 4 pinli
  • L298n motor sürücü
  • IR Sensör Modülü
  • 16×2 LCD Ekran
  • 2.2k Direnç
  • Jumper Kablo
  • Bredboard
  • Güç Kaynağı
  • Hız Ölçer İçin Kağıt Çıktısı

16×2 LCD nin bağlantı uçları aşağıdaki gibidir.

RS – A5
RW – GND
EN – A4
D4 – A3
D5 – A2
D6 – A1
D7 – A0

Kullanılacak sensör ve motor 

#include<LiquidCrystal.h>
LiquidCrystal lcd(A5,A4,A3,A2,A1,A0);
#include <Stepper.h>
const int stepsPerRevolution = 200; // change this to fit the number of steps per revolution
Stepper myStepper(stepsPerRevolution, 8, 9, 10, 11);
volatile byte REV;
unsigned long int rpm,RPM;
unsigned long st=0;
unsigned long time;
int ledPin = 13;
int led = 0,RPMlen , prevRPM;
int flag = 0;
 
int flag1=1;
#define bladesInFan 2
float radius=4.7; // inch
int preSteps=0;
float stepAngle= 360.0/(float)stepsPerRevolution;
float minSpeed=0;
float maxSpeed=280.0;
float minSteps=0;
float maxSteps=maxSpeed/stepAngle;
 
void setup()
{
myStepper.setSpeed(60);
Serial.begin(9600);
pinMode(ledPin, OUTPUT);
lcd.begin(16,2);
lcd.print("Speedometer");
delay(2000);
attachInterrupt(0, RPMCount, RISING);
}
 
void loop()
{
readRPM();
radius=((radius * 2.54)/100.0); // convering in meter
int Speed= ((float)RPM * 60.0 * (2.0 * 3.14 * radius)/1000.0);
// RPM in 60 minute, diameter of tyre (2pi r) r is radius, 1000 to convert in km
int Steps=map(Speed, minSpeed,maxSpeed,minSteps,maxSteps);
 
if(flag1)
{
Serial.print(Speed);
Serial.println("Kmh");
lcd.setCursor(0,0);
lcd.print("RPM: ");
lcd.print(RPM);
lcd.print(" ");
lcd.setCursor(0,1);
lcd.print("Speed: ");
lcd.print(Speed);
lcd.print(" Km/h ");
flag1=0;
}
int currSteps=Steps;
int steps= currSteps-preSteps;
preSteps=currSteps;
myStepper.step(steps);
}
 
int readRPM()
{
if(REV >= 10 or millis()>=st+1000) // IT WILL UPDATE AFETR EVERY 10 READINGS or 1 second in idle
{
if(flag==0)
flag=1;
rpm = (60/2)*(1000/(millis() - time))*REV/bladesInFan;
time = millis();
REV = 0;
int x= rpm;
while(x!=0)
{
x = x/10;
RPMlen++;
}
Serial.println(rpm,DEC);
RPM=rpm;
delay(500);
st=millis();
flag1=1;
}
}
 
void RPMCount()
{
REV++;
if (led == LOW)
{
led = HIGH;
}
else
{
led = LOW;
}
digitalWrite(ledPin, led);
}

İlgili Mesajlar

7 üzerinden “Arduino Analog Hız Ölçer Yapımı” düşünenler;

  1. Hakan dedi ki:

    Merhabalar; hall efeckt sensörü ile mıknatıs ile çalışan bir
    Hız ölçer cihazına ihtiyacım var sizlerle telefonla görüşme şansım varmıdır..
    Türkiye’de üretilmeyen bir ürün yaptım bu ürünün testi için kullanacagim

    1. Hasan dedi ki:

      siz yapabildiniz mi bu cihazı aynu devreye benim de ihtiyacım var

  2. Baran dedi ki:

    Ben motorun farklı mı çalıştığını sormak için yazdım telefon numarası verirseniz aklımdaki soruları sormak istetim

  3. Ege dedi ki:

    Bu projenin bağlantılarını yapabiliyor musunuz? Çok karışık.
    Çok bilgim yok nerdeyse hiç yok.
    Potansiyometre gerekiyor mu bu projede ?
    Başka bir motor (5v) kullansak ne gibi değişimler olur ?
    Sorularımı cevaplarsanız mutlu olurum.

  4. nihat can dedi ki:

    hocam küçük dc motor nereye bağlanıyor da hızını ölçebiliyoruz çözemedim

    1. nihat can dedi ki:

      tamam hocam anladım kanat devir sayısını hesaplayıp yazdırıyor.

  5. nihat can dedi ki:

    hocam küçük dc motor nereye bağlanıyor şemada yok belli de değil bilgi verir misiniz?

Bir cevap yazın

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