Ana Sayfa · Akademi · Robotik ve Kodlama · Robotik Sistemler · Motorlar ve Sürücüler

Motorlar ve Sürücüler

Motor sürücüyle iki tekerleği bağımsız sürüp robotu ileri, geri ve döndürmeyi öğren.

DERS PUSULASI

Bu sayfayı ne için kullanacaksın?

Ana fikir

Bir robotun iki tekerleğini DC motor ve motor sürücüyle bağımsız kontrol ederek ileri, geri ve dönme hareketlerini oluşturmayı öğreniyoruz.

Üretilecek kanıt

Aşağıdaki Arduino kodu, bir L298N sürücüye bağlı iki motoru önce ileri sürer, sonra sağa döner. Kod 25 satırın altındadır ve mantık sözde kodla birebir aynıdır. // Sol motor pinleri int solYon = 7; // yön int solHiz = 5; // PWM hız // Sağ motor pinleri int sagYon = 8; int sagHiz = 6; void setup() { pinMode(solYon, OUTPUT); pinMode(sagYon, OUTPUT); } void…

Kontrol tuzağı

Motoru doğrudan Arduino pinine bağlamak Bu, pini yakabilir. Arada mutlaka bir motor sürücü olmalıdır. Ortak toprağı unutmak Arduino ve motor pili ayrı beslenir ama GND hatları birbirine bağlanmalıdır. Bağlanmazsa motorlar hiç dönmez veya rastgele davranır. Motorları tek pilden beslemek Motorları Arduino ile aynı…

Sonraki bağlantı

Engel Algılama: Robotun önündeki engeli mesafe sensörüyle fark edip durması veya yön değiştirmesi.

Modül kaynakları: Python Tutorial · Arduino Learn

SeviyeBaşlangıç
Yaş10–16
Süre25–35 dk
Ön koşulGüç Kaynağı Seçimi
İçerikStandart ders · 1.312 kelime
Son güncelleme

Bir cümlelik özet

Bir robotun iki tekerleğini DC motor ve motor sürücüyle bağımsız kontrol ederek ileri, geri ve dönme hareketlerini oluşturmayı öğreniyoruz.

Neden önemli?

Şimdiye kadar robotun "algıla, karar ver, hareket et" döngüsünün ilk iki adımını çalıştık. Sensörler ortamı okur, mikrodenetleyici karar verir. Ama robot hareket etmezse yaptığımız iş bir masaüstü programından farksızdır.

Hareket, robotu robot yapan şeydir. Bir çizgi izleyen araç da, engelden kaçan bir gezgin de aynı temel beceriye dayanır: iki tekerleği ayrı ayrı sürebilmek. Sol tekerlek sağdan hızlı dönerse robot sağa kıvrılır. İki tekerlek ters yönde dönerse robot olduğu yerde döner. Bütün yön kontrolü bu basit fikirden doğar.

Bu derste motoru neden doğrudan Arduino'ya bağlayamadığımızı, motor sürücünün ne işe yaradığını ve ileri/geri/dön mantığının kodda nasıl göründüğünü göreceğiz.

Motor neden doğrudan Arduino'ya bağlanmaz?

Bir önceki derste güç kaynağı seçimini konuştuk. Şimdi o bilgiyi motorlara bağlıyoruz.

DC motor akım ister

DC motor, içinden akım geçince dönen basit bir parçadır. Ne kadar çok yük taşırsa (robotun ağırlığı, zemindeki sürtünme) o kadar çok akım çeker. Küçük bir robot motoru bile kalkışta yüzlerce miliamper, hatta bazen bir amperi aşan akım isteyebilir.

Arduino'nun bir pininden güvenle verebileceği akım ise sadece 20 miliamper civarındadır. Motoru doğrudan pine bağlarsak pin yanabilir ve karttaki hassas parçalar zarar görebilir.

Kısa kural: Arduino pini bir motoru döndüremez. Pin yalnızca "emir" verir; asıl gücü başka bir devre sağlar.

Motor sürücü aradaki köprüdür

Motor sürücü (motor driver), Arduino'dan gelen küçük sinyali alıp motora giden büyük akımı açıp kapayan bir devredir. Bir çeşit kontrollü anahtar gibi düşünebilirsin: Arduino "aç" der, sürücü de kalın kablodan gelen gücü motora ulaştırır.

Sık kullanılan bir sürücü çipi L298N'dir. Bu çip içinde H-köprüsü denen bir düzen bulunur. H-köprüsü, motora giden akımın yönünü değiştirebilir; yani motoru hem ileri hem geri döndürebilir. Yön değişimi, robotun geri gitmesini ve dönmesini sağlar.

Ayrı güç kaynağı ve ortak toprak

Motorlar çalışırken kısa dalgalanmalar üretir. Bu dalgalanmalar Arduino'yu aynı pilden besliyorsak kartı resetleyebilir veya bozabilir. Bu yüzden iki ayrı besleme kullanırız:

Tek şart şudur: iki devrenin toprak (GND) hatları birbirine bağlanmalıdır. Buna ortak toprak denir. Ortak toprak olmadan Arduino'nun gönderdiği sinyal sürücü tarafından doğru "okunamaz". Aynı anlaşmayı konuşmak için ikisinin de aynı sıfır noktasını paylaşması gerekir.

İki tekerleği bağımsız sürmek

Robotumuzun solda ve sağda birer motoru var. Her motor bir tekerleği döndürüyor. Sürücü çipinde her motor için genelde şu sinyaller bulunur:

PWM (Pulse Width Modulation), pini çok hızlı açıp kapayarak "yarım güç", "çeyrek güç" gibi ara hızlar üretme yöntemidir. micro:bit ve Arduino derslerinde LED parlaklığı için kullandığımız fikrin aynısıdır; burada parlaklık yerine hızı ayarlıyoruz.

İleri, geri ve dönme mantığı

Yön kontrolünün tamamı iki tekerleğin hızının ve yönünün karşılaştırılmasıyla açıklanır:

İleri, geri ve dönme mantığı tablosu
HareketSol tekerlekSağ tekerlek
İleriileriileri
Gerigerigeri
Sağa dönileridur veya geri
Sola döndur veya geriileri
Yerinde sağa dönilerigeri

Sözde kodla düşünürsek:

İLERİ:
  sol motor = ileri, hız 200
  sağ motor = ileri, hız 200

SAĞA DÖN:
  sol motor = ileri, hız 200
  sağ motor = ileri, hız 90

İkinci örnekte sağ tekerlek yavaşladığı için robot yavaş kalan tarafa, yani sağa kıvrılır. Tıpkı bir kürek teknesinde bir kolu yavaş çekince o yöne dönmen gibi.

Örnek 1: Yumuşak dönüş mü, keskin dönüş mü?

Aynı iki motorla, sadece hız ve yön değerlerini değiştirerek çok farklı hareketler elde ederiz.

Örnek 2: Neden robot düz gitmiyor?

İki motora aynı hız değerini (örneğin 200) verdin ama robot hafifçe sola kayıyor. Bu çok normaldir: hiçbir iki motor tam olarak birbirinin aynısı değildir; biri biraz daha güçlü olabilir. Çözüm, yazılımda bir motora küçük bir düzeltme eklemektir; örneğin sağ motora 200, sol motora 210 vermek. Bu, gerçek robotlarda sık yapılan ince ayardır.

Mini uygulama

Aşağıdaki Arduino kodu, bir L298N sürücüye bağlı iki motoru önce ileri sürer, sonra sağa döner. Kod 25 satırın altındadır ve mantık sözde kodla birebir aynıdır.

// Sol motor pinleri
int solYon = 7;      // yön
int solHiz = 5;      // PWM hız

// Sağ motor pinleri
int sagYon = 8;
int sagHiz = 6;

void setup() {
  pinMode(solYon, OUTPUT);
  pinMode(sagYon, OUTPUT);
}

void ileri() {
  digitalWrite(solYon, HIGH);
  digitalWrite(sagYon, HIGH);
  analogWrite(solHiz, 200);   // eşit hız
  analogWrite(sagHiz, 200);
}

void sagaDon() {
  digitalWrite(solYon, HIGH);
  digitalWrite(sagYon, HIGH);
  analogWrite(solHiz, 200);   // sol hızlı
  analogWrite(sagHiz, 90);    // sağ yavaş
}

void loop() {
  ileri();
  delay(1000);
  sagaDon();
  delay(600);
}

Robotu yere koymadan önce tekerleklerini havaya kaldır (örneğin bir kutunun üstüne oturt) ve tekerleklerin doğru yönde döndüğünü izle. Bir tekerlek ters dönüyorsa o motorun iki kablosunun yerini değiştir ya da kodda yön pinini LOW yap.

Sık yapılan hatalar

Motoru doğrudan Arduino pinine bağlamak

Bu, pini yakabilir. Arada mutlaka bir motor sürücü olmalıdır.

Ortak toprağı unutmak

Arduino ve motor pili ayrı beslenir ama GND hatları birbirine bağlanmalıdır. Bağlanmazsa motorlar hiç dönmez veya rastgele davranır.

Motorları tek pilden beslemek

Motorları Arduino ile aynı pilden beslersen kart sürekli resetlenebilir. Motorlara ayrı pil paketi ver.

Hemen tam hızla başlamak

255 (tam hız) ile başlamak robotu masadan uçurabilir. İlk denemede düşük hız (örneğin 120) kullan, davranışı gördükten sonra artır.

Tekerlek yönünü kontrol etmeden yere koymak

Bir tekerlek ters bağlıysa robot beklenmedik yöne fırlar. Önce havada test et.

Güvenlik notu

Hareket eden bir robot; parmağı sıkıştırabilir, masadan düşebilir veya bir yere çarpabilir. Bu yüzden:

Ders özeti

Kontrol soruları

  1. DC motoru neden doğrudan Arduino pinine bağlayamayız?
  2. Motor sürücü çipinin (H-köprüsü) sağladığı temel yetenek nedir?
  3. "Ortak toprak" ne demektir ve neden gereklidir?
  4. Robotun sağa yumuşak dönmesi için sol ve sağ tekerlek nasıl sürülmelidir?
  5. Robotu yere koymadan önce hangi güvenlik kontrolünü yapmalıyız ve neden?

Cevaplar

  1. Çünkü DC motor Arduino pininin güvenle verebileceğinden (yaklaşık 20 mA) çok daha fazla akım çeker; doğrudan bağlamak pini ve kartı yakabilir.
  2. H-köprüsü motora giden akımın yönünü değiştirebilir; böylece motor hem ileri hem geri dönebilir. Ayrıca Arduino'nun küçük sinyaliyle büyük akımı açıp kapatır.
  3. Arduino ve motor pili ayrı beslense de iki devrenin GND (toprak) hatlarının birbirine bağlanmasıdır. Sinyalin sürücü tarafından doğru okunması için ortak sıfır noktası gerekir.
  4. Her iki tekerlek de ileri döner, ama sağ tekerlek sol tekerlekten daha yavaş sürülür; robot yavaş kalan tarafa, sağa kıvrılır.
  5. Tekerlekleri havaya kaldırıp doğru yönde döndüklerini kontrol etmeliyiz. Ters bağlı bir motor robotu beklenmedik yöne fırlatabilir; havada test etmek bunu güvenle görmemizi sağlar.

Kaynak ve doğrulama notu

“Motorlar ve Sürücüler” dersi için doğrulama odağı Motor neden doğrudan Arduino'ya bağlanmaz? ile Motor sürücü aradaki köprüdür arasındaki ilişkinin örnekler üzerinde tutarlı çalışmasıdır. Robot davranışı yalnız kodla açıklanamaz; mekanik yapı, güç sistemi, sensör konumu ve zemin koşulları birlikte değerlendirilmelidir. Test sonuçları aynı parkurda birkaç tekrar yapılarak kaydedilmelidir.

Sonraki ders

Engel Algılama: Robotun önündeki engeli mesafe sensörüyle fark edip durması veya yön değiştirmesi.

Quiz’i BaşlatRobotik Sistemler 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.