Bu yazıda ne yapacağız?
- DC motorun içine bakıp neden döndüğünü göreceğiz.
- H köprüsüyle motoru ileri ve geri çevirip frenleyeceğiz.
- PWM ile hızı ayarlayacağız ve deneme alanında kendimiz deneyeceğiz.
- L298N motor sürücüyü Arduino'ya bağlayıp yön ve hız kodunu yazacağız.
Neden işe yarar? Robot tekerleri, pervaneler ve konveyörler çoğunlukla DC motorla döner. Yönü ve hızı kodla yönetebilen biri, robotu yürütmenin yarısını öğrenmiş olur.
DC motor nedir?
DC motor, pil ya da adaptörden gelen doğru akımı dönme hareketine çeviren motordur. İki ucuna gerilim verince döner, uçları ters bağlayınca ters yöne döner.
- Stator: dıştaki sabit mıknatıslar.
- Rotor: milin üstündeki bobinler, dönen kısım.
- Kollektör (komütatör): milin ucundaki, parçalara bölünmüş bakır halka.
- Fırçalar: kollektöre sürtünerek bobine akım taşıyan iki küçük parça.
DC motor nasıl çalışır?
Mıknatısın arasındaki telden akım geçince tele bir kuvvet etki eder. Bobinin bir yanı yukarı, öbür yanı aşağı itilir ve rotor döner.
Yarım tur sonra bu itme rotoru geri çevirirdi. Kollektör tam o anda akımın yönünü değiştirir, kuvvet hep aynı yöne döndürür (animasyonda simgelerin yer değiştirdiği an).
Motor ve jeneratör aynı makinedir: dönen motor gerilim de üretir. Fren bundan yararlanır.
DC motor yön değiştirme: H köprüsü
Yönü değiştirmek için motorun uçlarındaki gerilimi ters çevirmek gerekir. Bunu dört anahtarlı H köprüsü yapar.
- S1 + S4: motor ileri.
- S3 + S2: motor geri.
- S2 + S4: motorun iki ucu birleşir. Dönen motorun ürettiği akım onu frenler, çabuk durur.
- S1 + S2 ya da S3 + S4 asla: akım motoru atlayıp doğrudan GND'ye gider. Bu kısa devredir.
Gerçek sürücülerde anahtarların yerinde transistörler vardır.
DC motor hız kontrolü: PWM
Hızı ayarlamanın en kolay yolu PWM: gerilimi çok hızlı açıp kapatmak. Açık kalma oranı (görev oranı) arttıkça motorun gördüğü ortalama gerilim ve hız artar.
ortalama gerilim ≈ görev oranı × besleme gerilimi
analogWrite değeri = görev oranı × 255
Arduino Uno'da analogWrite() yalnızca 3, 5, 6, 9, 10 ve 11 numaralı pinlerde çalışır. Frekansı 490 Hz'dir, 5 ve 6 numaralı pinlerde 980 Hz.
Kendiniz deneyin
Anahtarlara dokunun, akımın yolunu izleyin, sonra hızı kaydırıcıyla değiştirin.
Burada H köprüsünün dört anahtarını açıp kapatabileceğiniz ve PWM kaydırıcısıyla motor hızını ayarlayabileceğiniz bir deneme alanı var; JavaScript ile çalışır. Açılmadıysa yukarıdaki H köprüsü ve PWM görselleri aynı şeyi gösteriyor.
Deneyin: S1 ile S2'yi birlikte kapatın ve uyarıyı okuyun. Sonra görev oranını %10'a indirin. Gerçek motorlar da düşük görev oranında sürtünmeyi yenemez, hiç dönmeyebilir.
Motor sürücü ne işe yarar?
Motor sürücü, Arduino'nun zayıf sinyalleriyle pilin büyük akımını motora anahtarlar. Arduino pini motoru doğrudan süremez:
- Uno'daki ATmega328P'nin bir pini için mutlak akım sınırı 40 mA'dir.
- Küçük bir 3 V motor bile (FA-130) sıkışınca yaklaşık 2,1 A çeker.
L298N'nin içinde iki H köprüsü vardır: iki motoru ayrı ayrı sürer.
L298N motor sürücü nasıl bağlanır?
| L298N | Bağlanacak yer |
|---|---|
| ENA | Arduino 9 (PWM). Önce ENA üzerindeki jumper'ı çıkarın |
| IN1, IN2 | Arduino 8 ve 7 |
| OUT1, OUT2 | Motorun iki ucu |
| 12V | Motor pilinin artısı |
| GND | Pilin eksisi ve Arduino GND |
Pinlere ne yazınca ne olur (L298 datasheet'indeki tablo):
| IN1 | IN2 | ENA | Motor |
|---|---|---|---|
| HIGH | LOW | HIGH ya da PWM | İleri |
| LOW | HIGH | HIGH ya da PWM | Geri |
| aynı | aynı | HIGH | Fren (hızlı durma) |
| fark etmez | fark etmez | LOW | Serbest, boşa düşer |
İki önemli ayrıntı:
- Gerilim kaybı: L298 kendi üstünde gerilim harcar. Datasheet'e göre 1 A'de toplam düşüm tipik 1,8 V, en fazla 3,2 V; 2 A'de en fazla 4,9 V. 6 V'luk motoru 6 V pille sürerseniz motora 4 V civarı kalır.
- 5V jumper'ı: Modülün üstünde 5 V regülatörü var. Kılavuza göre besleme 12 V'un altındaysa jumper takılı kalır ve 5V ucu Arduino'yu besleyebilir. Daha yüksek beslemede jumper'ı çıkarın, Arduino'yu ayrı besleyin.
Arduino ile yön ve hız kodu
// L298N ile DC motor: yön ve hız (Arduino Uno)
// ENA -> 9 (PWM), IN1 -> 8, IN2 -> 7, GND'ler ortak
const int ENA = 9;
const int IN1 = 8;
const int IN2 = 7;
void ileri(int hiz) { // hiz: 0-255
digitalWrite(IN1, HIGH);
digitalWrite(IN2, LOW);
analogWrite(ENA, hiz);
}
void geri(int hiz) {
digitalWrite(IN1, LOW);
digitalWrite(IN2, HIGH);
analogWrite(ENA, hiz);
}
void fren() { // iki uç birbirine bağlanır, çabuk durur
digitalWrite(IN1, LOW);
digitalWrite(IN2, LOW);
digitalWrite(ENA, HIGH);
}
void serbest() { // sürücü kapanır, motor boşa düşer
digitalWrite(ENA, LOW);
}
void setup() {
pinMode(ENA, OUTPUT);
pinMode(IN1, OUTPUT);
pinMode(IN2, OUTPUT);
}
void loop() {
for (int h = 80; h <= 255; h += 5) { // yavaş yavaş hızlan
ileri(h);
delay(40);
}
delay(1000);
fren(); // yön değiştirmeden önce durdur
delay(500);
geri(150); // yaklaşık %60 hızla geri
delay(1500);
serbest();
delay(1500);
}
Hızı elle ayarlamak isterseniz bir potansiyometre bağlayın:
// Potansiyometreyle hız: orta ucu A0'a, yan uçları 5V ve GND'ye
const int ENA = 9, IN1 = 8, IN2 = 7;
void setup() {
pinMode(ENA, OUTPUT);
pinMode(IN1, OUTPUT);
pinMode(IN2, OUTPUT);
digitalWrite(IN1, HIGH); // yön: ileri
digitalWrite(IN2, LOW);
}
void loop() {
int deger = analogRead(A0); // 0-1023
analogWrite(ENA, deger / 4); // 0-255
}
DC motor kaç volt ile çalışır?
Etiketinde ya da datasheet'inde yazan gerilimle; tek cevap yok. Örneğin FA-130 tipi küçük motor 3 V için yapılmıştır.
- Düşük gerilim: yavaş ve zayıf döner.
- Çok yüksek gerilim: ısınır, ömrü kısalır.
- Sürücü kaybı: L298N ile motora beslemeden 2 V kadar az ulaşır.
Redüktörlü DC motor nedir?
Ucuna dişli kutusu takılmış DC motordur. Örneğin 1:48 oranlı motorun mili 48 kat yavaş döner, tork (dönme kuvveti) ise yaklaşık 48 kat artar; dişli kayıpları bunu biraz azaltır. Robot tekerlerinde çoğunlukla bu kullanılır.
Belirli bir açıya gitmek gerekiyorsa servo motor, adım adım hassas konum gerekiyorsa step motor daha uygundur. DC motoru enkoderle bir konuma götürmek için PID kullanılır.
Sık yapılan hatalar
| Belirti | Sebep | Çözüm |
|---|---|---|
| Motor hep tam hızda, hız değişmiyor | ENA jumper'ı takılı | Jumper'ı çıkarın, ENA'yı pin 9'a bağlayın |
| Motor hiç dönmüyor, LED yanıyor | GND ortak değil ya da ENA bağlı değil | Pil eksisini Arduino GND'ye bağlayın, ENA kablosuna bakın |
| Düşük hızda vızıldıyor ama dönmüyor | Ortalama gerilim sürtünmeyi yenemiyor | En düşük çalışan değeri bulun, altına inmeyin |
| Motor çalışınca Arduino resetleniyor | Motor akımı Arduino'nun beslemesini düşürüyor | Motoru ayrı pille besleyin, GND'ler ortak kalsın |
| Sürücü çok ısınıyor | Motor fazla akım çekiyor ya da sıkışmış | Yükü azaltın, mili kontrol edin, soğutucuyu takılı tutun |
Güvenlik: Mil sıkışırsa motor en büyük akımını çeker, sürücü ve kablolar ısınır: beslemeyi kesin, motoru elle tutmayın. LiPo pille kısa devreye karşı çok dikkatli olun.
Kaynaklar
Erişim: 17 Ekim 2026
- STMicroelectronics, L298 Dual Full-Bridge Driver datasheet: 46 V, kanal başına 2 A, toplam gerilim düşümü (VCEsat), yön ve fren tablosu.
- Handson Technology, L298N Dual H-Bridge Motor Driver kullanım kılavuzu: modüldeki 5 V regülatörü ve jumper'lar.
- Arduino Docs, analogWrite(): PWM pinleri, frekansları ve 0-255 değer aralığı.
- Microchip, ATmega328P datasheet: pin başına 40 mA mutlak sınır.
- HyperPhysics (Georgia State University), DC Motor ve Generator and Motor: çalışma prensibi, motorun jeneratör gibi çalışması.
- Pololu, Mabuchi FA-130 teknik değerleri: 3 V çalışma gerilimi, 3 V'ta yaklaşık 2,1 A durma akımı.