Arduino ile Ardumoto Kullanarak Dc Motor Kontrolü
Arduino ile dc motor kontrolü ve ardumoto 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.
Dc Motor Bağlantı
İ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.
Arduino ile DC Motor Kontrolü Kodları:
/* 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.
Ne, Nedir? gibi Tüm Yazılarımız ve Projelerimize BURAYA TIKLAYARAK ulaşabilirsiniz. Güncel Maker ve Teknoloji Haberlerimiz için Hemen BAĞLANTIYA TIKLAYIN.