- Modularea lățimii pulsului:
- Material necesar
- Diagrama circuitului
- Cod și explicație
- Controlul vitezei motorului de curent continuu folosind Arduino
Motorul de curent continuu este cel mai utilizat motor în proiecte de robotică și electronică. Pentru controlul vitezei motorului DC avem diverse metode, cum ar fi viteza poate fi controlată automat în funcție de temperatură, dar în acest proiect metoda PWM va fi utilizată pentru a controla viteza motorului DC. Aici, în acest proiect Arduino Motor Speed Control, viteza poate fi controlată prin rotirea butonului potențiometrului.
Modularea lățimii pulsului:
Ce este PWM? PWM este o tehnică prin utilizarea putem controla tensiunea sau puterea. Pentru a o înțelege mai simplu, dacă aplicați 5 volți pentru conducerea unui motor, atunci motorul se va deplasa cu o anumită viteză, acum, dacă reducem tensiunea aplicată cu 2 mijloace, aplicăm 3 volți motorului, iar viteza motorului scade, de asemenea. Acest concept este utilizat în proiect pentru a controla tensiunea utilizând PWM. Am explicat în detaliu PWM în acest articol. De asemenea, verificați acest circuit unde PWM este utilizat pentru a controla luminozitatea LED-ului: 1 Watt LED Dimmer.
% Ciclul de funcționare = (TON / (TON + TOFF)) * 100 Unde, T ON = Timp ridicat al undei pătrate T OFF = Timp scăzut al undei pătrate
Acum, dacă întrerupătorul din figură este închis continuu pe o perioadă de timp, atunci motorul va porni continuu în timpul respectiv. Dacă întrerupătorul este închis timp de 8 ms și deschis timp de 2 ms pe un ciclu de 10 ms, atunci motorul va fi pornit numai în timp de 8 ms. Acum terminalul mediu peste o perioadă de 10 ms = Timp de pornire / (Timp de pornire + Timp de oprire), acesta se numește ciclu de funcționare și este de 80% (8 / (8 + 2)), deci media tensiunea de ieșire va fi de 80% din tensiunea bateriei. Acum, ochiul uman nu poate vedea că motorul este pornit timp de 8 ms și oprit timp de 2 ms, așa că va arăta ca motorul DC se rotește cu o viteză de 80%.
În al doilea caz, comutatorul este închis timp de 5 ms și deschis timp de 5 ms pe o perioadă de 10 ms, astfel încât tensiunea terminală medie la ieșire va fi de 50% din tensiunea bateriei. Spuneți dacă tensiunea bateriei este de 5V și ciclul de funcționare este de 50% și deci tensiunea terminală medie va fi de 2,5V.
În al treilea caz, ciclul de funcționare este de 20%, iar tensiunea medie a terminalului este de 20% din tensiunea bateriei.
Am folosit PWM cu Arduino în multe dintre proiectele noastre:
- Dimmer cu LED bazat pe Arduino folosind PWM
- Ventilator controlat de temperatură folosind Arduino
- Control motor DC folosind Arduino
- Controlul vitezei ventilatorului AC folosind Arduino și TRIAC
Puteți afla mai multe despre PWM parcurgând diverse proiecte bazate pe PWM.
Material necesar
- Arduino UNO
- Motor DC
- Tranzistorul 2N2222
- Potențiometru 100k ohm
- Condensator 0.1uF
- Breadboard
- Saruri sarite
Diagrama circuitului
Diagrama circuitului pentru controlul vitezei motorului Arduino DC folosind PWM este prezentată mai jos:
Cod și explicație
Codul complet pentru Arduino DC Motor Control folosind potențiometru este dat la sfârșit.
În codul de mai jos, am inițializat variabila c1 și c2 și i-am atribuit pinul analogic A0 pentru ieșirea potențiometrului și al 12- lea pin pentru „pwm”.
int pwmPin = 12; int pot = A0; int c1 = 0; int c2 = 0;
Acum, în codul de mai jos, setați pinul A0 ca intrare și 12 (care este pinul PWM) ca ieșire.
void setup () { pinMode (pwmPin, OUTPUT); // declară pinul 12 ca ieșire pinMode (pot, INPUT); // declară pinul A0 ca intrare }
Acum, în bucla nulă (), citim valoarea analogică (din A0) folosind analogRead (pot) și o salvăm în variabila c2. Apoi, scădeți valoarea c2 din 1024 și salvați rezultatul în c1. Apoi faceți pinul PWM al 12- lea al Arduino HIGH și apoi după o întârziere a valorii c1 faceți pinul LOW. Din nou, după o întârziere a valorii c2, bucla continuă.
Motivul pentru scăderea valorii analogice din 1024 este, Arduino Uno ADC are o rezoluție de 10 biți (deci valorile întregi de la 0 - 2 ^ 10 = 1024 valori). Aceasta înseamnă că va mapa tensiunile de intrare între 0 și 5 volți în valori între 0 și 1024. Deci, dacă înmulțim anlogValue de intrare la (5/1024), atunci obținem valoarea digitală a tensiunii de intrare. Aflați aici cum să utilizați intrarea ADC în Arduino.
bucla void () { c2 = analogRead (pot); c1 = 1024-c2; digitalWrite (pwmPin, HIGH); // setează pinul 12 HIGH delayMicroseconds (c1); // așteaptă c1 uS (timp ridicat) digitalWrite (pwmPin, LOW); // setează pinul 12 LOW delayMicroseconds (c2); // așteaptă c2 uS (timp redus) }
Controlul vitezei motorului de curent continuu folosind Arduino
În acest circuit, pentru controlul vitezei motorului de curent continuu, folosim un potențiometru de 100K ohm pentru a schimba ciclul de funcționare al semnalului PWM. 100K ohm potențiometru este conectat la analogic de intrare A0 PIN al Arduino ONU și motor de curent continuu este conectat la 12 - lea PIN al Arduino (care este PIN PWM). Funcționarea programului Arduino este foarte simplă, deoarece citește tensiunea de la pinul analogic A0. Tensiunea la pinul analogic este variată utilizând potențiometrul. După efectuarea unor calcule necesare, ciclul de funcționare este ajustat în funcție de acesta.
De exemplu, dacă alimentăm 256 de valori la intrarea analogică, atunci timpul HIGH va fi de 768ms (1024-256) și timpul LOW va fi de 256ms. Prin urmare, înseamnă pur și simplu că ciclul de funcționare este de 75%. Ochii noștri nu pot vedea o astfel de oscilație de înaltă frecvență și se pare că motorul este pornit continuu cu 75% din viteză. Deci, așa putem realiza Controlul vitezei motorului folosind Arduino.