Takip Edin
Back
Image Alt

Hayalet ve Yap

Arduino ile Ardumoto Kullanarak Dc Motor Kontrolü

      Arduino ile ardumotor kullanarak dc motor kontrolü

Arduino ile ardumotor kullanımı hakkında türkçe (ingilizce de dahil)  pek fazla kaynak bulamayınca projelerinize özelliklede çizgi izleyen robot yapımında sizlere yardımcı olması dileğiyle hazırlanmış bir makale olacaktır. Ardumotor bir motor shielddir ve arduino uno ile uyumludur. Ardumotor L298P motor sürücü entegresi kullanmaktadır.

Klasik motor sürücü kartlarına göre farklılıkları olan ardumotor motor sürücü kartı 4 adet pin(3,11,12,13) ile iki farklı dc motorun rpm(hız) ve yön kontrollerini sağlayabiliyor. VIN girişinden max 18V olacak şekilde dışarıdan güç bağlayabiliriz.

3 pin Motor A’nın rpm kontrolünü 12 pin ise yön kontrolünü yapar. Motor B’nin ise 11 pin rpm 13 pin ise yön kontrolünü yapmaktadır. (Not: Bu pinler kart üzerinde otomatik seçilmiştir yerleri değiştirilemez.)

B led Motor B hareketleri esnasında yanıp sönmektedir. Aynı şekil A led de Motor A için aynı işlevi yapmaktadır.

Fritzing üzerinde bu bir ardumotor ile iki dc motorun bağırtılarını çizelim.

  İki adet motorun bağlantısını bu şekilde yaptıktan sonra geriye kalan pinleri istediğimiz sensörü kontrol için kullanabiliriz. Çizgi izleyen, Engelden kaçan gibi robotlar için kullanımı çok idealdir.

 

 

 

 

Şimdi bir uygulama ile Ardumotor kullanımını anlatalım. Bir kod bloğunu paylaşacağım. Bu kod bloğu hem motorları doğru bağlanıp bağlanmadığını hem de sistemin tam anlamı ile nasıl çalıştığınızı anlamamız için yardımcı olabilecek bir kaynak.

/*
  www.Robocombo.com
  13/04/2018
  Erdem YILMAZ
  Mekatronik Mühendisi
  Robocombo.com
*/

int pwm_a = 3;  //Motorların çıkıları olan 3 ve 4 için pwm kontrolü. dijital   3 pinde
int pwm_b = 11;  //Motorların çıkıları olan 1 ve 2 için pwm kontrolü. dijital  11 pinde 
int dir_a = 12;  //Motorların çıkışları olan 1 ve 2 için yön kontrolü, dijital 12 pinde 
int dir_b = 13;  //Motorların çıkışları olan 3 ve 4 için yön kontrolü, dijital 13 pinde 


void setup()
{
  pinMode(pwm_a, OUTPUT);  //Kontrol pinlerini çıkış olacak şekilde ayarla
  pinMode(pwm_b, OUTPUT);
  pinMode(dir_a, OUTPUT);
  pinMode(dir_b, OUTPUT);
  
  analogWrite(pwm_a, 100);  //Her iki motoru da (100/255 = 39)% görev döngüsünde (yavaş) çalışacak şekilde ayarla
  analogWrite(pwm_b, 100);
  
}

void loop()
{
  digitalWrite(dir_a, LOW);  //Motor yönleri, 1 low, 2 high
  digitalWrite(dir_b, LOW);  //Motor yönleri, 3 high, 4 low
  
  delay(1000);
  
  analogWrite(pwm_a, 255);  //Her iki motoruda (hızlı) olacak şekilde ayarla
  analogWrite(pwm_b, 255);
  
  delay(1000);
  
  digitalWrite(dir_a, HIGH);  //Ters motor yönü, 1 high, 2 low
  digitalWrite(dir_b, HIGH);  //Ters motor yönü, 3 low, 4 high
  
  delay(1000);
  
  analogWrite(pwm_a, 100);  //Her iki motoru da (100/255 = 39)% görev döngüsünde (yavaş) çalışacak şekilde ayarla
  analogWrite(pwm_b, 100);
  
  delay(1000);
}


Koddan hata alanlar için zip olarak buradan ulaşabilirler.

 

Post a Comment