Başa dön
Arduino ile l293d motor sürücü kullanımı

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

Merhaba arkadaşlar, yeni bir arduino öğretimi ile karşınızdayız. Bu yazımızdaki konumuz “Arduino ile L293D Motor Sürücü Kartı Kullanımı” olacaktır. L293d motor sürücü ile dc motor ve step motor kullanımı konularına da değineceğiz. Ama daha detaylı olarak “Arduino ile DC Motor Çalıştırma ve Arduino ile Step Motor Kullanımı” yazılarımızı okumanızı tavsiye ederiz. Şimdi yazımıza başlayalım!

DC motorlar, Step motorlar ve servolar gibi çeşitli motorları kontrol etmeyi öğrenmek istediniz ve bizde yazımızı kaleme aldık, sizi hiç üzermiyiz 😉 Arduino ile L293D motor sürücü kullanımı ile tam özellikli birçok robot ve CNC projesi yapabileceğiz.

L293D Motor Sürücü SATIN AL

Step Motor SATIN AL

DC Motor SATIN AL

 

 

L293D Motor Sürücü Yetenekleri:

  • 8-bit hız seçimine sahip 4 çift yönlü DC motor (0-255)
  • Tek bobinli, çift bobinli, katlamalı veya mikro kademeli 2 kademeli motor (tek kutuplu veya iki kutuplu).
  • 2 servo motor

sürülebilir, kontrol edilebilir.

 

L293D Motor Sürücü Nasıl Kullanılır ve 74HC595 Shift Register

L293D Motor Sürücü Kalkanı Yongaseti

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

Arduino motor shield L293D motor sürücü, 2 yonga seti ile birlikte geldiğinden, dört tekerleğe kadar dört motor ayrı ayrı sürülebilir. Bu sebeple dört tekerlekli robot platformları oluşturmak için idealdir.

Motor sürücü toplam 4 H-Bridge sunar ve her H-Bridge motora 0.6A’ya kadar güç verebilir.

Motor Shield ayrıca Arduino’nun 4 dijital pimini iki L293D çipinin 8 yön kontrol pimine uzatan bir 74HC595 shift-register ile birlikte gelir.

 

Arduino L293D Motor Sürücü Kullanımı için Güç kaynağı

L293D Motor Sürücü Kalkanı Güç Kaynağı Terminalleri

Motorlar için blendaj ile güç sağlama konusunda üç yol vardır.

  • Arduino ve motorlar için tek DC güç kaynağı: Hem Arduino Uno R3 hem de motorlar için tek bir DC güç kaynağına sahip olmak istiyorsanız, bunu Arduino’daki DC jakına veya blendajdaki 2-pin EXT_PWR bloğuna takmanız yeterlidir. Güç kablosunu motor sürücünüze takın. Bu yöntemi yalnızca motor besleme voltajı 12 V’den düşük olduğunda kullanabilirsiniz.
  • (Önerilen) Arduino, USB ve motorlar DC güç kaynağıyla beslenir: Arduino’nun USB’den ve motorların DC güç kaynağından kapatılmasını istiyorsanız, USB kablosunu takın. Ardından motor beslemesini blendajdaki EXT_PWR bloğuna bağlayın. Jumper’ı ekranın üzerine yerleştirmeyin.
  • Arduino ve motorlar için iki ayrı DC güç kaynağı: Arduino ve motorlar için 2 ayrı DC güç kaynağına sahip olmak istiyorsanız, arduino güç kaynağını DC jakına takın ve motor kaynağını EXT_PWR bloğuna bağlayın. Jumper kablosunun motor shield’a bağlı olmadığından emin olun.

Jumper takılı iken EXT_PWR girişine güç vermeyin. Motor sürücüsüne ve Arduino’nuza zarar verirsiniz!

 

Bonus olarak, l293d motor shield aşağıdaki özellikleri sunar:

  • Motor sürücü, güç açılırken motorları kapalı tutma görevi üstlenen sıralı direnç ile birlikte gelir.
  • Yerleşik LED, motor güç kaynağının iyi durumda olduğunu gösterir. Yanmıyorsa, motorlar çalışmayacaktır.
  • RESET, Arduino’nun sıfırlama düğmesinden başka bir şey değildir. Sadece kolaylık sağlamak için yerleştirilmiştir.

 

Çıkış terminalleri

L293D Motor Sürücü Kalkanı Çıkış Terminalleri Pinout

L293d motor sürücü shield kullanımı için her iki L293D yongasının çıkış kanalları iki adet 5-pin vidalı terminal viz ile motor sürücü board’un iki kenarına ayrılmıştır. M1 , M2 , M3 , M4 terminallereine 4.5 ile 25V arasında gerilimi olan dört adet DC motor bağlayabilirsiniz.

Modül üzerindeki her kanal DC motora 600mA’ya kadar iletebilir. Ancak, motora verilen akım miktarı, sistemin güç kaynağına bağlıdır.

İki adet step motoru da çıkış terminallerine bağlayabilirsiniz. Bir step motor M1 , M2 motor portuna, diğeri de M3 , M4‘e .

Tek kutuplu bir step motorunuz varsa, GND terminalini kullanabilirsiniz. Her iki step motorun merkez hatlarını bu terminale bağlayabilirsiniz.

Board, 16bit PWM çıkış hatları için, iki servo motor bağlayabileceğiniz iki adet 3-pin barındırmaktadır.

 

L293D Blendajındaki Kullanılmayan Pinler

Blendaj tarafındaki dijital pinleri # 2, # 13 ve analog pinler A0-A5 kullanılmaz.

2 analog pin sağ alt köşe de bulunmaktadır. Bu pinleri kullanmak istiyorsanız, bazı başlıkları ona bağlayabilirsiniz.

 

AFMotor Kütüphanesini

Blendaj ile iletişim kurabilmek, DC, step ve servo motorları kontrol etmek ve basit komutlar verebilmemiz için AFMotor.h kütüphanesini kurmamız gerekir.

Kütüphaneyi kurmak için Taslak> Library Ekle> Kütüphaneleri Yönet… seçeneğine gidin.

Arduino Kütüphanesi Kurulumu - Arduino IDE'deki Kütüphaneleri Yönet Seçimi

 

Açılan sayfada arama bölümüne “Adafruit Motor Shield” yazın.Büyük ihtimalle en üstteki- “Adafruit Motor Shield V1 Firmware with basic microstepping support. Works with all Arduinos and the Mega yazana bölümün üzerine mosu ile gelin ve ardından “Kur” seçeneğine tıklayın..

AFMotor Kütüphanesini Takma
 

L293D Shield ile DC Motor Kullanımı

Artık motor sürücü ile ilgili her şeyi öğrendiğimize göre Arduino’muza takmaya başlayabiliriz!

L293d motor sürücüyü Arduino’nun üstüne takarak başlayın.

Sonra, güç kaynağını motorlara bağlayın. Çalışma voltajı 4.5 ile 25V arasında olan DC motorları sürücüye bağlayabilirsiniz. Biz bu projemizde 9V değerinde DC Motorları kullanıyoruz. Böylece harici 9V güç kaynağını EXT_PWR terminaline bağlayacağız.

Şimdi motoru M1 , M2 , M3 , M4 motor terminallerinden birine bağlayın. BizM4‘e bağlıyoruz.

DC Motorun L293D Motor Kalkanı ve Arduino'ya Kablolanması

 

DC Motorun L293D Motor Sürücü ve Arduino Bağlantısı

Aşağıdaki kodlar, bir DC motorun hızını ve dönüş yönünü L293D motor sürücü ile nasıl kontrol edeceğiniz konusunda pratik projeler için fikir edinmenize yardımcı olacaktır.

 

#include <AFMotor.h>

AF_DCMotor motor(4);

void setup() 
{
  //Set initial speed of the motor & stop
  motor.setSpeed(200);
  motor.run(RELEASE);
}

void loop() 
{
  uint8_t i;

  // Turn on motor
  motor.run(FORWARD);
  
  // Accelerate from zero to maximum speed
  for (i=0; i<255; i++) 
  {
    motor.setSpeed(i);  
    delay(10);
  }
  
  // Decelerate from maximum speed to zero
  for (i=255; i!=0; i--) 
  {
    motor.setSpeed(i);  
    delay(10);
  }

  // Now change motor direction
  motor.run(BACKWARD);
  
  // Accelerate from zero to maximum speed
  for (i=0; i<255; i++) 
  {
    motor.setSpeed(i);  
    delay(10);
  }

  // Decelerate from maximum speed to zero
  for (i=255; i!=0; i--) 
  {
    motor.setSpeed(i);  
    delay(10);
  }

  // Now turn off motor
  motor.run(RELEASE);
  delay(1000);
} 

 

Kod Açıklaması:

Kod, AFMotor.h kütüphanesini dahil ederek başlar.

İkinci satır AF_DCMotor motor(motorPort#);bir kütüphane nesnesi yaratır. Burada, motorun bağlı olduğu motor portu numarasını bildirmeniz gerekir. Bağlantı noktası M1 için 1, M2 için 2 vb.

Ekrana birden fazla motor bağlamak istiyorsanız, her motor için ayrı nesneler oluşturun. Örneğin, aşağıdaki kod parçacığını iki AFmotor nesnesi oluşturur.

AF_DCMotor motor1(1);
AF_DCMotor motor2(2);

 

Kodun kurulum ve döngü bölümünde, bir motorun hızını ve dönüş yönünü kontrol etmek için iki işlev kullanırız.

  • setSpeed(speed)işlevi, motorun hızını ayarlar. Speed 0 ile 255 arasında değişmekte olup, “0” kapalı ve “255” tam gaz şeklindedir. Programda istediğiniz zaman hızı ayarlayabilirsiniz.
  • run(cmd)işlevi motorun çalışma modunu ayarlar. cmdiçin geçerli değerler:
    • FORWARD – ileri (gerçek dönüş yönü motor kablolamasına bağlı olacaktır)
    • BACKWARD – geri (dönüş FORWARD ile zıt yönde olacaktır)
    • RELEASE – Motoru durdurur. Bu, motordaki gücü setSpeed(0) ile eşdeğerdir. Motor blendajı dinamik bir kopma yapmaz, bu nedenle motorun dönmesi biraz zaman alabilir.

 

Arduino L293D Motor Shield Step Motor Kullanımı

Arduino Motor Shield Step Motor Kullanımı için Step motoru L293D motor sürücü üzerine bağlayalım. Tabi öncesinde motor sürücüyü Arduino’nun üstüne takarak başlamayı unutmayın 🙂

  • 28BYJ-48 tek kutuplu step kullanıyorsanız, bu motorlar 5V olarak derecelendirilir ve devir başına 48 adım sunar. Bu nedenle, harici 5V güç kaynağını EXT_PWR terminaline bağlayın.

PWR pini üzerinde takılı olan jumper kabloyu çıkarmayı unutmayın.

 

Şimdi, motoru M1 , M2port # 1 veya M3 , M4port # 2 step motor terminallerine bağlayın. Projemizde biz M3 , M4‘e bağlıyoruz.

Unipolar Step Motor Kablolarının L293D Motor Kalkanı ve Arduino'ya Kablolanması

 

  • NEMA 17 bipolar step motor kullanıyorsanız, bu motorlar 12V olarak derecelendirilir ve devir başına 200 adım sunar. Bu nedenle, harici 12V güç kaynağını EXT_PWR terminaline bağlayın.

PWR pini üzerinde takılı olan jumper kabloyu çıkarmayı unutmayın.

 

Şimdi, motoru M1 , M2port # 1 veya M3 , M4port # 2 step motor terminallerine bağlayın. Projemizde biz M3 , M4‘e bağlıyoruz.

Kablolama Bipolar Step Motoru L293D Motor Kalkanı ve Arduino'ya Kablolama

 

Arduino Kodu

Aşağıdaki kodlar, Unipolar veya bipolar step motorun L293D motor sürücü ile nasıl kontrol edileceği hakkında fikir verecektir ve stepsPerRevolution parametresi hariç her iki motor için de aynıdır.

Krokiyi denemeden önce bu parametreyi motorunuzun teknik özelliklerine göre değiştirin. Örneğin, NEMA 17 için 200’e, 28BYJ-48 için ise 48’e ayarlayın.

#include <AFMotor.h>

// Number of steps per output rotation
// Change this as per your motor's specification
const int stepsPerRevolution = 48;

// connect motor to port #2 (M3 and M4)
AF_Stepper motor(stepsPerRevolution, 2);

void setup() {
  Serial.begin(9600);
  Serial.println("Stepper test!");

  motor.setSpeed(10);  // 10 rpm   
}

void loop() {
  Serial.println("Single coil steps");
  motor.step(100, FORWARD, SINGLE); 
  motor.step(100, BACKWARD, SINGLE); 

  Serial.println("Double coil steps");
  motor.step(100, FORWARD, DOUBLE); 
  motor.step(100, BACKWARD, DOUBLE);

  Serial.println("Interleave coil steps");
  motor.step(100, FORWARD, INTERLEAVE); 
  motor.step(100, BACKWARD, INTERLEAVE); 

  Serial.println("Micrsostep steps");
  motor.step(100, FORWARD, MICROSTEP); 
  motor.step(100, BACKWARD, MICROSTEP); 
}

Kod Açıklaması:

Kodlar AFMotor.h kütüphanesini dahil ederek başlar.

İkinci satırAF_Stepper motor(48, 2); bir kütüphane nesnesi oluşturur. Burada, motorun devir başına adım sayısını ve motorun bağlı olduğu port numarasını parametre olarak geçmeniz gerekir.

 

Kodun kurulum ve döngü bölümünde, bir motorun hızını ve dönüş yönünü kontrol etmek için iki işlev kullanırız;

  • setSpeed(rpm)işlevi motorun hızını ayarlar; burada rpm , setSpeed(rpm) dakikada kaç devir olduğunu belirler.
  • Motorun hareket etmesi için step(#steps, direction, steptype)  komutu kullanılır. #steps, atılmasını istediğiniz adımdır. direction FORWARD veya BACKWARD‘dır ve stepstyle için geçerli değerler şunlardır;
    • SINGLE – Bir seferde bir bobine güç verir.
    • DOUBLE – Daha fazla tork için bir seferde iki bobine enerji verir.
    • INTERLEAVE – Arada yarım adım oluşturmak için tek ve çift arasında geçiş yapar. Bu kod ile daha düzgün çalışma sağlanabilir ancak fazladan yarım adım nedeniyle, hız da yarı yarıya azalır.
    • MICROSTEP – Her bir tam adım arasında bir dizi ‘mikro adım’ oluşturmak için bitişik bobinler yukarı ve aşağı rampalanır. Bu, daha net adım ve daha yumuşak dönüşle sonuçlanır, ancak tork kaybı olur.

 

Arduino Motor Shield L293D  Servo Motor Kullanımı

Servoları L293D motor sürücü ile sürmek pasta yapmak kadar kolaydır 🙂

Motor shield Arduino’nun 16bit PWM çıkış pinleri # 9 ve # 10, altlı üstlü iki 3-pin (SER1 ve SERVO_2) ile aynı hizadadır.

Servoların gücü Arduino’nun dahili 5V regülatöründen geliyor, bu yüzden EXT_PWR terminaline ekstra güç bağlamak zorunda değilsiniz.

Servo Motorun L293D Motor Kalkanı ve Arduino'ya Kablolanması

BütünleşikPWM pinlerini kullanırken aşağıdaki kodlar IDE’ninServo kütüphanesinde yerleşik olarak kullanılmasını sağlar. 

 

#include <Servo.h> 

<