Ana Sayfa · Akademi · Robotik ve Kodlama · Arduino · Motor Sürücü

Motor Sürücü

Motor sürücü ve ayrı güçle bir DC motorun yön ve hızını güvenle kontrol etmeyi öğren.

DERS PUSULASI

Bu sayfayı ne için kullanacaksın?

Ana fikir

Motor sürücü, Arduino'nun küçük sinyalini alıp bir DC motoru ayrı bir güç kaynağından besleyen aracıdır; bu sayede motorun yönünü ve hızını (PWM ile) güvenle kontrol ederken kartımıza da zarar vermeyiz.

Üretilecek kanıt

Bir masaüstü vantilatör davranışı tasarla: motor önce yavaş, sonra orta, sonra hızlı dönsün; ardından dursun ve ters yöne düşük hızda dönsün. Önce sözde kodunu yaz, sonra bir yetişkinle birlikte sürücü ve pil paketiyle dene. Başla Yön: ileri Hız 80, 2 saniye bekle Hız 150, 2 saniye bekle Hız 220, 2 saniye bekle Motoru durdur (hız 0), 1 saniye bekle Yön:…

Kontrol tuzağı

Motoru doğrudan pine bağlamak En sık ve en tehlikeli hata budur. Motoru Arduino pinine doğrudan bağlamak pini ve kartı bozabilir. Araya her zaman bir motor sürücü koy. Ortak GND'yi unutmak Arduino ile pil paketinin GND'lerini birbirine bağlamazsan sürücü Arduino'nun sinyalini "anlayamaz" ve motor beklenmedik davranır.…

Sonraki bağlantı

Kütüphaneler: Motor, sensör ve ekran gibi bileşenleri kontrol etmeyi kolaylaştıran hazır kod paketlerini tanıyacak ve kendi kodumuza nasıl ekleyeceğimizi öğreneceğiz.

Modül kaynakları: Python Tutorial · Arduino Learn

SeviyeBaşlangıç
Yaş10–16
Süre25–35 dk
Ön koşulUltrasonik Mesafe Sensörü
İçerikStandart ders · 1.385 kelime
Son güncelleme

Bir cümlelik özet

Motor sürücü, Arduino'nun küçük sinyalini alıp bir DC motoru ayrı bir güç kaynağından besleyen aracıdır; bu sayede motorun yönünü ve hızını (PWM ile) güvenle kontrol ederken kartımıza da zarar vermeyiz.

Neden önemli?

Bir önceki derste ultrasonik sensörle robotun önündeki engeli "görmesini" sağladık. Peki robot bir engel görünce durmak ya da yön değiştirmek isterse, tekerlekleri neyle döndürecek? İşte burada DC motor devreye girer.

Ama küçük bir sorun var. Bir LED yakmak için pine doğrudan tel bağlıyorduk. Motoru da öyle bağlamak isteyebilirsin. Ne yazık ki bu, kartını bozmanın en kolay yollarından biridir. DC motor, bir LED'e göre çok daha fazla akım çeker ve Arduino'nun pini bu kadar akımı veremez.

Çözüm, araya bir motor sürücü koymaktır. Bu ders, hareket eden gerçek robotların kalbindeki bileşeni tanıtır. Aslında bu mantığı günlük hayatta zaten görüyorsun:

Bu iki davranışın (yön değiştirme ve hız ayarı) arkasında, bir motoru güvenle süren bir devre vardır.

Motoru neden doğrudan pinden süremeyiz?

Akım meselesi

Elektronik dersinden hatırla: akım, bir devreden geçen elektrik miktarıdır. Bir LED çok küçük bir akımla parlar, bu yüzden onu doğrudan pine bağlayabildik. DC motor ise mili döndürmek için çok daha fazla akım ister; özellikle ilk hareket anında (kalkışta) çektiği akım en yüksektir.

Arduino'nun bir pini yalnızca birkaç miliamper verebilecek şekilde tasarlanmıştır. Motor bundan çok daha fazlasını ister. Sonuç ikisinden biri olur: ya motor zar zor döner ya da pin aşırı yüklenip kartın zarar görür.

Basit kural: Arduino'nun pini bir motoru döndürmek için değil, "emir" vermek için vardır. Gücü başka bir yerden almalıyız.

Bir musluk gibi düşün

Motor sürücüyü bir musluk gibi düşünebilirsin. Parmağınla küçük bir kolu ittirirsin; bu az kuvvet ister (Arduino'nun sinyali). Ama akan su, borunun basıncından gelir (ayrı güç kaynağı). Küçük bir hareketle, çok daha güçlü bir akışı kontrol edersin.

Motor sürücü ne yapar?

Motor sürücü (motor driver), Arduino'nun verdiği küçük sinyali alıp motoru ayrı bir güç kaynağından besleyen bir devredir. Okullarda en çok kullanılan örnekleri L298N ve L293D kartlarıdır.

Motor sürücü aynı anda iki iş yapar:

  1. Arduino'nun sinyalini kullanarak motoru açar/kapatır ve yönünü seçer.
  2. Motorun ihtiyaç duyduğu akımı ayrı güç kaynağından (bir pil paketi) çeker, böylece Arduino'yu korur.

Üç şeyi bağlarız

Bir L298N ile tek motoru sürerken üç grup bağlantı vardır:

Yön nasıl seçilir?

Yön, IN1 ve IN2'nin durumuna bağlıdır. İkisi zıt olduğunda motor döner; aynı olduğunda durur.

Yön nasıl seçilir? tablosu
IN1IN2Motor
HIGHLOWİleri döner
LOWHIGHGeri döner
LOWLOWDurur (serbest)

Hız nasıl ayarlanır? (PWM)

Hızı ayarlamak için PWM (Pulse Width Modulation, darbe genişlik modülasyonu) kullanırız. PWM, gücü çok hızlı açıp kapatmaktır. Ne kadar uzun "açık" kalırsa motor o kadar hızlı döner. Arduino'da bunu analogWrite(pin, deger) ile yaparız; deger 0 ile 255 arasındadır. 0 durak, 255 tam hız demektir.

Günlük hayattan iki örnek

Yön ve hız kontrolü: tam sketch

Aşağıdaki sketch bir L298N üzerinden tek motoru ileri, sonra geri döndürür ve arada durur. Pin numaraları örnektir; kendi bağlantına göre değiştir.

const int IN1 = 8;   // yön pini 1
const int IN2 = 9;   // yön pini 2
const int ENA = 5;   // hız pini (PWM ~)

void setup() {
  pinMode(IN1, OUTPUT);
  pinMode(IN2, OUTPUT);
  pinMode(ENA, OUTPUT);
}

Kurulum bittikten sonra asıl döngü:

void loop() {
  digitalWrite(IN1, HIGH);   // ileri yön
  digitalWrite(IN2, LOW);
  analogWrite(ENA, 90);      // düşük hız (0-255)
  delay(2000);

  analogWrite(ENA, 0);       // dur
  delay(1000);

  digitalWrite(IN1, LOW);    // geri yön
  digitalWrite(IN2, HIGH);
  analogWrite(ENA, 90);
  delay(2000);

  analogWrite(ENA, 0);       // dur
  delay(1000);
}

Dikkat et: hız 90 ile başlıyor, 255 değil. Bir motoru her zaman düşük hızda test edip sonra artırırız.

Hızı yavaşça artıran örnek

for döngüsü ve analogWrite ile hızı kademeli yükseltebiliriz. Bu, robotun aniden fırlamasını önler.

void loop() {
  digitalWrite(IN1, HIGH);         // ileri yön
  digitalWrite(IN2, LOW);

  for (int hiz = 60; hiz <= 200; hiz += 20) {
    analogWrite(ENA, hiz);         // hızı 60'tan 200'e çıkar
    delay(500);
  }

  analogWrite(ENA, 0);             // dur
  delay(1500);
}

Mini uygulama

Bir masaüstü vantilatör davranışı tasarla: motor önce yavaş, sonra orta, sonra hızlı dönsün; ardından dursun ve ters yöne düşük hızda dönsün. Önce sözde kodunu yaz, sonra bir yetişkinle birlikte sürücü ve pil paketiyle dene.

Başla
Yön: ileri
Hız 80,  2 saniye bekle
Hız 150, 2 saniye bekle
Hız 220, 2 saniye bekle
Motoru durdur (hız 0), 1 saniye bekle
Yön: geri
Hız 100, 2 saniye bekle
Motoru durdur
Bitir

Kendine kontrol soruları:

Sık yapılan hatalar

Motoru doğrudan pine bağlamak

En sık ve en tehlikeli hata budur. Motoru Arduino pinine doğrudan bağlamak pini ve kartı bozabilir. Araya her zaman bir motor sürücü koy.

Ortak GND'yi unutmak

Arduino ile pil paketinin GND'lerini birbirine bağlamazsan sürücü Arduino'nun sinyalini "anlayamaz" ve motor beklenmedik davranır. Ortak GND şart.

Güç kaynağını ayırmamak

Motoru ve Arduino'yu aynı zayıf kaynaktan beslersen kart yeniden başlayabilir ya da motor dönmez. Motora ayrı bir pil paketi ver.

Yön değişimini aniden yapmak

Motor tam hızda ileri giderken bir anda geri komutu vermek sürücüyü ve motoru zorlar. Önce analogWrite(ENA, 0) ile durdur, kısa bekle, sonra ters yönü ver.

PWM olmayan pine hız vermek

analogWrite yalnızca ~ işaretli PWM pinlerinde çalışır. ENA'yı PWM olmayan bir pine bağlarsan hız ayarı beklendiği gibi olmaz.

Güvenlik notu

DC motorlar dönen, hareketli parçalardır. Güvenli çalışmak için:

Ders özeti

Kontrol soruları

  1. DC motoru neden doğrudan Arduino pininden süremeyiz?
  2. Motor sürücünün aynı anda yaptığı iki iş nedir?
  3. analogWrite(ENA, 90) satırı ne yapar ve 90 sayısı hangi aralıktadır?
  4. IN1 HIGH ve IN2 LOW iken motor ne yapar? Bunu tersine çevirirsek ne olur?
  5. "Ortak GND" ne demektir ve neden gereklidir?

Cevaplar

  1. DC motor, özellikle kalkışta çok fazla akım çeker; Arduino'nun pini bu akımı veremez ve pin ya da kart zarar görebilir.
  2. Arduino'nun sinyaliyle motoru açıp kapatmak ve yönünü seçmek; motoru ayrı güç kaynağından besleyerek gerekli akımı sağlamak.
  3. ENA pinine PWM ile 90 değerinde bir hız verir; yani motoru orta-düşük hızda döndürür. Değer 0 (durak) ile 255 (tam hız) arasındadır.
  4. IN1 HIGH, IN2 LOW iken motor bir yöne (ileri) döner. Tersine çevirince (IN1 LOW, IN2 HIGH) motor diğer yöne (geri) döner.
  5. Ortak GND, motor güç kaynağının ve Arduino'nun GND uçlarının birbirine bağlanmasıdır. İki devrenin aynı "sıfır noktasını" paylaşması gerekir; yoksa sürücü Arduino'nun sinyalini doğru okuyamaz.

Kaynak ve doğrulama notu

“Motor Sürücü” dersi için doğrulama odağı Motoru neden doğrudan pinden süremeyiz? ile Bir musluk gibi düşün arasındaki ilişkinin örnekler üzerinde tutarlı çalışmasıdır. Arduino uyumlu kartlarda pin, gerilim ve akım sınırları modele göre değişebilir. Kod derlense bile devre güvenli olmayabileceğinden, motor ve servo gibi yükler uygun sürücü ve harici besleme ile kullanılmalıdır.

Sonraki ders

Kütüphaneler: Motor, sensör ve ekran gibi bileşenleri kontrol etmeyi kolaylaştıran hazır kod paketlerini tanıyacak ve kendi kodumuza nasıl ekleyeceğimizi öğreneceğiz.

Quiz’i BaşlatArduino bölümüne dön
SORU HAVUZU

Bu dersi 10 soruyla pekiştir

Bu ders için 20 soruluk bir havuz hazırlandı. Her başlangıçta 10 soru ve seçenekler yeniden karıştırılır.