0
Bu yazıyı " 2 " dakikada okuyabilirsiniz. 🙂

Bu yazıda, Arduino ile DC motorları nasıl kontrol edebileceğinizi öğreneceksiniz. DC motorlar, birçok robotik ve elektronik projede hareket sağlamak için kullanılan yaygın bir motor türüdür.

DC Motorlar Hakkında

DC motorlar, basitçe doğru akım (DC) ile çalışan elektrik motorlarıdır. Çalışma prensipleri, manyetik alanlar arasındaki etkileşim üzerine kuruludur. Bir DC motorda, sabit mıknatıslar (stator) ve bir veya daha fazla elektromıknatıs (rotor) bulunur. Elektromıknatıslara akım uygulandığında, manyetik alanlar oluşur ve bu alanlar stator mıknatıslarının alanlarıyla etkileşime girerek rotorun dönmesine neden olur.

DC Motor Çeşitleri:

Fırçalı DC Motorlar: En yaygın DC motor türüdür. Rotor üzerindeki fırçalar ve komütatör aracılığıyla elektromıknatıslara akım iletilir. Bu tip motorlar basit ve ucuzdur ancak fırçaların aşınması nedeniyle bakım gerektirebilir.

  • Fırçasız DC Motorlar: Fırçalı motorlara göre daha karmaşık bir yapıya sahiptir. Fırçalar yerine elektronik kontrol devreleri kullanılır. Daha verimli, daha uzun ömürlü ve daha sessizdirler ancak daha pahalıdırlar.

DC Motorların Özellikleri:

  • Yön Kontrolü: Motor terminallerine uygulanan voltajın polaritesini değiştirerek motorun dönüş yönü değiştirilebilir.
  • Hız Kontrolü: Motorun hızını, uygulanan voltajın büyüklüğünü veya PWM (Pulse Width Modulation) tekniği ile ayarlayabilirsiniz.
  • Tork: Motorun döndürme kuvvetidir. Motorun fiziksel özellikleri ve uygulanan akım miktarı torku etkiler.

L298N Motor Sürücü Modülü

L298N, iki adet DC motor veya bir adet step motor kontrol etmek için tasarlanmış popüler bir motor sürücü modülüdür. Her bir motor çıkışı için H-köprüsü devresi içerir. H-köprüsü, motorun yönünü değiştirmek ve PWM sinyalleri ile hızını kontrol etmek için kullanılır.

L298N Özellikleri:

  • Çift H-Köprüsü: İki adet DC motor veya bir adet step motor kontrol edebilir.
  • Yüksek Akım Kapasitesi: Her bir kanal için 2A sürekli akım ve 3A peak akım sağlayabilir.
  • Mantık Seviyesi Girişleri: Arduino gibi 5V mantık seviyesi cihazlarıyla uyumludur.
  • Koruma Devreleri: Aşırı ısınma ve aşırı akım koruması içerir.
  • Enable Pinleri: Motor çıkışlarını etkinleştirmek veya devre dışı bırakmak için kullanılabilir.

L298N Kullanım Alanları:

  • Robotik projeler
  • RC arabalar
  • CNC makineleri
  • 3D yazıcılar
  • Motorlu pan-tilt sistemleri

L298N’in Avantajları:

  • Kullanımı kolaydır.
  • Yüksek akım kapasitesi sunar.
  • Farklı motor tipleri ile kullanılabilir.
  • Koruma devreleri içerir.

L298N’in Dezavantajları:

  • Nispeten büyük boyuttadır.
  • H-köprüsü devresi nedeniyle bir miktar güç kaybı yaşanır.

L298N, Arduino ile DC motor kontrolü için uygun ve yaygın olarak kullanılan bir modüldür. Ancak, daha küçük boyutlu veya daha yüksek verimliliğe ihtiyaç duyan projeler için alternatif motor sürücü seçenekleri de mevcuttur.

Devre Kurulumu:

Bu devrede, iki adet DC motor L298N motor sürücü modülü ve Arduino Uno ile kontrol edilecektir.

Gerekli Malzemeler:

  • Arduino Uno (veya benzeri bir Arduino kartı)
  • 2 adet DC motor
  • L298N motor sürücü modülü
  • Güç kaynağı (motorlar için uygun voltaj ve akım)
  • Breadboard
  • Jumper kablolar

Bağlantılar:

  1. Motor Bağlantıları:
    • Her bir DC motorun iki terminalini L298N modülünün çıkış pinlerine (OUT1, OUT2, OUT3, OUT4) bağlayın. Her motor için bir çift çıkış kullanılacaktır. Örneğin:
      • Motor A: Bir terminalini OUT1’e, diğer terminalini OUT2’ye bağlayın.
      • Motor B: Bir terminalini OUT3’e, diğer terminalini OUT4’e bağlayın.
  2. L298N Modülü Bağlantıları:
    • Güç Bağlantısı:
      • L298N modülünün 12V pinine harici güç kaynağınızı bağlayın. Bu güç kaynağı, motorları çalıştırmak için kullanılacaktır.
      • L298N modülünün GND pinini hem Arduino’nun GND pinine hem de harici güç kaynağınızın GND pinine bağlayın.
    • Mantık Seviyesi Gücü (Opsiyonel):
      • Eğer L298N modülündeki 5V regülatörü kullanılacaksa, 5V pinini Arduino’nun 5V pinine bağlayın. Bu, modülün mantık devreleri için güç sağlayacaktır. Aksi takdirde, harici bir 5V regülatör kullanmanız gerekebilir.
    • Kontrol Pinleri:
      • L298N modülünün IN1, IN2, IN3 ve IN4 pinlerini Arduino’nun dijital pinlerine bağlayın. Bu pinler, motorların yönünü kontrol etmek için kullanılır. Örnek bağlantı:
        • IN1 – Arduino Pin 7
        • IN2 – Arduino Pin 6
        • IN3 – Arduino Pin 5
        • IN4 – Arduino Pin 4
    • Hız Kontrol Pinleri:
      • L298N modülünün ENA ve ENB pinlerini Arduino’nun PWM pinlerine bağlayın. Bu pinler, motorların hızını kontrol etmek için kullanılır. Örnek bağlantı:
        • ENA – Arduino Pin 9
        • ENB – Arduino Pin 10

Devre Şeması Tablosu:

Arduino PinleriL298N Pinleriİşlev
GNDGNDToprak bağlantısı
5V5V (opsiyonel)L298N modülüne güç (5V regülatörü kullanılıyorsa)
Pin 7IN1Motor A yön kontrolü (Yüksek seviye: ileri)
Pin 6IN2Motor A yön kontrolü (Yüksek seviye: geri)
Pin 5IN3Motor B yön kontrolü (Yüksek seviye: ileri)
Pin 4IN4Motor B yön kontrolü (Yüksek seviye: geri)
Pin 9ENAMotor A hız kontrolü (PWM)
Pin 10ENBMotor B hız kontrolü (PWM)
12VHarici güç kaynağı (+) (Motorlar için)
GNDHarici güç kaynağı (-)

Not: L298N modülü üzerindeki jumper’lar doğru şekilde ayarlanmalıdır. Jumper’lar, motorların kontrol sinyallerini nasıl alacağını belirler. Genellikle, jumper’lar
‘INx’ konumunda olmalıdır, böylece Arduino’dan gelen sinyalleri kullanır.

Önemli: Motorların ve güç kaynağınızın özelliklerine uygun kablolar kullandığınızdan ve bağlantıların doğru olduğundan emin olun. Yanlış bağlantılar devrenize zarar verebilir.

Kodlama:

  1. Kod Yazma:
    • Aşağıdaki kodu Arduino IDE’ye yazın:
// Motor A pinlerini tanımlayın
const int in1PinA = 7;
const int in2PinA = 6;
const int enAPin = 9;

// Motor B pinlerini tanımlayın
const int in3PinB = 5;
const int in4PinB = 4;
const int enBPin = 10;

void setup() {
  // Pinleri çıkış olarak ayarlayın
  pinMode(in1PinA, OUTPUT);
  pinMode(in2PinA, OUTPUT);
  pinMode(enAPin, OUTPUT);
  pinMode(in3PinB, OUTPUT);
  pinMode(in4PinB, OUTPUT);
  pinMode(enBPin, OUTPUT);
}

void loop() {
  // Motor A'yı ileri yönde döndürün (tam hız)
  digitalWrite(in1PinA, HIGH);
  digitalWrite(in2PinA, LOW);
  analogWrite(enAPin, 255);

  // Motor B'yi ileri yönde döndürün (tam hız)
  digitalWrite(in3PinB, HIGH);
  digitalWrite(in4PinB, LOW);
  analogWrite(enBPin, 255);
  delay(2000); 

  // Motorları durdurun
  digitalWrite(in1PinA, LOW);
  digitalWrite(in2PinA, LOW);
  digitalWrite(in3PinB, LOW);
  digitalWrite(in4PinB, LOW);
  delay(1000);

  // Motor A'yı geri yönde döndürün (yarım hız)
  digitalWrite(in1PinA, LOW);
  digitalWrite(in2PinA, HIGH);
  analogWrite(enAPin, 127);

  // Motor B'yi geri yönde döndürün (yarım hız)
  digitalWrite(in3PinB, LOW);
  digitalWrite(in4PinB, HIGH);
  analogWrite(enBPin, 127); 
  delay(2000);

  // Motorları durdurun
  digitalWrite(in1PinA, LOW);
  digitalWrite(in2PinA, LOW); 
  digitalWrite(in3PinB, LOW);
  digitalWrite(in4PinB, LOW); 
  delay(1000); 
}

Kod Açıklaması:

1. Pin Tanımlamaları:

  • in1PinA, in2PinA, enAPin: Motor A’yı kontrol eden L298N modülündeki giriş pinlerini tanımlar.
  • in3PinB, in4PinB, enBPin: Motor B’yi kontrol eden L298N modülündeki giriş pinlerini tanımlar.

2. setup() Fonksiyonu:

  • pinMode() fonksiyonu ile motor kontrol pinleri çıkış olarak ayarlanır. Bu, Arduino’nun bu pinlerden L298N modülüne sinyal gönderebileceği anlamına gelir.

3. loop() Fonksiyonu:

  • Motorları İleri Döndürme (Tam Hız):
    • Motor A’yı ileri döndürmek için in1PinA HIGH, in2PinA LOW seviyesine getirilir.
    • Motor B’yi ileri döndürmek için in3PinB HIGH, in4PinB LOW seviyesine getirilir.
    • analogWrite() fonksiyonu ile enAPin ve enBPin pinlerine 255 değeri gönderilerek motorların tam hızda çalışması sağlanır.
    • delay(2000) ile motorlar 2 saniye boyunca ileri yönde döner.
  • Motorları Durdurma:
    • Her iki motorun da IN1 ve IN2 pinleri LOW seviyesine getirilir. Bu, H-köprüsünü devre dışı bırakır ve motorlar durur.
    • delay(1000) ile motorlar 1 saniye boyunca durur.
  • Motorları Geri Döndürme (Yarım Hız):
    • Motor A’yı geri döndürmek için in1PinA LOW, in2PinA HIGH seviyesine getirilir.
    • Motor B’yi geri döndürmek için in3PinB LOW, in4PinB HIGH seviyesine getirilir.
    • analogWrite() fonksiyonu ile enAPin ve enBPin pinlerine 127 değeri gönderilerek motorların yarım hızda çalışması sağlanır.
    • delay(2000) ile motorlar 2 saniye boyunca geri yönde döner.
  • Tekrar Durdurma:
    • Motorlar tekrar durdurulur ve 1 saniye beklenir.

4. Döngü Tekrarı:

  • loop() fonksiyonu sürekli olarak çalışır ve motorlar bu şekilde ileri, dur, geri ve tekrar dur şeklinde hareket eder.

Özet:

Bu kod, iki DC motorun yönünü ve hızını kontrol etmek için L298N motor sürücü modülü ile Arduino’nun nasıl kullanılabileceğini gösterir. digitalWrite() fonksiyonu ile motor yönü, analogWrite() fonksiyonu ile de motor hızı kontrol edilir.

Geliştirmeler:

  • Potansiyometre kullanarak motor hızını kontrol edin.
  • Joystick ile motorun yönünü ve hızını kontrol edin.
  • Encoder ile motorun pozisyonunu takip edin.
Ahmet Kemal YILDIZ
Eskişehir Osmangazi Üniversitesi Bilgisayar ve Öğretim Teknolojileri Öğretmenliği mezunu bir Bilişim Teknolojileri ve Yazılım Dersi Öğretmeniyim. Bilişim Teknolojileri ve Yazılım dersi ile ilgili ders etkinlikleri, kaynak materyaller, örnek etkinlikler ve ilgi duyduğum birçok konu hakkında vakit buldukça buradan blogluyorum. :)

    14# Arduino Mesafe Sensörüyle LCD Ekran Kullanımı (I2C Modülü ile)

    önceki yazı

    16# – Arduino ile Motor Kontrolü (Step Motorlar)

    Sonraki Yazı

    Bu Yazılar da İlgini Çekebilir!

    Yorumlar

    Yorum yap

    E-posta adresiniz yayınlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir

    Daha Arduino