Başa dön
Arduino ile DC Motor Kontrolü

Arduino ile DC Motor Çalıştırma ve Kontrolü

Merhaba arkadaşlar, sonunda arduino ile dc motor çalıştırma ve kontrol etmeyi öğrenmek istediniz ve buradasınız 🙂 Bu yazımızda arduino ile dc motor kontorlü ve çalıştırma, 2 dc motor kontrolü, motor yön kontrolü, motor ileri geri kontrolü, yön ve pozisyon kontrolü konularına değineceğiz. Arduino ile dc motorları kontrol etmenin en kolay ve ucuz yollarından biri, L293D Motor Sürücüsü ile Arduino kullanımıdır. L293d motor sürücü iki DC motorun hem hızını hem de dönüş yönünü kontrol edebilme yeteneğine sahiptir.

 

Arduino ile Step Motor Kontrolü

Arduino ile Step Motor Kontorlü

Yeni bir arduino projesi robot yapmayı planlıyorsanız, sonunda arduino ile step motorları kontrol etmeyi öğrenmenin vakti geldi. Step motorları kontrol edebilmenin en kolay yollarından biri …

 

 

Arduino ile DC Motor Çalıştırma ve Kontrol Etme Projesi için Kullanılacak Malzemeler:

  1. Arduino Uno R3              1x
  2. DC Motor                         1x
  3. L293D Motor Sürücü    1x
  4. Breadboard                    1x
  5. Jumper Kablo
  6. Güç Kaynağı (Pil vb.)    1x

 

Arduino ile Fırçasız DC Motoru Kontrolü

DC motor üzerinde tam kontrol sahibi olmak için hızını ve dönüş yönünü kontrol etmeliyiz. Bu, iki tekniği birleştirerek elde edilebilir.

  • PWM – Hız kontrolü için
  • H-Bridge – Dönüş yönünü kontrol etmek için(yön, ileri geri, pozisyon)

 

PWM – Arduino ile DC Motor Hız Kontrolü

Bir DC motorun hızı, giriş voltajını değiştirerek kontrol edilebilir. Bunu yapmak için yaygın bir teknik olan PWM (Darbe Genişliği Modülasyonu) kullanmalıyız.

PWM, bir dizi ON-OFF tetiklemesi göndererek giriş voltajının ortalama değerinin ayarlandığı bir tekniktir.

Ortalama voltaj, Görev Döngüsü olarak bilinen darbelerin genişliği ile orantılıdır.

Görev döngüsü ne kadar yüksek olursa, dc motora uygulanan yüksek voltaj (Yüksek Hız) ve görev döngüsü ne kadar düşük olursa, dc motora uygulanan ortalama voltaj o kadar düşük (Düşük Hız) olacaktır.

Aşağıdaki resimde, çeşitli iş çevrimleri ve ortalama gerilimler ile PWM tekniği gösterilmektedir.

 

Görev Döngülerine Sahip Darbe Genişliği Modülasyonu PWM Tekniği
Darbe Genişliği Modülasyonu (PWM) Tekniği

 

H-Bridge – Arduino ile DC Motor Yön Kontrolü – İleri Geri Kontrol

DC motorun dönüş yönü, giriş voltajının polaritesini değiştirerek kontrol edilebilir. Bunu yapmak için yaygın bir teknik olan H-Bridge kullanılmaktır.

Bir H-Bridge devresi, motor merkezde H-benzeri bir düzenleme oluşturan dört anahtar içerir.

İki özel anahtarın aynı anda kapatılması, motora uygulanan voltajın polaritesini tersine çevirir. Bu, motorun dönüş yönünde değişime neden olur.

Aşağıdaki animasyon H-Bridge devresinin çalışmasını gösterir.

Arduino ile DC Motor Yön Kontrol Animasyonu

Arduino ile DC Motor Yön Kontrol Animasyonu

 

Arduino ile L293D Motor Sürücüsü Kullanımı

L293D Motor Sürücü Pinout

L293D Motor Sürücü Pinout

 

L293D motor sürücü, bir çift DC motor veya bir step motor kullanabilen çift kanallı H-Bridge motor sürücüsüdür.

L293d ile iki tekerlekli robot platformları oluşturabilir, iki motoru ayrı ayrı kodlayarak sürebilirsiniz.

Daha fazla ayrıntı için lütfen aşağıdaki L293 Datasheet sayfasını inceleyiniz.

 

L293D Motor Sürücü Enerji Pini

L293D Güç Kaynağı Bağlantıları

L293D motor sürücüsü aslında iki güç giriş pinine sahiptir. Bunlar Vcc1 ve Vcc2.

Vcc1 , 5V olması gereken dahili mantık devresini sürmek için kullanılır.

Verici Vcc2 pini H-Köprü bağlantısı ile 4.5V – 36V arası gereken motor gücünü iletir. Ve ikisi de GND pinine bağlıdır .

 

L293D Motor Sürücü Veri İletim Pinleri

L293D Çıkış Terminalleri

L293D motor sürücüsünün A ve B motorlarına veri iletmesi için çıkış kanalları sırasıyla OUT1, OUT2 ve OUT3, OUT4 pinleridir.

Bu pinler 4.5V ile 36V arasında voltajı iki adet DC motora iletir.

Motor Sürücü üzerindeki her pin DC motorlara 600mA’ya kadar elektriksel akım iletebilir. Ancak, motora verilen akım miktarı, sistemin güç kaynağına(adaptör, lipo pil vb.) bağlıdır.

 

Arduino ile DC Motor Hız, Yön, İleri Geri, Pozisyon Kontrolü

L293D motor sürücü pinlerinin her biri için, DC motorların hızını ve dönüş yönünü aynı anda kontrol etmemizi sağlayan iki tür kontrol pini vardır.

  • Yön kontrol pinleri
  • Hız kontrol pimleri

 

Arduino ile DC Motor Yön Kontrol, İleri Geri, Hareket, Pozisyon Pinleri

L293D Yön Kontrol Girişleri

Yön kontrol pimlerini kullanarak, motorun ileri mi yoksa geri mi hareket etmesini kontrol edebiliriz. Pozisyon pinleri aslında L293D motor sürücü içindeki H-Bridge devresinin anahtarlarını kontrol eder.

L293d motor sürücü, her kanal için iki yön kontrol yani hareket pinine sahiptir. IN1, IN2 pinleri 1. dc motorun hareket ve hızını kontrol ederken IN3, IN4 2. dc motorun hız ve hareket yani yön faliyetini kontrol etmektedir.

Bir dc motorun dönüş yönü bu pinlere verilen elektriksel akım (5 Volt) veya Toprak (Nötr) uygulanarak kontrol edilebilir. Aşağıdaki grafik bunun nasıl yapıldığını göstermektedir.

 

Giriş pinleri ile dc motorun dönüş yönünü kontrol etme
IN1 IN2 Motor Hareketi
Low(0) Low(0) Motor kapalı
High(1) Low(0) İleri
Low(0) High(1) Geri
High(1) High(1) Motor kapalı

 

Arduino ile DC Motor Hız Kontrol Pinleri

L293D Hız Kontrol Girişleri

Hız kontrol pinleri  ENA ve ENB ‘dir. 2 dc motor kontrolünün hızları bu pinler ile yapılır. ENAA motorunu, ENBB motorunu kontrol eder.

Bu pinlere uygulanan HIGH kodu hareket yani motorların dönmesini sağlar, LOW ise motorların durmalarını sağlar. Ancak, motor hız kontrolü Darbe Genişliği Modülasyonu (PWM) ile sağlanabilmektedir.

 

Arduino ile L293D Motor Sürücü Kullanarak 2 DC Motor Kontrolü

Artık l293d motor sürücü ile ilgili her şeyi öğrendiğimize göre, Arduino’muz ile bağlantısını sağlayabiliriz!

Arduino ile 2 dc motor kontrolü için öncelikle motorlara güç kaynağı(pil, adaptör vb.) bağlayarak başlayalım. Projemizde, genellikle 2wd robot araba kiti gibi arduino dc motorları yani (Sarı TT motor) kullanıyoruz. 65mm tekerlek ve motor seti 3 ile 9V arasında çalışır. 9V güç kaynağını Vcc2 pinine bağlayalım.

Daha sonra, L293D’nin mantık devresi için 5 Volt sağlamamız gerekir. Vcc1 pinini Arduino’daki 5V çıkışa bağlayın. Devredeki tüm toprakları ortak kullandığımızdan mutlaka emin olalım.

Şimdi, L293D IC’nin giriş ve etkinleştirme pinlerini (ENA, IN1, IN2, IN3, IN4 ve ENB), altı Arduino dijital çıkış pinine (9, 8, 7, 5, 4 ve 3) bağlayalım. Arduino çıkış pinlerinin 9 ve 3’ün her ikisinin de PWM(motor hız kontrolü) için etkin olduğunu unutmayın.

Son olarak, bir motoru OUT1, OUT2‘ye ve diğer motoru ve OUT3, OUT4‘e bağlayın. Motorunuzun bağlantılarını teknik olarak sağ veya sol olarak değiştirebilirsiniz herhangi bir sıkıntı teşkil etmeyecektir.

İşiniz bittiğinde, aşağıdaki resme benzeyen bir bağlantıya sahip olmalısınız.

Arduino ile L293D Motor Sürücü Kullanarak 2 DC Motor Kontrolü

Arduino ile L293D Motor Sürücü Kullanarak 2 DC Motor Kontrolü

 

Arduino ile DC Motor Kontrolü için Kod

Aşağıdaki kodlar, L293D motor sürücü ile bir DC motorun hızını ve dönüş yönünü kontrol edebilmeniz için pratik temel teşkil edecektir.

// Motor A connections
int enA = 9;
int in1 = 8;
int in2 = 7;
// Motor B connections
int enB = 3;
int in3 = 5;
int in4 = 4;

void setup()
{
  // Set all the motor control pins to outputs
  pinMode(enA, OUTPUT);
  pinMode(enB, OUTPUT);
  pinMode(in1, OUTPUT);
  pinMode(in2, OUTPUT);
  pinMode(in3, OUTPUT);
  pinMode(in4, OUTPUT);
  
  // Turn off motors - Initial state
  digitalWrite(in1, LOW);
  digitalWrite(in2, LOW);
  digitalWrite(in3, LOW);
  digitalWrite(in4, LOW);
}

void loop()
{
  directionControl();
  delay(1000);
  speedControl();
  delay(1000);
}

// This function lets you control spinning direction of motors
void directionControl()
{
  // Set motors to maximum speed
  // For PWM maximum possible values are 0 to 255
  analogWrite(enA, 255);
  analogWrite(enB, 255);

  // Turn on motor A & B
  digitalWrite(in1, HIGH);
  digitalWrite(in2, LOW);
  digitalWrite(in3, HIGH);
  digitalWrite(in4, LOW);
  delay(2000);
  
  // Now change motor directions
  digitalWrite(in1, LOW);
  digitalWrite(in2, HIGH);
  digitalWrite(in3, LOW);
  digitalWrite(in4, HIGH);
  delay(2000);
  
  // Turn off motors
  digitalWrite(in1, LOW);
  digitalWrite(in2, LOW);
  digitalWrite(in3, LOW);
  digitalWrite(in4, LOW);
}

// This function lets you control speed of the motors
void speedControl()
{
  // Turn on motors
  digitalWrite(in1, LOW);
  digitalWrite(in2, HIGH);
  digitalWrite(in3, LOW);
  digitalWrite(in4, HIGH);
  
  // Accelerate from zero to maximum speed
  for (int i = 0; i < 256; i++)
  {
    analogWrite(enA, i);
    analogWrite(enB, i);
    delay(20);
  }
  
  // Decelerate from maximum speed to zero
  for (int i = 255; i >= 0; --i)
  {
    analogWrite(enA, i);
    analogWrite(enB, i);
    delay(20);
  }
  
  // Now turn off motors
  digitalWrite(in1, LOW);
  digitalWrite(in2, LOW);
  digitalWrite(in3, LOW);
  digitalWrite(in4, LOW);
}

Kod Açıklaması:

Arduino kodu oldukça basittir. Herhangi bir kütüphanenin çalışmasını gerektirmez. Kodlar, L293D’nin kontrol pinlerinin bağlı olduğu Arduino pinlerini bildirmekle başlar.

Kodun kurulum bölümünde, tüm motor kontrol pinleri dijital OUTPUT olarak her iki motoru da LOW veya OFF olarak çekilir.

Kodun döngü bölümünde, bir saniyelik aralıklarla iki kullanıcı tanımlı kod işlevi kullanılır. 

 

Arduino ile 2 DC Motor Kontrolü

  • directionControl () – Bu fonksiyon 2 dc motor kontrolü için iki saniye boyunca maksimum hızda ileri döndürme işlevi görür. Daha sonra motorun dönüş yönünü tersine çevirir ve iki saniye daha döner. Sonunda motorları kapatır.
  • speedControl () – Bu işlev analogWrite ()  işlevini kullanarak PWM sinyalleri üreterek her iki motoru da sıfırdan maksimum hıza hızlandırır, ardından tekrar sıfıra indirir. Sonunda motorları kapatır.
 

Arduino ile L293D Motor Sürücü Kullanarak DC Motor Kontrolü ile İlgili Video’yu İzleyebilirsiniz.

Diğer Güncel Teknoloji Haberlerimiz için BURAYA TIKLAYABİLİRSİNİZ.

Sizde Robotlara ve Maker’lığa Meraklıysanız, Robotik Marketimiz ROBOCOMBO‘yu Ziyaret Edebilirsiniz.

 

Okuduğunuz İçin Teşekkürler.

 

Kaynak: https://lastminuteengineers.com/l293d-dc-motor-arduino-tutorial/