Kodin Arduino da Bidiyo: L293D Mai Sarrafa Motar DC (ba tare da sarrafa saurin ba)
Wannan koyarwar ta shafi yadda ake amfani da mai sarrafa motar L293D tare da Arduino don sarrafa motar DC. L293D yana ba ka damar juya motar a duka alkiblar agogo da kuma alkiblar agogo baya. Ta bin wannan jagorar, za ka koyi yadda ake haɗa kayan aiki da kuma tsara Arduino don cimma sarrafa motar da ake so.
A cikin wannan aikin, za mu yi amfani da direban motar L293D don sarrafa motar DC guda ɗaya. Motar za ta iya canza alkibla bisa ga umarnin da aka bayar a cikin lambar Arduino. Don ƙarin fahimtar saitin da lambar, yana da amfani a kalli bidiyon da ke da alaƙa (a cikin bidiyo a 00:00).
Bayanin Kayan Aiki
L293D wani haɗaɗɗen kewayawa ne da aka ƙera don sarrafa motoci. Yana iya sarrafa motocin DC guda biyu a lokaci ɗaya ko kuma motar stepper guda ɗaya. Chip ɗin yana amfani da tsarin H-bridge don ba da damar sarrafa alkibla ta hanyar canza polarity na wutar lantarki da ake amfani da ita ga motar. Wannan sassauci ya sa ya zama zaɓi mai kyau don ayyukan robotics da automation.
Baya ga L293D, za mu yi amfani da allon Arduino don aika siginonin sarrafawa zuwa direban motar. Arduino zai samar da matakan dabaru da ake buƙata don kunna motar da kuma tantance alkiblar juyawarta. Saitin kuma zai buƙaci motar DC da kuma tushen wutar lantarki da ya dace da buƙatun wutar lantarki na motar.
Bayanan Datasheet
| Mai Ƙirƙira | Texas Instruments |
|---|---|
| Lambar sashi | L293D |
| Wutar Logic/IO | 5 V |
| Wutar samarwa | 4.5 - 36 V |
| Ƙarfin fitarwa (kowane tashar) | 600 mA |
| Ƙarfin kololuwa (kowane tashar) | 1.2 A |
| Jagorar mitar PWM | 20 kHz |
| Matakan ƙofar dabaru | 2.5 V (na yau da kullun) |
| Rage wutar / RDS(on) / cikar | 1.5 V (max) |
| Iyakokin zafi | 150 °C (max) |
| Kunshin | 16-DIP |
| Bayanan kula / bambance-bambance | Yana iya sarrafa motoci biyu |
- Tabbatar cewa wutar samarwa bai wuce 36 V ba.
- Yi amfani da hanyar zubar da zafi mai dacewa lokacin aiki kusa da iyakar ƙarfin wutar.
- Koyaushe haɗa ƙasan Arduino da direban motar.
- Duba haɗin wayoyi don guje wa haɗin da ba daidai ba na polarity.
- Yi amfani da siginonin PWM don sarrafa gudun idan an buƙata a ayyukan gaba.
Umarnin Haɗin Wayoyi


Don haɗa mai sarrafa motar L293D zuwa Arduino, fara da haɗa wutar da ƙasa. Haɗa pin 4 da pin 5 na L293D zuwa ƙasa. Sa'an nan, haɗa pin 1 (Vcc1) zuwa fitowar 5 V na Arduino. Don Vcc2 (pin 8), haɗa shi zuwa tushen wutar lantarki na waje, tabbatar da cewa ya dace da ƙayyadaddun wutar motar.
Na gaba, haɗa pin ɗin kunna (pin 1) zuwa pin 8 akan Arduino don sarrafa wutar motar. Don shigarwar sarrafa motar, haɗa pin 2 (1A) na L293D zuwa pin 2 akan Arduino da pin 7 (2A) zuwa pin 7 akan Arduino. A ƙarshe, haɗa tashoshin motar zuwa pin 3 (1Y) da pin 6 (2Y) akan L293D.
Misalan Lamba & Bayani
Lambar da ke gaba tana fara pins ɗin da kuma saita sarrafa motar. Alamomin da aka yi amfani da su sun haɗa da P1A don pin ɗin sarrafa motar na farko da EN12 don pin ɗin kunna. Aikin setup yana saita pins ɗin a matsayin fitarwa.
void setup() {
Serial.begin(9600); // saita Serial Monitor don nuna bayanai
pinMode(P1A, OUTPUT); // ayyana pin a matsayin OUTPUT don P1A
pinMode(P2A, OUTPUT); // ayyana pin a matsayin OUTPUT don P2A
pinMode(EN12, OUTPUT); // ayyana pin a matsayin OUTPUT don 1,2EN kunna
}
A cikin loop, ana umurci motar da ta juya a duka alkibla biyu tare da jinkiri a tsakanin. Ana buga yanayin motar zuwa serial monitor ta amfani da Serial.println.
void loop() {
Serial.println("Juyawa CW");
digitalWrite(EN12, HIGH); // Kunna 1A da 2A
digitalWrite(P1A, HIGH); // aika siginar HIGH zuwa P1A
digitalWrite(P2A, LOW); // aika siginar LOW zuwa P2A
delay(3000); // motar tana gudana na daƙiƙa 3
digitalWrite(EN12, LOW); // Kashe 1A da 2A
}
Wannan ɓangaren yana nuna yadda ake sarrafa alkiblar juyawar motar ta hanyar canza matakan dabaru da aka aika zuwa P1A da P2A. Motar tana gudana na daƙiƙa 3 kafin ta tsaya ta canza alkibla.
Ga yadda ake amfani da direbobin rabin gada na L293D:
Nuni / Abin da za Ka Yi Tsammani
Lokacin da saitin ya cika kuma an ɗora lambar, ya kamata ka lura da motar tana juyawa a wata hanya guda na tsawon dakika 3, tana tsayawa na dakika 2, sannan tana juyawa a kishiyar hanya na wasu dakika 3. Za a buga yanayin motar a kan serial monitor, yana tabbatar da ayyukan (a cikin bidiyo a 12:00).
Abubuwan da ake yawan kuskure sun haɗa da tabbatar da an ba da wutar lantarki daidai ga motar da kuma tabbatar da cewa haɗin motar daidai ne. Idan motar ba ta amsa ba, sake duba wayoyi da haɗin wutar lantarki.
Lokutan Bidiyo
- 00:00 - Gabatarwa
- 02:30 - Bayanin haɗin wayoyi
- 05:00 - Sharhin lambar
- 10:00 - Nunin sarrafa motar
++
/*
* 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
Abin da zaka iya bukata
-
AmazonPurchase L293D motor driver ICamzn.to
-
AliExpressPurchase L293D motor driver IC from AliExpresss.click.aliexpress.com
Albarkatun da kuma shafukan da za a duba
Babu kayan aiki tukuna.
Fayiloli📁
Takardar bayanai (pdf)
-
robojax_L293D_motor_shield_manual.pdf
robojax_L293D_motor_shield_manual.pdf0.16 MB -
L293d datasheet
L293d_datasheet.pdf0.34 MB