Documente Academic
Documente Profesional
Documente Cultură
1. Introducere
Una din problemele importante care se pun în legătură cu comanda sistemelor de acţionare
electrică şi tipul motorului de acţionare este problema reglării vitezei sau poziţiei. Prin comanda
vitezei se înţelege orice intervenţie din exterior asupra parametrilor funcţionali ai sistemului de
acţionare sau trecerea sistemului de la o viteză stabilă de lucru la alta. Dacă până nu demult,
reglarea vitezei se făcea încă manual, în prezent comanda şi reglarea vitezei maşinilor electrice
impun un grad înalt de automatizare pentru sistemele de acţionare electrică.
Utilizarea unui impuls cu modulaţie în lăţime (PWM) este o tehnică puternică pentru comanda
circuitelor analogice, care folosesc pentru ieşire un procesor digital. Impulsul cu modulaţie în lăţime
este folosit într-o largă varietate de aplicaţii, începând de la măsurări şi comunicaţii până la
comanda de putere şi conversie.
Formele de undă ale tensiunii şi curenţilor de la intrarea şi ieşirea invertoarelor care folosesc
dispozitive semiconductoare de putere se abat de la forma sinusoidală. Din acest motiv, s-a optat
pentru realizarea unor tehnici de comandă a invertoarelor mai complexe, cum ar fi construirea
formelor de undă a mărimilor electrice de interes din trepte sau pulsuri modulate în durată. În cadrul
acestor tehnici de comandă, cele mai utilizate sunt tehnicile de comandă cu pulsuri modulate în
durată (PWM).
Invertorul comandat cu ajutorul tehnicilor PWM, lucrează în general cu frecvenţă de comutaţie
constantă şi trebuie să permită modificarea valorii efective a fundamentalei tensiunii de ieşire în
limite relativ mari, cu păstrarea constantă a tensiunii de intrare.
1
Limbaje de programarea pentru roboţi L8
Fig. 1
Deoarece f t este o undă rectangulară, valoarea acestei funcţii este y max pentru 0 t D T
1 DT T
y y max dt y min dt
T 0 DT
D T y max T 1 D y min
T
D y max 1 D y min
Această expresie poate fi mult simplificată dacă considerăm cazul în care y min 0 . În acest
caz se obţine următoarea relaţie pentru valoarea medie:
y D y max .
Relaţia de mai sus arată în mod evident că valoarea medie a semnalului y este direct
proporţional cu factorul de umplere D.
2
Limbaje de programarea pentru roboţi L8
Următoarea figură prezintă circuitul echivalent al motorului şi forma de undă a semnalului
PWM, care comută deschis şi închis.
Fig.2
T este perioada de comutare, care determină frecvenţa de comutare. Forma de undă a
curentului este dată de relaţia:
t t R
i Ie τ Ie L .
L
τ este constanta de timp a circuitului, care este .
R
Astfel, curentul ( i1 ) obţinut la timpul t T / 2 trebuie să fie nu mai mic decât P% inferior
P
i1 1 i0
100
Prin înlocuire se obţine:
T R T R
P P
2L 0 2 L
Ie 1 Ie e 1 ,
100 100
prin calcul rezultă:
2L P R
T ln1 f 1/T .
R 100 P
2 L ln1
100
Pentru un motor de curent continuu, care are următorii parametri R = 0.04 Ω şi L = 70 μH se
obţin următoarele frecvenţe prezentate în tabelul următor. Este necesar să se adauge la rezistenţa
3
Limbaje de programarea pentru roboţi L8
motorului şi rezistenţa tranzistorului cu efect de câmp folosit (r = 2 x 0.01 Ω). Deci rezistenţa totală
va fi de R = 0.06 Ω.
Procent P Frecvenţa
1 42 kHz
5 8.2 kHz
10 4 kHz
20 1900 Hz
50 610 Hz
4
Limbaje de programarea pentru roboţi L8
Fig. 3
- La fiecare incrementare a registrului numărător are loc o comparaţie între acest registru şi o
valoare stocată în registrul OCR. Această valoare poate fi încărcată prin software de utilizator. Dacă
are loc egalitatea se generează o întrerupere, în caz contrar incrementarea continuă.
Timerele sunt prevăzute cu mai multe canale astfel că se pot desfăşura în paralel mai multe
numărători.
6. Semnale PWM
Pentru a controla turaţia motoarelor de curent continuu există mai multe metode. Cea mai
simplă ar fi înserierea unui rezistor variabil in circuitul de alimentare al motorului. Prin modificarea
valorii rezistenţei se modifică tensiunea aplicată motorului.
Fig. 4
5
Limbaje de programarea pentru roboţi L8
Variaţia tensiunii nu este proporţională cu variaţia rezistenţei ci depinde şi de curentul absorbit
de motor. Această metodă nu este eficientă, având in vedere faptul că se pierde foarte multă energie
prin disipare de căldură.
Cea mai des utilizată metodă de control a turaţiei este comanda cu impulsuri modulate în
lăţime PWM (Pulse Width Modulation).
Variaţia turaţiei motorului se face prin creşterea sau micşorarea timpului în care semnalul de
comandă are valoarea 1 logic (tON). Astfel la un factor de umplere de 100%, motorul are turaţia
maximă, deci tON este maxim, iar tOFF este zero. La un factor de umplere de 50 %, motorul are
jumătate din turaţia nominală deci tON = tOFF. Iar la un factor de umplere de 0 % motorul este oprit
deci tOFF este maxim, iar tON este zero.
t ON
f 100 [%] .
t ON t OFF
Majoritatea microcontrolerelor pot genera semnale PWM. Pentru măsurarea timpului cât
semnalul este în 0 logic şi al timpului cât stă în 1 logic, se foloseşte un Timer.
Pentru a genera un astfel de semnal numărătorul este incrementat periodic şi este resetat la
sfârşitul fiecărei perioade a PWM-ului. Când valoarea numărătorului este mai mare decât valoarea
de referinţă, ieşirea PWM trece din starea 0 logic in starea 1 logic (sau invers).
4. Modul de lucru
Aplicaţia 1.
Scopul aplicaţiei este reglarea vitezei unui motor de curent continuu. Pentru alimentarea
motorului se foloseşte pinul RC2, iar pentru schimbarea sensului de rotaţie se foloseşte pinul RB7
sau RC3. Portul B și portul C trebuiesc setate ca ieşire. Factorul de umplere poate lua valori între 0
și 255.
Programul are următoarea forma scris în pseudocod:
comentarii despre aplicaţie
se declară variabila factor_umplere (unsigned short factor_umplere);
void InitMain() // se declară funcţia de iniţializare
{
se setează pinul RB7 al registrului TRISB ca ieşire;
se setează pinii RC2 şi RC3 ai registrului TRISC ca ieșire;
se apelează funcţia PWM_Init pentru frecvenţa de 5000 Hz (PWM_Init(5000));
}
instrucţiunea principala (main)
{
se apelează funcţia InitMain;
se apelează funcţia PWM_Start;
deschide bucla de ciclare continua
{
6
Limbaje de programarea pentru roboţi L8
atribuie valoarea de 180 variabilei factor_umplere;
se apelează funcţia PWM_Change_Duty (PWM_Change_Duty(factor_umplere));
întârzie 100 ms;
}
}
Rulaţi programul de mai multe ori modificând timpi de alimentare, care corespund factorului
de umplere al impulsurilor PWM.
Aplicaţia 2.
Să se scrie un program care permite reglarea liniară a vitezei unui motor de curent continuu de
la o valoare minimă până la viteza nominală a motorului.
Aplicaţia 3.
Să se scrie un program care permite reglarea vitezei unui motor de curent continuu după o lege
triunghiulară.