Search Code

Kodin Arduino da Bidiyo: L293D Mai Sarrafa Motar DC (ba tare da sarrafa saurin ba)

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

Arduino wiring for L293D motor driver with battery
Arduino wiring for L293D motor driver with battery
Arduino wiring for L293D motor driver
Arduino wiring for L293D motor driver

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.

L293D breadboard pin 1
L293D breadboard pin 1
L293D_breadboard_wiring_bb

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:

L293D as halft bridge CW
L293D a matsayin rabin gada CW
L293D as halft bridge CCW
L293D a matsayin rabin gada CCW

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

Hotuna

L293D breadboard pin 1
L293D breadboard pin 1
L293D_breadboard_wiring_bb
L293D_breadboard_wiring_bb
L293D as halft bridge CCW
L293D as halft bridge CCW
L293D as halft bridge CW
L293D as halft bridge CW
Arduino wiring for L293D motor driver with battery
Arduino wiring for L293D motor driver with battery
Arduino wiring for L293D motor driver
Arduino wiring for L293D motor driver
79-Arduino code L293 DC motor driver (Advanced).
Harshe: C++
++
/*
 * 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 
}
80-Arduino code: L293 DC motor driver (Advanced)
Harshe: C++
/*


 * 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

Albarkatun da kuma shafukan da za a duba

Babu kayan aiki tukuna.

Fayiloli📁

Takardar bayanai (pdf)