Arduino Kodu ve Video: L293D DC Motor Kontrolcüsü (hız kontrolü olmadan)
Bu eğitim, L293D motor kontrol cihazının bir Arduino ile DC motoru kontrol etmek için nasıl kullanılacağını kapsar. L293D, motoru hem saat yönünde hem de saat yönünün tersine döndürmenizi sağlar. Bu kılavuzu takip ederek, bileşenleri nasıl bağlayacağınızı ve Arduino'yu istenen motor kontrolünü elde etmek için nasıl programlayacağınızı öğreneceksiniz.
Bu projede, tek bir DC motoru kontrol etmek için L293D motor sürücüsünü kullanacağız. Motor, Arduino kodunda verilen komutlara göre yön değiştirebilecektir. Kurulum ve kod hakkında daha net bir anlayış için, ilgili videoyu (videoda 00:00'da) izlemek faydalıdır.
Donanım Açıklaması
L293D, motorları sürmek için tasarlanmış entegre bir devredir. Aynı anda iki DC motoru veya bir step motoru kontrol edebilir. Çip, motora uygulanan voltajın polaritesini değiştirerek yön kontrolüne izin veren bir H-köprü konfigürasyonu kullanır. Bu esneklik, onu robotik ve otomasyon projeleri için mükemmel bir seçim haline getirir.
L293D'ye ek olarak, motor sürücüsüne kontrol sinyalleri göndermek için bir Arduino kartı kullanacağız. Arduino, motoru etkinleştirmek ve dönüş yönünü belirlemek için gerekli mantık seviyelerini üretecektir. Kurulum ayrıca bir DC motor ve motorun voltaj gereksinimleriyle uyumlu bir güç kaynağı gerektirecektir.
Veri Sayfası Detayları
| Üretici | Texas Instruments |
|---|---|
| Parça numarası | L293D |
| Mantık/GÇ voltajı | 5 V |
| Besleme voltajı | 4.5 - 36 V |
| Çıkış akımı (kanal başına) | 600 mA |
| Tepe akımı (kanal başına) | 1.2 A |
| PWM frekansı yönergesi | 20 kHz |
| Giriş mantık eşikleri | 2.5 V (tipik) |
| Voltaj düşümü / RDS(on) / doyum | 1.5 V (maks) |
| Termal limitler | 150 °C (maks) |
| Paket | 16-DIP |
| Notlar / varyantlar | İki motoru kontrol edebilir |
- Besleme voltajının 36 V'u aşmadığından emin olun.
- Maksimum akıma yakın çalışırken uygun ısı emici kullanın.
- Arduino ve motor sürücüsünün toprağını her zaman bağlayın.
- Ters polarite bağlantılarını önlemek için kablolamayı kontrol edin.
- Gelecekteki projelerde hızı kontrol etmek için PWM sinyalleri kullanın.
Kablolama Talimatları


L293D motor kontrol cihazını Arduino'ya bağlamak için güç ve toprağı bağlayarak başlayın. L293D'nin pin 4 ve pin 5'ini toprağa bağlayın. Ardından, pin 1'i (Vcc1) Arduino'nun 5 V çıkışına bağlayın. Vcc2 (pin 8) için, motor voltaj spesifikasyonuyla eşleştiğinden emin olarak harici bir güç kaynağına bağlayın.
Ardından, motorun gücünü kontrol etmek için enable pinini (pin 1) Arduino'daki pin 8'e bağlayın. Motor kontrol girişleri için, L293D'nin pin 2'sini (1A) Arduino'daki pin 2'ye ve pin 7'yi (2A) Arduino'daki pin 7'ye bağlayın. Son olarak, motor terminallerini L293D üzerindeki pin 3'e (1Y) ve pin 6'ya (2Y) bağlayın.
Kod Örnekleri & Açıklama
Aşağıdaki kod pinleri başlatır ve motor kontrolünü ayarlar. Kullanılan tanımlayıcılar, ilk motor kontrol pini için P1A ve enable pini için EN12 içerir. Setup fonksiyonu pinleri çıkış olarak yapılandırır.
void setup() {
Serial.begin(9600); // bilgi görüntülemek için Seri Monitörü kur
pinMode(P1A, OUTPUT); // P1A için pini ÇIKIŞ olarak tanımla
pinMode(P2A, OUTPUT); // P2A için pini ÇIKIŞ olarak tanımla
pinMode(EN12, OUTPUT); // 1,2EN enable için pini ÇIKIŞ olarak tanımla
}
Döngüde, motor arada gecikmelerle her iki yönde döndürülmesi için komut verilir. Motorun durumu, Serial.println kullanılarak seri monitöre yazdırılır.
void loop() {
Serial.println("Saat yönünde döndürülüyor");
digitalWrite(EN12, HIGH); // 1A ve 2A'yı etkinleştir
digitalWrite(P1A, HIGH); // P1A'ya YÜKSEK sinyal gönder
digitalWrite(P2A, LOW); // P2A'ya DÜŞÜK sinyal gönder
delay(3000); // motor 3 saniye çalışır
digitalWrite(EN12, LOW); // 1A ve 2A'yı devre dışı bırak
}
Bu alıntı, P1A ve P2A'ya gönderilen mantık seviyelerini değiştirerek motorun dönüş yönünün nasıl kontrol edileceğini gösterir. Motor, durmadan ve yön değiştirmeden önce 3 saniye çalışır.
L293D yarım köprü sürücülerinin nasıl kullanıldığı aşağıda açıklanmıştır:
Gösterim / Ne Beklemeli
Kurulum tamamlandığında ve kod yüklendiğinde, motorun 3 saniye boyunca bir yönde döndüğünü, 2 saniye durduğunu ve ardından 3 saniye boyunca ters yönde döndüğünü gözlemlemelisiniz. Motorun durumu seri monitörde yazdırılacak ve bu işlemleri doğrulayacaktır (videoda 12:00'de).
Yaygın hatalar arasında motora doğru voltajın sağlandığından emin olmak ve motor bağlantılarının doğru olduğunu kontrol etmek yer alır. Motor tepki vermezse, kablolamayı ve güç kaynağı bağlantılarını tekrar kontrol edin.
Video Zaman Damgaları
- 00:00 - Giriş
- 02:30 - Kablo bağlantısı açıklaması
- 05:00 - Kod incelemesi
- 10:00 - Motor kontrolü gösterimi
++
/*
* This is the Arduino code L293 DC motor driver (Advanced).
Using this code you can control a motor to rotate in both directions: clockwise (CW)
and counter-clockwise (CCW).
* *
// Written by Ahmad S. for Robojax.com on
// February 25, 2018 at 18:30 in Ajax, Ontario, Canada
* Permission granted to share this code given that this
* note is kept with the code.
* Disclaimer: this code is "AS IS" and for educational purposes only.
*
* watch L293 video for details https://youtu.be/jAmDliHcTJ0
* Code is available at http://robojax.com/learn/arduino
*
*/
// DC motor 1 control
#define P1A 2 // define pin 2 as for P1A
#define P2A 7 // define pin 7 as for P2A
#define EN12 8 // define pin 8 as for 1,2EN enable
// DC motor 2 control
#define P3A 10 // define pin 10 as for P3A
#define P4A 13 // define pin 13 as for P4A
#define EN34 9 // define pin 9 as for EN3 and EN4 enable
/*
* Permission granted to share this code given that this
* note is kept with the code.
* Disclaimer: this code is "AS IS" and for educational purposes only.
*
*/
void setup() {
// L293 Motor Control Code by Robojax.com 2018025
Serial.begin(9600);// setup Serial Monitor to display information
pinMode(P1A, OUTPUT);// define pin as OUTPUT for P1A
pinMode(P2A, OUTPUT);// define pin as OUTPUT for P2A
pinMode(EN12, OUTPUT);// define pin as OUTPUT for 1,2EN
pinMode(P3A, OUTPUT);// define pin as OUTPUT for P3A
pinMode(P4A, OUTPUT);// define pin as OUTPUT for P4A
pinMode(EN34, OUTPUT);// define pin as OUTPUT for 3,4EN
// L293 Motor Control Code by Robojax.com 2018025
}
void loop() {
// L293 Motor Control Code by Robojax.com 2018025
Serial.println("Rotating CW");
digitalWrite(EN12 ,HIGH);// Enable 1A and 2A
digitalWrite(P1A,HIGH);// send + or HIGH signal to P1A
digitalWrite(P2A,LOW);// send - or LOW signal to P2A
delay(3000);// motor runs for 3 seconds
digitalWrite(EN12 ,LOW);// Disable 1A and 2A
delay(2000);// motor stop for 3 seconds
Serial.println("Motor Stopped");
// L293 Motor Control Code by Robojax.com 2018025
// now changing the direction of rotation of motor
Serial.println("Rotating CCW");
digitalWrite(EN12 ,HIGH);// Enable 1A and 2A
digitalWrite(P1A,LOW);// send + or HIGH signal to P1A
digitalWrite(P2A,HIGH);// send - or LOW signal to P2A
delay(3000);// motor runs for 3 seconds
digitalWrite(EN12 ,LOW);// Disable 1A and 2A
delay(2000);// motor stop for 3 seconds
Serial.println("Motor Stopped");
Serial.println("=========== Loop done");
delay(500);
// L293 Motor Control Code by Robojax.com 2018025
}
/*
* This is the Arduino code L293 DC motor driver (Advanced).
Using this code you can control a motor to rotate in both directions: clockwise (CW)
and counter-clockwise (CCW).
* *
// Written by Ahmad S. for Robojax.com on
// February 25, 2018 at 18:30 in Ajax, Ontario, Canada
* Permission granted to share this code given that this
* note is kept with the code.
* Disclaimer: this code is "AS IS" and for educational purposes only.
*
* Watch L293 video for details: https://youtu.be/jAmDliHcTJ0
* Code is available at: http://robojax.com/learn/arduino
*
*/
// DC motor 1 control
#define P1A 2 // define pin 2 as for P1A
#define P2A 7 // define pin 7 as for P2A
#define EN12 8 // define pin 8 as for 1,2EN enable
// DC motor 2 control
#define P3A 10 // define pin 10 as for P3A
#define P4A 13 // define pin 13 as for P4A
#define EN34 9 // define pin 9 as for EN3 and EN4 enable
/*
* Permission granted to share this code given that this
* note is kept with the code.
* Disclaimer: this code is "AS IS" and for educational purposes only.
*
*/
void setup() {
// L293 Motor Contro Code by Robojax.com 2018025
Serial.begin(9600);// setup Serial Monitor to display information
pinMode(P1A, OUTPUT);// define pin as OUTPUT for P1A
pinMode(P2A, OUTPUT);// define pin as OUTPUT for P2A
pinMode(EN12, OUTPUT);// define pin as OUTPUT for 1,2EN
pinMode(P3A, OUTPUT);// define pin as OUTPUT for P3A
pinMode(P4A, OUTPUT);// define pin as OUTPUT for P4A
pinMode(EN34, OUTPUT);// define pin as OUTPUT for 3,4EN
// L293 Motor Contro Code by Robojax.com 2018025
}
void loop() {
if(value == 45){
rotateMA("CW",HIGH); // start motor in CW
}
delay(3000);
rotateMA("CW",LOW); // stop motor
delay(2000);
rotateMA("CCW",HIGH); // start motor in CCW
delay(3000);
rotateMA("CW",LOW); /// stop motor
delay(2000);
// L293 Motor Contro Code by Robojax.com 2018025
}// loop ends
/**
* function: rotateMA(String di,int action)
* Sends power to motor A
* di is a string and can be "CW" or "CCW"
* to use:
* rotateMA("CW",HIGH);// to rotate motor CW
* rotateMA("CCW",HIGH);// to rotate motor CCW
* to stop the motor:
* rotateMA("CW",LOW);// to stop motor
*/
void rotateMA(String di,int endis)
{
// L293 Motor Contro Code by Robojax.com 2018025
if(di =="CW"){
Serial.println(" Rotating CW");
digitalWrite(EN12 ,endis);// Enable 1A and 2A
digitalWrite(P1A,HIGH);// send + or HIGH signal to P1A
digitalWrite(P2A,LOW);// send - or LOW signal to P2A
}else{
// L293 Motor Contro Code by Robojax.com 2018025
// now changing the direction of rotation of motor
Serial.println(" Rotating CCW");
digitalWrite(EN12 ,endis);// Enable 1A and 2A
digitalWrite(P1A,LOW);// send + or HIGH signal to P1A
digitalWrite(P2A,HIGH);// send - or LOW signal to P2A
}
// L293 Motor Contro Code by Robojax.com 2018025
}//rotateMA ends here
İhtiyacın olabileceğini düşünüyor
-
AmazonPurchase L293D motor driver ICamzn.to
-
AliExpressPurchase L293D motor driver IC from AliExpresss.click.aliexpress.com
Kaynaklar ve referanslar
Henüz kaynak yok.
Dosyalar📁
Veri Sayfası (pdf)
-
Yedi segment LED ekranı Arduino ile nasıl kullanılır
robojax_L293D_motor_shield_manual.pdf0.16 MB -
L293d datasheet
L293d_datasheet.pdf0.34 MB