Arduino ile L298N Motor Sürücü Kartı Kontrolü
Arduino ile L298N Motor Sürücü Kartı Kontrolü, fırçalı DC motorları ve mikrodenetleyiciler ve IC'ler ile step motorları çalıştırmak için kullanılabilen L298N çift H-köprü DC motor sürücü modülü hakkında bilgi edeceğiz. Modüler devre kartları, elektronik tasarımcılar için prototipleme hatalarını da azaltan en iyi zaman kurtarıcılarıdır.
Bu tip kartları kullanmak isteyen insanlar zaman tasarrufu ve lehimle gibi iş yükü gerektiren işlerle uğraşmayıp zaman konusunda tasarruf sağlamak isteyen kullanıcılardır.
Yada Arduino ve mikrodenetleyici işine yeni girmiş kişilerdir.
Bu insanların kullanmasında kolaylık olsun diye sadece Arduino için tonlarca tonlarca modüler devre üretilebiliyor, projenizi tasarlarken en az donanım buna bağlı olarak en az hata demektir bu kartlar.
DC motorlar için sürücülerini kullanıyoruz çünkü Arduino veya mikrokontrolörler(arduino her çeşit PIC vb.), genel olarak 100 miliamperi kadar akım verebilirler buda Dc motora yetmez.
Mikrokontrolörler akıllı ama güçlü değillerdir;
Bu modül, yüksek güç DC motorlarını sürmek için Arduino ve diğer mikrodenetleyicilere kaslar gibi etki ekleyecektir. Mikrodenetleyici veya arduino komutu verir motor sürücü kartı kas gibi gelen emirleri motorlara uygulatır.
2 adet DC motoru aynı anda 2 amper veya bir adet step motora kadar kontrol edebilir. PWM ile de dönme yönü ve hızı kontrol edebiliriz.
Bu modül robotlar ve oyuncak arabalar gibi arazi taşınma projeleri yapmak için idealdir.
L298N Teknik Detayları
Pin açıklaması: · Sol tarafta, DC motorunu bağlamak için OUT1 ve OUT2 benzer şekilde, başka bir DC motor için OUT3 ve OUT4 portu bulunmaktadır. ENA ve ENB, ENA'yı yüksek veya + 5V'ye bağlayarak pimleri etkinleştirir; OUT1 ve OUT2 portlarını etkinleştirir. ENA pimini düşük veya toprağa bağlarsanız, OUT1 ve OUT2'yi devre dışı bırakır. Benzer şekilde, ENB ve OUT3 ve OUT4 için. · IN1 ile IN4 pinleri arasındaki pinler Arduino'ya bağlanacak olan giriş pinleridir. ·
IN3 yüksek girerseniz, OUT4 yüksek döner ve IN4 düşük OUT3 değerini girerseniz, artık başka bir motoru sürdürebiliriz. ·
Motorun dönme yönünü tersine çevirmek isterseniz, IN3 ve IN4 için benzer şekilde IN1 ve IN2 polaritesini ters çevirin. · ENA ve ENB'ye PWM sinyali uygulayarak, motorların hızını kontrol edebilirsiniz.
·12V ile 0V arasında bir güç vererek kartı besleyebilrisiniz. ·
+ 5V terminali, gerektiğinde Arduino'ya veya başka bir modüle güç sağlamak için kullanılabilen OUTPUT'tur.
Kodu doğru şekilde değiştirirseniz ve bir joystick eklerseniz, yukarıdaki devre oyuncak arabalar için kullanılabilir. Sadece L289N modülünü çalıştırmanız gerekiyor ve modül Arduino'ya Vin terminali üzerinden güç sağlayacaktır.
Yukarıdaki devre her iki motoru da saat yönünde 3 saniyeliğine döndürecek ve 3 saniyeliğine duracaktır. Bundan sonra motor 3 saniyeliğine saat yönünün tersine döner ve 3 saniye durur.
Bu, H-köprüsünü eylem halinde gösterir. Bundan sonra her iki motor da yavaş yavaş saat yönünün tersine dönme hızında yavaş yavaş dönmeye başlar ve yavaş yavaş sıfıra düşürür. Bu, motorların PWM tarafından hız kontrolünü gösterir.
Arduino ile L298N Motor Sürücü Kartı Kontrolü Kod Blogu
const int Enable_A = 9;
const int Enable_B = 10;
const int inputA1 = 2;
const int inputA2 = 3;
const int inputB1 = 4;
const int inputB2 = 5;
void setup()
{
pinMode(Enable_A, OUTPUT);
pinMode(Enable_B, OUTPUT);
pinMode(inputA1, OUTPUT);
pinMode(inputA2, OUTPUT);
pinMode(inputB1, OUTPUT);
pinMode(inputB2, OUTPUT);
}
void loop()
{
//---- A ve B Cikis olarak etkinlestir------//
digitalWrite(Enable_A, HIGH);
digitalWrite(Enable_B, HIGH);
//----------Run motors-----------//
digitalWrite(inputA1, HIGH);
digitalWrite(inputA2, LOW);
digitalWrite(inputB1 , HIGH);
digitalWrite(inputB2, LOW);
delay(3000);
//-------motoru devre disi birak----------//
digitalWrite(Enable_A, LOW);
digitalWrite(Enable_B, LOW);
delay(3000);
//-------Ters Bağlama----------//
digitalWrite(Enable_A, HIGH);
digitalWrite(Enable_B, HIGH);
digitalWrite(inputA1, LOW);
digitalWrite(inputA2, HIGH);
digitalWrite(inputB1 , LOW);
digitalWrite(inputB2, HIGH);
delay(3000);
//-------Motor devre disi----------//
digitalWrite(Enable_A, LOW);
digitalWrite(Enable_B, LOW);
delay(3000);
//----------Hiz yukselt----------//
for(int i = 0; i < 256; i++)
{
analogWrite(Enable_A, i);
analogWrite(Enable_B, i);
delay(40);
}
//----------Hiz dusur----------//
for(int j = 256; j > 0; j--)
{
analogWrite(Enable_A, j);
analogWrite(Enable_B, j);
delay(40);
}
//-------motoru devre dışı bırak----------//
digitalWrite(Enable_A, LOW);
digitalWrite(Enable_B, LOW);
delay(3000);
}