curent

Există o mulțime de moduri de a controla motoarele de curent continuu cu un Arduino. Dar unul dintre cele mai ușoare și populare este cu un driver de motor L293D. Driverul motorului L293D este conceput special pentru a controla motoarele de curent continuu, motoarele pas cu pas, solenoizii și orice altă sarcină cu o impedanță ridicată. Unul dintre principalele sale avantaje este că poate controla independent viteza și direcția a două motoare de curent continuu.

În acest tutorial vom acoperi următoarele:

  • Cum funcționează driverul de motor L293D
  • Cum se conectează un motor L293D și DC la Arduino
  • Cum se controlează direcția unui singur motor DC
  • Cum se controlează viteza a două motoare de curent continuu

Cum funcționează L293D

L293D este un IC cu două canale H-Bridge capabil să controleze două motoare de curent continuu. L293D poate controla până la două motoare de curent continuu de la 4,5V la 36V.

Diagrama schematică de mai jos prezintă o versiune simplificată a circuitelor interne care controlează un motor:

Două perechi de tranzistoare Darlington (Q1/Q4 și Q2/Q3) sunt configurate ca o punte H. Există o diodă peste emițător și colectorul fiecărui tranzistor, pentru a preveni CEM înapoi de la motor care provoacă daune tranzistoarelor.

Când tranzistoarele Q1 și Q4 sunt pornite, iar tranzistoarele Q2 și Q3 sunt OFF, curentul curge prin motor de la Vcc la masă astfel:

Acest lucru face ca motorul să se rotească fie în sensul acelor de ceasornic, fie în sens invers acelor de ceasornic. Direcția de rotire depinde de polaritatea motorului și de modul în care îl conectați la sursa de alimentare.

Când tranzistoarele Q2 și Q3 sunt PORNITE, iar Q1 și Q4 sunt OPRITE, curentul prin motor este inversat. Prin inversarea fluxului de curent prin motor, direcția de rotație a acestuia va fi inversată.

Diagrama pinilor L293D

Iată o diagramă cu pini a L293D:

L293D are două punți H separate. Un pod H este pe stânga, iar celălalt pe dreapta:

Podul H 1 poate controla un motor, iar puntea H 2 poate controla un alt motor.

Fiecare pin are următoarea funcție:

  • Ieșire 1: putere pentru motorul H-bridge 1
  • Ieșire 2: putere pentru motorul H-bridge 1
  • Ieșire 3: putere pentru motorul H-bridge 2
  • Ieșire 4: putere pentru motorul H-bridge 2
  • Vcc 1: Alimentare de 5V pentru cipul L293D
  • Vcc 2: sursa de alimentare pentru motoare (4,5V la 36V DC)
  • Activați 1, 2: pornește/oprește H-bridge 1 (HIGH activează, LOW dezactivează)
  • Activați 3, 4: pornește/oprește H-bridge 2 (HIGH activează, LOW dezactivează)
  • Intrare 1: semnal de comandă a motorului pentru H-bridge 1
  • Intrare 2: semnal de comandă a motorului pentru H-bridge 1
  • Intrare 3: semnal de comandă a motorului pentru H-bridge 2
  • Intrare 4: semnal de comandă a motorului pentru H-bridge 2

Pentru a porni motorul H-bridge 1 pornit, trimiteți un semnal HIGH la intrarea 1 pin și semnal LOW la intrarea 2 pin. Acest lucru va face ca motorul să se rotească într-o singură direcție. Pentru a face motorul să se rotească în direcția opusă, trimiteți un semnal LOW la pinul de intrare și un semnal HIGH la pinul de intrare 2. Pentru a opri motorul, trimiteți un semnal LOW la pinul de intrare 2.

Configurarea unui motor de curent continuu cu L293D

În acest tutorial, vom construi câteva exemple de proiecte pentru a demonstra cum să utilizați L293D pentru a controla motoarele de curent continuu de pe Arduino. Pentru a construi exemplele de proiecte, veți avea nevoie de următoarele părți:

Conectați motorul DC și L293D la Arduino

Să construim un exemplu de proiect care va face ca un motor DC să se rotească într-o direcție timp de două secunde, să se oprească, apoi să se rotească în direcția opusă timp de două secunde. Pentru a construi acest proiect, conectați motorul de curent continuu, L293D și Arduino astfel:

Probabil că veți avea nevoie de o sursă de alimentare separată pentru motor. Aici, folosim o sursă de 12V pentru a alimenta motorul și o sursă separată de 5V pentru a alimenta Arduino și L293D.

Cod Arduino pentru a controla un motor DC

După ce ați construit circuitul de mai sus, încărcați acest cod pe Arduino:

Primele două linii de cod atribuie variabila in1 pinului Arudino 10, iar variabila in2 pinului 11. Apoi, în secțiunea de configurare, setăm in1 și in2 ca ieșiri cu funcția pinMode ().

În secțiunea buclă, digitalWrite (in1, HIGH) și digitalWrite (in2, LOW) se transformă în 1 HIGH și in2 LOW, ceea ce face ca motorul să se rotească într-o singură direcție. Funcția de întârziere (2000) menține motorul rotind timp de două secunde. Apoi, digitalWrite (in1, LOW) oprește motorul setând în 1 LOW. Funcția de întârziere (1000) menține motorul oprit o secundă.

După ce motorul este oprit pentru o secundă, inversăm direcția motorului setând în 1 LOW și in2 HIGH cu digitalWrite (in1, LOW) și digitalWrite (in2, HIGH). Folosim delay (2000) pentru a menține motorul învârtit în sens invers două secunde. Apoi oprim motorul setând in2 LOW cu digitalWrite (in2, LOW) .

Controlează direcția a două motoare

Acum să adăugăm un al doilea motor la circuit. Urmați schema de cabluri de mai jos pentru a conecta totul:

Cod Arduino pentru a controla direcția a două motoare

Această schiță va face ca unul dintre motoare să se rotească înainte și înapoi timp de două secunde, apoi să facă celălalt motor să se rotească înainte și înapoi timp de două secunde.

Controlează viteza a două motoare

Acum să adăugăm capacitatea de a controla viteza celor două motoare. Va trebui să adăugați două potențiometre de 10K Ohm la circuitul anterior. Conectați toate componentele conform acestei scheme de cabluri:

Cod Arduino pentru a controla viteza a două motoare

După ce ați conectat circuitul de mai sus, încărcați acest cod pe Arduino:

Pentru a utiliza potențiometrele pentru a controla viteza motoarelor de curent continuu, luăm un analogRead () al pinilor conectați la potențiometre - speedControl1 și speedControl2. Valoarea analogRead () măsurată din acei pini va fi un număr între 0 și 1023, în funcție de poziția potențiometrului. Această valoare este stocată în variabilele setare1 și setare2.

L293D va trimite energie motoarelor în funcție de tensiunea aplicată pinilor de activare. Cu cât este mai mare tensiunea aplicată pinului de activare, cu atât mai multă putere va fi furnizată motorului și cu atât mai repede se va roti. Deci, folosim analogWrite (ena, setting1) și analogWrite (enb, setting2) pentru a trimite citirile de tensiune de la potențiometre la motoarele de curent continuu. Aceasta va schimba viteza motoarelor pe măsură ce potențiometrele sunt rotite.