in ,

Arduino ile L293D Motor Shield Kullanarak Nasıl Dc Motor Kontrol Edilir ?

Arduino ile L293D Motor Shield Kullanarak Nasıl Dc Motor Kontrol Edilir ?

Merhaba arkadaşlar arduino ile çılgın projelerde olabildiğince hızlı ilerlemeye devam ediyoruz. Bu yazımızın konusu arduino ile l293d motor shield kullanarak nasıl dc motor kontrol edilir ? bunu öğreneceğiz. 🙂 Görmüş olduğunuz motor shiled ile iki servo motor, dört dc motor ve iki step motor çalıştırabilmekteyiz. dc motorlarımızı kontrol edebilmek için dört adet çıkışımız bulunmaktadır bunlar M1, M2, M3, M4 klemensleridir.

Arduino Motor Shield’in çalıştırabildiği motor sayısı fazla olduğu için kullandığı pin sayısı da fazladır. Bu yüzden shield Pin 2, 13, A0-A5 olmak üzere 8 pin dışındaki tüm pinleri kullanmaktadır. Bu yüzden bu shield ile beraber kullanılacak modüllerin bağlantı ayaklarına dikkat edilmelidir..

Bu arada EXT_PWR klemensi ile de motorlarımıza giden gücü veririz. Harici gerilim vermemizin sebebi ise arduino üzerindeki gerilimin DC motoru çalıştırmak için yeterli amper ve gücü sağlayamamasıdır. Aksi taktirde eğer motorumuzun gücünü arduinodan sağlarsak büyük bir ihtimalle yakarız. 🙂

Önemli Not: Shield yapısı gereği 4,5 – 25 V arasında motor çalıştırmak için tasarlanmıştır yani 1,5 – 3 V motorlar ile çalışmaz ve 1,2 A çekme gücü vardır.

Kısa bilgilendirmenin ardından isterseniz zaman kaybetmeden işe koyulalım. 🙂

Malzeme Listesi

1- Arduino Uno & Arduino Mega (Ben elimde mega olduğundan onu kullanıcağım)

2-L293D Motor Shield

3- DC Motor

4- Mini bir Tornavida (klemensler için)

Not: Tüm bu malzemeleri elektronik parça satan yerlerde bulabilirsiniz yada şu ve bu adreslerden internet üzerinden güvenle sipariş edebilirsiniz 🙂 Ayrıca eğer zamanım bol diyorsanız Çin’den de Aliexpress vasıtasıyla getirtebilirsiniz. Daha uygun fiyata gelecektir.

Arduino ile L293D Motor Shield Dc Motor Devre Şeması

Alt tarafta çizdiğimiz devre şemasına bakarak uygun arduino modeline göre devremizi breadboard’umuza kuralım.

DİKKAT !! Bu devrede dikkat edilmesi gereken yer batarya bağlanırken yönlerinin karıştırılmaması eğer karıştırılırsa arduinonuz da shieldiniz de muhtemelen yanacaktır..

Yazılım

Bu modülle çalışabilmek için bir kütüphaneye ihtiyaç duyuyoruz öncelikle kütüphanemizi buradan indirip aşağıda belirtilen yoldaki klasöre rar dosyasından dan çıkarıp atın.

Rar Şifresi: donanimplus.com

Belgeler >  Arduino > libraries

Arduino IDE programımızda L293D Motor Shield için örnek bir kod bulunmakta. Bu kodu açmak için şu sırayı takip etmeniz gerekiyor..⇓

Dosya > Örnekler > Adafruit Motor Shield Library > Motor Test

Açtığımızda aşağıdaki gibi bir kodla karşılaşacağız 🙂

Bunu direkt arduinoya atarak deneyebilirsiniz.. (Ama bu kodda 4. kanala motoru bağlamanız gerekmektedir. )

Bu yazılımda belli fonksiyonlar bulunuyor bunlardan bazıları şunlardır;

AF_DCMotor : Bu fonksiyon ile dc motor bağladığımızı söyleriz..

Dc motor çalıştırırken dikkat etmemiz gereken iki şey vardır. Birincisi kanal numarası, ikincisi de pwm frekansıdır.

1 ve 2 nolu kanal için frekans tanımlamaları;

-MOTOR12_1KHZ ==> 1 khz frekansı

-MOTOR12_2KHZ ==> 2 khz frekansı

-MOTOR12_8KHZ ==> 8 khz frekansı

MOTOR12_64KHZ ==> 64 khz frekansı

3 ve 4 nolu kanal frekans tanımlamaları;

  • MOTOR34_1KHZ ==> 1 khz frekansı
  • MOTOR34_8KHZ ==> 8 khz frekansı
  • MOTOR34_64KHZ ==> 64 khz frekansı

Minik bir not:Yüksek frekans seçerseniz motorlardan daha az gürültü gelir ancak buna bağlı olarak motorun gücü düşecektir.

Şimdi ise otorlarımızı tanımlamaya gelelim bunu 2 farklı şekilde yapabiliyoruz.

1- AF_DCMotor motorA(1);

Burada parantez içindeki “1” kanal numarasını vermektedir.Dışındaki  “motorA” tanımı ise 1.kanala bağladığımız motor ismidir siz kafanıza göre değiştirebilirsiniz.. Bu şekilde tanımladığımızda pwm frekansını girmediğimiz için varsayılan frekans değeri otomatik olarak 1khz olarak alınmış olacaktır.

2- AF_DCMotor motorB(1, MOTOR12_64KHZ); 

Burada da yine yukarıda olduğu gibi motorumuzu 1. kanala bağladık. Kanal adını “motorB” olarak belirttik. Bu tanımlamada frekans değerimizi de gördüğünüz üzere girdik. Parantezde ki birinci kısım kanal numarası ikinci kısım ise frekans değerimizdir.. Umarım anlaşılmıştır.. 🙂

Bir başka fonksiyonumuz ise setSpeed fonksiyonu bu fonksiyon motorumuzun hızını 0-255 arasında ayarlamamızı sağlar.

Birde hareket fonksiyonlarımız var tabiki..

run fonksiyonu: Bu fonksiyon ile motorların ileri geri ve durma işlemini gerçekleştirebiliyoruz..

FORWARD – ileri
BACKWARD  – geri
RELEASE – dur
motorA.run(FORWARD); ==> Bu şekilde “motorA” isimli çıkışın ileri yönde dönmesi söylendi..
motorA.run(BACKWARDS); ==> Aynı şekilde geri git
motorA.run(RELEASE); ==> Dur

Genel hatları öğrendiğimize göre bir kod tasarlayalım basitinden..

Kod

//DONANIM PLUS ELEKTRONİK
//TASARIM TOLGA SOYTEPE
//İNSTAGRAM Tolgasyp
//TWİTTER TSytpp
#include <AFMotor.h>
AF_DCMotor motorA(1, MOTOR12_64KHZ); // motorumuzu 1. kanala bağladık ve frekansını 64 khz olarak ayarladık..void setup() {
Serial.begin(9600);
Serial.println(“Donanım Plus Elektronik L293D Motor Shield Denemesi”);
motor.setSpeed(200); // Motor hızını ayarlıyoruz. (0-255)
}void loop() {
Serial.print(“Motor İleri dönüyor”);motorA.run(FORWARD); // ileri yönde dön
delay(1000);Serial.print(“Motor Geri Dönüyor”);
motorA.run(BACKWARD); // geri yöne dön
delay(1000);Serial.print(“Motor Durdu”);
motorA.run(RELEASE); // dur
delay(1000);
}
Bu projeyi baz alarak rc araçlar geliştirebilirsiniz yada çizgi izleyen robot vs.
Bir yazının daha sonuna geldik umarım faydalı olmuştur anlamadığınız veya kafanıza takılan yerler olursa yorumda veya kişisel sosyal medya hesaplarımdan ulaşabilirsiniz. Kolay gelsin 🙂

Yazar Tolga Soytepe

Ara sıra yazılımcı :)

Bir cevap yazın

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

Kurumsal, Ajans Scripti[Kappe]

2018’in En Gelişmiş 8 Robotu