Alarm Sistemli Dc Motor Hız Kontrolü Projesi

4 487

Bu projemizde ivmeölçer ile dc motorun hız kontrolünü yapacağız.Fakat ek olarak hız seviyesine göre uyarı veren sistem ekleyeceğiz.Peki bu sistem ne işimize yarayabilir?Örneğin robotun üzerine ivme ölçeri koyarak eğime göre robotun motorlarının hızını otonom ayarlayabilir.Eğim fazla ise motorlara daha çok güç vererek eğimi çıkmasını sağlar.Ayrıca bir sonraki projede bu sistemi bluetooth üzerinden kablosuz kontrol edeceğiz.

Malzemeler:

  1. Arduino
  2. Mpu6050 gyro sensör
  3. Dc Motor
  4. Buzzer
  5. Jumper Kablo

Projemizde motor sürücü kullanmaya gerek duymadım.Sadece motorun hız kontrolünü yapacağımız için analog ile voltaj edeğerinde değişiklik olacak.Eğer çift yönlü sürseydik sürücü kullanmamız gerekirdi.

Elektronik Kısım:

 

Elektronik Devre Şeması:

Motorun bir pinini 9. dijital pine diğerini de gnd pine, buzzer artı ucunu 12. dijital pine eksi ucunu gnd ye takalım.Arduino uno kullanacaksanız ivmeölçer sensörün scl pinini analog 5’e, sda pinini de analog 4’e takalım.Mega kullanıyorsanız zaten pinleri mevcut üzerinde yazıyor.

Bütün devre bağlantılarını yaptıktan sonra yazılım kısmına geçebiliriz.

Yazılım Kısmı:

//Yazılım Geliştirme By Robimek - 2015
//Yazılım Lisans By Robimek
//www.robimek.com
#include "Wire.h"
#include "I2Cdev.h"
#include "MPU6050.h"
MPU6050 mpu;
int16_t ax, ay, az;
int16_t gx, gy, gz;
int speed_value = 9;
int gyro_value;
int buzzerpin = 12;
int motor_value;
void setup()
{
Wire.begin();
Serial.begin(38400);
pinMode(buzzerpin, OUTPUT);
digitalWrite(buzzerpin,HIGH);
Serial.println("Initialize MPU");
mpu.initialize();
Serial.println(mpu.testConnection() ? "Bağlandi" : "Bağlanmadi");
 
}
 
void loop()
{
mpu.getMotion6(&ax, &ay, &az, &gx, &gy, &gz);
gyro_value = map(ax, 0, 17000, 0,255);
motor_value=abs(gyro_value);
Serial.println(motor_value);
analogWrite(speed_value,motor_value);
if(motor_value <75) { digitalWrite(buzzerpin, HIGH); } if(motor_value >=75 && motor_value <100) { digitalWrite(buzzerpin, LOW); beep(200); } if(motor_value >=100 && motor_value <150) { digitalWrite(buzzerpin, LOW); beep(150); } if(motor_value >=150 && motor_value <200) { digitalWrite(buzzerpin, LOW); beep(75); } if(motor_value >=200)
{
digitalWrite(buzzerpin, LOW);
beep(10);
}
delay(100);
}
void beep(unsigned char delayms)
 
{
analogWrite(12, 255);
delay(delayms);
analogWrite(12, 0);
delay(delayms);
}

Yazılımda sadece x eksenindeki açısal ivmelenme ölçülerek algoritma oluşturuldu.

 

Bunları da beğenebilirsin

Cevap bırakın

E-posta hesabınız yayımlanmayacak.

4 Yorum

  1. tüncay

    fırçasız motor kullansam aynı işlevi görür mü?

  2. serkan

    hocam mpu6050 kullanarak helikopter kumanda etmek istiyorum nasıl bir yol izleyebilirim…

  3. hüseyin

    hocam kütüphaneleri indiremedim link verebilirmisiniz