Robotik projelerin, çizgi izleyen araçların ve uzaktan kumandalı arabaların kalbi motor sürücülerdir. Arduino’nun kendi pinleri yüksek akım çeken DC motorları doğrudan çalıştırmaya yetmez; zorlandığında kartınız yanabilir. Bu rehberde, hobicilerin en çok tercih ettiği L298N Çift Kanallı Motor Sürücü modülünü kullanarak iki adet DC motorun yönünü ve hızını (PWM ile) nasıl kontrol edeceğimizi adım adım öğreneceğiz.
L298N modülünü bağlarken yapılan en büyük hata, harici pilin eksisi (GND) ile Arduino'nun eksisini (GND) birleştirmemektir. Devrenizin çalışması için bu ortak GND bağlantısı şarttır. Bağlantıları yaparken aşağıdaki görseli ve tabloyu takip edebilirsiniz:

| L298N Üzerindeki Pin/Klemens | Bağlanacağı Yer |
|---|---|
| 12V Girişi | Harici Pilin Artı (+) Kutbu |
| GND Girişi | Harici Pilin Eksi (-) Kutbu VE Arduino GND Pini (Ortak) |
| 5V Girişi | Boş bırakın (Eğer sürücü üzerindeki 5V jumper takılıysa, burası dışarıya 5V çıkış verir) |
| OUT1 - OUT2 Klemensleri | 1. Motorun Kabloları |
| OUT3 - OUT4 Klemensleri | 2. Motorun Kabloları |
| ENA (Hız Pini - Motor A) | Arduino Pin 5 (PWM Pini) - *Jumper'ı söküp kablo bağlayın* |
| IN1 / IN2 (Yön Pinleri) | Arduino Pin 6 / Pin 7 |
| IN3 / IN4 (Yön Pinleri) | Arduino Pin 8 / Pin 9 |
| ENB (Hız Pini - Motor B) | Arduino Pin 10 (PWM Pini) - *Jumper'ı söküp kablo bağlayın* |
Bu kodda motorların hem yönünü hem de hızını kontrol ediyoruz. analogWrite fonksiyonu ile motorlara 0 (durma) ile 255 (tam hız) arasında hız değerleri göndereceğiz.
// Motor A (Sol Motor) Pin Tanımlamaları
const int ena = 5;
const int in1 = 6;
const int in2 = 7;
// Motor B (Sağ Motor) Pin Tanımlamaları
const int in3 = 8;
const int in4 = 9;
const int enb = 10;
void setup() {
// Tüm motor kontrol pinlerini çıkış olarak ayarlıyoruz
pinMode(ena, OUTPUT);
pinMode(enb, OUTPUT);
pinMode(in1, OUTPUT);
pinMode(in2, OUTPUT);
pinMode(in3, OUTPUT);
pinMode(in4, OUTPUT);
}
void loop() {
// ---- 1. ADIM: Motorları Yarı Hızda İleri Döndürme ----
digitalWrite(in1, HIGH);
digitalWrite(in2, LOW);
digitalWrite(in3, HIGH);
digitalWrite(in4, LOW);
analogWrite(ena, 150); // Hız değeri: 150 (Maksimum 255)
analogWrite(enb, 150);
delay(3000); // 3 saniye boyunca ileri git
// ---- 2. ADIM: Motorları Durdurma ----
digitalWrite(in1, LOW);
digitalWrite(in2, LOW);
digitalWrite(in3, LOW);
digitalWrite(in4, LOW);
delay(1000); // 1 saniye dur
// ---- 3. ADIM: Motorları Tam Hızda Geri Döndürme ----
digitalWrite(in1, LOW);
digitalWrite(in2, HIGH);
digitalWrite(in3, LOW);
digitalWrite(in4, HIGH);
analogWrite(ena, 255); // Maksimum hız
analogWrite(enb, 255);
delay(3000); // 3 saniye boyunca geri git
// ---- 4. ADIM: Motorları Durdurma ----
digitalWrite(in1, LOW);
digitalWrite(in2, LOW);
digitalWrite(in3, LOW);
digitalWrite(in4, LOW);
delay(1000);
}
Çözüm: Motorların dönüş yönü kabloların takılış şekline bağlıdır. Ters dönen motorun L298N üzerindeki (OUT klemensindeki) iki kablosunun yerini birbiriyle değiştirin (Örn: OUT1'deki kabloyu OUT2'ye, OUT2'dekini OUT1'e takın). Sorun çözülecektir.
Çözüm: L298N sürücüsüne harici bir pil bağladığınızdan emin olun. Motorlar Arduino'nun 5V pini üzerinden gelen akımla dönemezler. Ayrıca yukarıda belirttiğimiz gibi, harici pilinizin eksi (-) kutbundan Arduino'nun GND pinine bir siyah jumper kablo çekerek şaseleri (GND) birleştirdiğinizi mutlaka kontrol edin.
Çözüm: L298N kartının ENA ve ENB pinlerinin üzerinde siyah plastik kısa devre başlıkları (jumper) bulunur. Hız kontrolü yapmak için bu plastikleri elinizle söküp çıkarmalı ve açığa çıkan pinlere Arduino'nun 5 ve 10 numaralı PWM özellikli pinlerinden kablo çekmelisiniz.
Henüz yorum yapılmamış. İlk yorumu siz yapın!