KodlaBatu

Arduino L298N Kullanımı

arduino l298n kullanımı



Değerli arkadaşlar merhabalar. Bir önceki yazımda, arduino ile servo motor kontrolünün nasıl yapılabileceği ile ilgili detaylı bir yazı yayınlamıştım. Okumadıysanız ve öğrenme ihtiyacı hissettiyseniz, buraya tıklayarak o yazıma gidebilirsiniz. Bu yazım içerisinde ise, arduino ile dc motor kontrolüarduino ile l298n motor sürücü kartı kullanımıarduino l298n motor hız kontrolü ile ilgili aramalarınıza yanıt bulabilecekseniz.   

L298N motor sürücü kartı ile fırçalı dc motorları rahatlıkla sürebilirsiniz. Bu devre kartı ile aynı anda iki farklı dc motoru birbirlerinden tamamen bağımsız şekilde kontrol edebilirsiniz. Motor kanallarına 2 ampere kadar çıkış akımı verebilir. Bunun üzerinde akım çekmemeye özen göstermelisiniz, aksi taktirde motor sürücü kartınızın yanmasına sebebiyet verebilirsiniz.

Arduino ile dc motorlarımızı kontrol etmeden önce gelin L298N motor sürücü kartı üzerindeki bileşenlere bir göz atalım ve ihtiyacımıza yönelik devre kurulumunu gerçekleştirelim. 

Kartımızın üzerinde iki adet iki pinli motorlarımızı bağlayabilmemiz için gerekli terminal ve bir adet üç pinli güç terminalimiz yer almakta. Güç pinlerimize baktığımızda 12V'luk, kartımıza gerekli gücü verebilmemiz için besleme girişimiz, bir adet GND pinimiz ve 5V'luk bir çıkış bulunduğunu görmekteyiz. Bu 5V çıkışımız, yine güç terminalimiz ile aynı hizada bulunan kelepçelerin takılı olması durumunda devremizde bulunan diğer bileşenlerimize güç sağlamak için kullanılabilir. Giriş gerilimine 12V'dan yüksek bir değer vermemeye özen göstermelisiniz. L298n motor sürücü kartına zarar verebilirsiniz.  

Kartımızın üzerinde yer alan diğer pinlere göz attığımızda ise o pinlerin lojik pinler olduğunu farkedeceksiniz. ENA ve ENB pinleri motorlarımızın hız kontrolünü yapmak istememiz veya istemememiz ile ilgilidir. Eğer ENA kelepçemiz takılı ise motorumuz gerekli gerilimi sağlamamız durumunda tam hızda dönecektir. Eğer motorumuza hız kontrolü yapmak istersek, ENA üzerinde bulunan kelepçeyi çıkarıp bu pini arduino üzerinde yer alan PWM pinlerinden istediğimiz birine bağlayarak bunu gerçekleştirebiliriz. Aynı durum yine diğer motorumuz dolayısı ile ENB için de geçerli. IN1 ve IN2 pinleri A motorumuzun çalışması için, IN3 ve IN4 pinleri ise B motorumuzun çalışması için gerekli sinyalleri Arduino'dan alır. 

Şimdi gelin bu teknik teorik bilgiler sonrasında bu bilgileri biraz pratiğe de dökelim ve öğrendiklerimizi pekiştirelim.   


Adım 1: Gerekli Bileşenler

  
  • Arduino
  • L298N
  • DC motor x2
  • Güç Kaynağı


Adım 2: Arduino L298N Bağlantısı


Burada aşağıda verilen bağlantıya benzer bir bağlantı yapın. Dikkat etmeniz gereken en önemli husus Arduino üzerinde yer alan GND pini, güç kaynağının GND'si ve L298N kartımızın GND'si aynı yere bağlı olmalı.

arduino l298n bağlantısı



Adım 3: Kodları Yazalım


Kodlamadaki mantığımızdan kısaca söz etmek gerekir ise in1-in2 pinleri A motorumuzdan sorumlu olan pinler ve in3-in4 pinleri ise B motorumuzdan sorumlu olan pinler. Daha önce "H Köprüsü" ile motor sürmüş olanlar var ise buradaki mantığı kolayca anlayabilecekler. Daha önce bu tür bir deneyimde bulunmamış olanlar var ise de kısaca şöyle özetlenebilir. Motorlardan sorumlu olan iki pinin herhangi birine "HIGH" diğerine "LOW" verirsek motorumuz bir yönde hareket edecektir. Tam tersi verirsek diğer yönde dönecek ve ikisine de "LOW" verdiğimizde ise motor duracaktır. Aşağıdaki kodda olabilecek senaryolara göre kodlama gerçekleştirdim ve açıklamaları mevcut. Kod üzerinde biraz vakit harcayarak kolayca mantığını kavrayabilirsiniz.



#define in1 3
#define in2 5
#define in3 6
#define in4 9

void setup() {
  pinMode(in1, OUTPUT);
  pinMode(in2, OUTPUT);
  pinMode(in3, OUTPUT);
  pinMode(in4, OUTPUT);
}

void loop() {
  // A motorunu + yöne döndür.
  digitalWrite(in1, LOW);
  digitalWrite(in2, HIGH);
  delay(4000); 
  // A motorunu durdur.
  digitalWrite(in1, LOW);
  digitalWrite(in2, LOW);
  delay(4000);
  // A motorunu diğer yöne döndür.
  digitalWrite(in1, HIGH);
  digitalWrite(in2, LOW);
  delay(4000); 
  // A motorunu durdur.
  digitalWrite(in1, LOW);
  digitalWrite(in2, LOW);
  delay(4000);
  
  // B motorunu bir yöne döndür.
  digitalWrite(in3, LOW);
  digitalWrite(in4, HIGH);
  delay(4000); 
  // B motorunu durdur.
  digitalWrite(in3, LOW);
  digitalWrite(in4, LOW);
  delay(4000);
  // B motorunu diğer yöne döndür.
  digitalWrite(in3, HIGH);
  digitalWrite(in4, LOW);
  delay(4000); 
  // B motorunu durdur.
  digitalWrite(in3, LOW);
  digitalWrite(in4, LOW);
  delay(4000);
} 
Şimdi ise dc motorumuz istediğimiz hızda dönmüyor ise bunu nasıl sağlayabileceğimize bir göz atalım.

Arduino L298N Motor Hız Kontrolü


Yukarıda ENA ve ENB pinlerine bağlı olan kelepçelerin çıkarılarak motolarımızda isteğimiz hız kontrolünü sağlayabildiğimizden bahsetmiştik. Bu pinleri Arduino'muz üzerinde yer alan PWM pinlerine bağlamalıyız. Bu pinlerin yanında (~) işareti mevcut. Bu işaret sayesinde hangi pinlerin PWM pini olduğunu rahatlıkla anlayabilirsiniz. ENA ve ENB PWM pinlerinden analogWrite(enA, 255); komutuyla 0 ile 255 arasında bir değer ile motor hız kontrolünü sağlayabilirsiz.

Bağlantı Şeması


arduino l298n hız kontrolü



Hız Kontrol Kodları



#define in1 3
#define in2 5
#define in3 6
#define in4 9
#define enA 10
#define enB 11


void setup() {
  pinMode(in1, OUTPUT);
  pinMode(in2, OUTPUT);
  pinMode(in3, OUTPUT);
  pinMode(in4, OUTPUT);
  pinMode(enA, OUTPUT);
  pinMode(enB, OUTPUT);
}

void loop() {
  // motor A
  analogWrite(enA,  255);   // A motoru 255 ile tam hızda dönüyor
  digitalWrite(in1, LOW);
  digitalWrite(in2,  HIGH);  
 
  // motor B
  analogWrite(enB,  40);   // B motoru 40 ile yavaş dönüyor
  digitalWrite(in3, HIGH);
  digitalWrite(in4,  LOW);
} 
Arduino L298N motor sürücü kartı ile motor sürmek işte bu kadar basit. Aklınıza takılan yerleri sorabilmek için yorumlar kısmını kullanabilirsiniz. Sevdiği işi yapan birinin yazısını okudunuz. En yakın zamanda tekrar görüşmek dileğiyle.

Hiç yorum yok:

Yorum Gönder