În acest tutorial vom interfața un motor DC cu Arduino UNO și vom controla viteza utilizând conceptul PWM (Pulse Width Modulation). Această caracteristică este activată în UNO pentru a obține tensiune variabilă peste tensiune constantă. Metoda PWM este explicată aici; ia în considerare un circuit simplu așa cum se arată în figură.
Dacă butonul este apăsat dacă figura, atunci motorul va începe să se rotească și va fi în mișcare până când butonul este apăsat. Această presare este continuă și este reprezentată în primul val de figură. Dacă, pentru un caz, considerați că butonul este apăsat timp de 8 ms și deschis timp de 2 ms într-un ciclu de 10 ms, în acest caz motorul nu va experimenta tensiunea completă a bateriei de 9 V, deoarece butonul este apăsat doar timp de 8 ms, astfel încât tensiunea terminalului RMS motorul va fi în jur de 7V. Datorită acestei tensiuni RMS reduse, motorul se va roti, dar la o viteză redusă. Acum pornirea medie pe o perioadă de 10 ms = Timp de pornire / (Timp de pornire + Timp de oprire), aceasta se numește ciclu de funcționare și este de 80% (8 / (8 + 2)).
În al doilea și al treilea caz, butonul este apăsat și mai puțin timp comparativ cu primul caz. Din acest motiv, tensiunea terminalului RMS la terminalele motorului scade chiar mai mult. Datorită acestei tensiuni reduse, viteza motorului scade chiar mai mult. Această scădere a vitezei cu ciclul de funcționare continuă să se întâmple până la un punct în care tensiunea terminalului motorului nu va fi suficientă pentru a roti motorul.
Prin urmare, putem concluziona că PWM poate fi utilizat pentru a varia turația motorului.
Înainte de a merge mai departe, trebuie să discutăm H-BRIDGE. Acum acest circuit are în principal două funcții, prima este de a conduce un motor de curent continuu de la semnale de control de putere redusă, iar cealaltă este de a schimba direcția de rotație a motorului de curent continuu.
figura 1
Figura 2
Știm cu toții că pentru un motor de curent continuu, pentru a schimba direcția de rotație, trebuie să schimbăm polaritățile tensiunii de alimentare a motorului. Deci, pentru a schimba polaritățile, folosim H-bridge. Acum, în figura 1 de mai sus, avem patru comutatoare. Așa cum se arată în figura 2, pentru ca motorul să se rotească A1 și A2 sunt închise. Din această cauză, curentul curge prin motor de la dreapta la stânga, așa cum se arată în a doua parte a figurii 3. Deocamdată considerați că motorul se rotește în sensul acelor de ceasornic. Acum, dacă comutatoarele A1 și A2 sunt deschise, B1 și B2 sunt închise. Curentul prin motor curge de la stânga la dreapta așa cum se arată în 1 st parte din figura 3. Această direcție a curentului de curent este opusă primei și astfel vedem un potențial opus la terminalul motorului față de primul, astfel încât motorul se rotește în sens antiorar. Așa funcționează un H-BRIDGE. Cu toate acestea, motoarele cu putere redusă pot fi acționate de un H-BRIDGE IC L293D.
L293D este un IC H-BRIDGE conceput pentru acționarea motoarelor de curent continuu de mică putere și este prezentat în figură. Acest CI constă din două punți h și astfel poate acționa două motoare de curent continuu. Deci, acest CI poate fi utilizat pentru a conduce motoarele robotului de la semnalele microcontrolerului.
Acum, așa cum am discutat înainte, acest CI are capacitatea de a schimba direcția de rotație a motorului de curent continuu. Acest lucru se realizează prin controlul nivelurilor de tensiune la INPUT1 și INPUT2.
Activați Pin |
Pinul de intrare 1 |
Pinul de intrare 2 |
Direcția motorului |
Înalt |
Scăzut |
Înalt |
Obligatoriu Dreapta |
Înalt |
Înalt |
Scăzut |
Vireaza la stanga |
Înalt |
Scăzut |
Scăzut |
Stop |
Înalt |
Înalt |
Înalt |
Stop |
Așa cum se arată în figura de mai sus, pentru rotația în sensul acelor de ceasornic, 2A ar trebui să fie ridicat și 1A ar trebui să fie scăzut. În mod similar, în sensul acelor de ceasornic, 1A trebuie să fie ridicat și 2A să fie scăzut.
Așa cum se arată în figură, Arduino UNO are canale 6PWM, deci putem obține PWM (tensiune variabilă) la oricare dintre acești șase pini. În acest tutorial vom folosi PIN3 ca ieșire PWM.
Hardware: ARDUINO UNO, sursă de alimentare (5v), condensator 100uF, LED, butoane (două bucăți), rezistor de 10KΩ (două bucăți).
Software: arduino IDE (Arduino seara).
Diagrama circuitului
Circuitul este conectat în panou conform schemei de circuite prezentate mai sus. Cu toate acestea, trebuie să acordați atenție în timpul conectării terminalelor LED. Deși butoanele prezintă efect de săritură în acest caz, nu provoacă erori considerabile, așa că nu trebuie să ne facem griji de data aceasta.
PWM de la UNO este ușor, în mod normal, configurarea unui controler ATMEGA pentru semnalul PWM nu este ușoară, trebuie să definim multe registre și setări pentru un semnal precis, cu toate acestea în ARDUINO nu trebuie să ne ocupăm de toate aceste lucruri.
În mod implicit, toate fișierele și registrele antet sunt predefinite de ARDUINO IDE, trebuie pur și simplu să le apelăm și gata, vom avea o ieșire PWM la pinul corespunzător.
Acum, pentru a obține o ieșire PWM la un pin adecvat, trebuie să lucrăm pe trei lucruri,
|
Mai întâi trebuie să alegem pinul de ieșire PWM din șase pini, după care trebuie să setăm acel pin ca ieșire.
Apoi, trebuie să activăm caracteristica PWM a UNO apelând funcția „analogWrite (pin, valoare)”. Aici „pin” reprezintă numărul pinului în care avem nevoie de ieșire PWM, îl punem ca „3”. Deci, la PIN3 obținem ieșire PWM.
Valoarea este ciclul de pornire PORNIT, între 0 (întotdeauna oprit) și 255 (întotdeauna activat). Vom crește și micșora acest număr prin apăsarea butonului.
UNO are o rezoluție maximă de „8”, nu se poate merge mai departe de aici valorile de la 0-255. Cu toate acestea, se poate reduce rezoluția PWM utilizând comanda „analogWriteResolution ()”, introducând o valoare de la 4-8 între paranteze, putem schimba valoarea acesteia de la patru biți PWM la opt biți PWM.
Comutatorul urmează să schimbe direcția de rotație a motorului de curent continuu.