Arduino-kode en video: L293D GS-motorbeheerder (sonder spoedbeheer)
Hierdie tutoriaal dek hoe om die L293D-motorbeheerder met 'n Arduino te gebruik om 'n GS-motor te beheer. Die L293D laat jou toe om die motor in beide kloksgewys en antikloksgewys rigtings te draai. Deur hierdie gids te volg, sal jy leer hoe om die komponente te bedraad en die Arduino te programmeer om die gewenste motorbeheer te bereik.
In hierdie projek sal ons die L293D-motorbestuurder gebruik om 'n enkele GS-motor te beheer. Die motor sal in staat wees om rigting te verander gebaseer op die opdragte wat in die Arduino-kode gegee word. Vir 'n duideliker begrip van die opstelling en kode, is dit voordelig om die gepaardgaande video te kyk (in video by 00:00).
Hardeware Verduidelik
Die L293D is 'n geïntegreerde stroombaan wat ontwerp is vir die aandryf van motors. Dit kan twee GS-motors gelyktydig beheer of een trapmotor. Die chip gebruik 'n H-brug-konfigurasie om rigtingbeheer moontlik te maak deur die polariteit van die spanning wat op die motor toegepas word, te wissel. Hierdie buigsaamheid maak dit 'n uitstekende keuse vir robotika- en outomatiseringsprojekte.
Benewens die L293D, sal ons 'n Arduino-bord gebruik om beheerseine na die motorbestuurder te stuur. Die Arduino sal die nodige logikavlakke genereer om die motor te aktiveer en sy rotasierigting te bepaal. Die opstelling sal ook 'n GS-motor en 'n kragtoevoer benodig wat versoenbaar is met die motor se spanningsvereistes.
Datablad Besonderhede
| Vervaardiger | Texas Instruments |
|---|---|
| Deelnommer | L293D |
| Logika/IO-spanning | 5 V |
| Toevoerspanning | 4.5 - 36 V |
| Uitsetstroom (per kanaal) | 600 mA |
| Piekstroom (per kanaal) | 1.2 A |
| PWM-frekwensie riglyn | 20 kHz |
| Inset logika drempels | 2.5 V (tip.) |
| Spanningsval / RDS(on) / versadiging | 1.5 V (maks) |
| Termiese limiete | 150 °C (maks) |
| Pakket | 16-DIP |
| Notas / variante | Kan twee motors beheer |
- Verseker dat die toevoerspanning nie 36 V oorskry nie.
- Gebruik toepaslike hitte-afvoer wanneer naby maksimum stroom gewerk word.
- Koppel altyd die grond van die Arduino en die motorbestuurder.
- Kontroleer die bedrading om omgekeerde polariteitverbindings te vermy.
- Gebruik PWM-seine om spoed te beheer indien nodig in toekomstige projekte.
Bedradingsinstruksies


Om die L293D-motorbeheerder aan die Arduino te bedraad, begin deur die krag en grond te koppel. Koppel die L293D se pen 4 en pen 5 aan die grond. Koppel dan pen 1 (Vcc1) aan die 5 V-uitset van die Arduino. Vir Vcc2 (pen 8), koppel dit aan 'n eksterne kragtoevoer, en verseker dat dit by die motor se spanningspesifikasie pas.
Volgende, koppel die aktiveringspen (pen 1) aan pen 8 op die Arduino om die motor se krag te beheer. Vir die motorbeheer-insette, koppel pen 2 (1A) van die L293D aan pen 2 op die Arduino en pen 7 (2A) aan pen 7 op die Arduino. Laastens, koppel die motorklemme aan pen 3 (1Y) en pen 6 (2Y) op die L293D.
Kode Voorbeelde & Deurloop
Die volgende kode initialiseer die penne en stel die motorbeheer op. Die identifiseerders wat gebruik word, sluit P1A in vir die eerste motorbeheerpen en EN12 vir die aktiveringspen. Die opstellingsfunksie konfigureer die penne as uitsette.
void setup() {
Serial.begin(9600); // stel Serial Monitor op om inligting te vertoon
pinMode(P1A, OUTPUT); // definieer pen as UITSET vir P1A
pinMode(P2A, OUTPUT); // definieer pen as UITSET vir P2A
pinMode(EN12, OUTPUT); // definieer pen as UITSET vir 1,2EN aktivering
}
In die lus word die motor beveel om in beide rigtings te draai met vertragings tussenin. Die toestand van die motor word op die serial monitor gedruk met behulp van Serial.println.
void loop() {
Serial.println("Draai CW");
digitalWrite(EN12, HIGH); // Aktiveer 1A en 2A
digitalWrite(P1A, HIGH); // stuur HOË sein na P1A
digitalWrite(P2A, LOW); // stuur LAE sein na P2A
delay(3000); // motor loop vir 3 sekondes
digitalWrite(EN12, LOW); // Deaktiveer 1A en 2A
}
Hierdie uittreksel wys hoe om die motor se rotasierigting te beheer deur die logikavlakke wat na P1A en P2A gestuur word, te verander. Die motor loop vir 3 sekondes voordat dit stop en rigting verander.
Hier is hoe L293D halfbrug-bestuurders gebruik word:
Demonstrasie / Wat om te Verwag
Wanneer die opstelling voltooi is en die kode opgelaai is, behoort jy waar te neem dat die motor vir 3 sekondes in een rigting draai, vir 2 sekondes stop, en dan vir nog 3 sekondes in die teenoorgestelde rigting draai. Die toestand van die motor sal op die reeksmonitor gedruk word, wat die aksies bevestig (in video by 12:00).
Algemene slaggate sluit in om te verseker dat die korrekte spanning aan die motor verskaf word en om te verifieer dat die motorkonneksies korrek is. As die motor nie reageer nie, kontroleer die bedrading en die kragtoevoerkonneksies weer.
Video Tydstempels
- 00:00 - Inleiding
- 02:30 - Bedradingverduideliking
- 05:00 - Kode-deurloop
- 10:00 - Demonstrasie van motorbestuur
++
/*
* 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
Goedere wat jy dalk nodig het
-
AmazonPurchase L293D motor driver ICamzn.to
-
AliExpressPurchase L293D motor driver IC from AliExpresss.click.aliexpress.com
Hulpbronne en verwysings
Geen hulpbronne nog.
Lêers📁
Datasheet (pdf)
-
robojax_L293D_motor_shield_manual.pdf
robojax_L293D_motor_shield_manual.pdf0.16 MB -
L293d datasheet
L293d_datasheet.pdf0.34 MB