Sunteți pe pagina 1din 8

Limbaje de Programarea pentru Roboţi C 10

4.3.5. Comanda motoarelor de curent continuu folosind PWM

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. 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.

Principiu PWM – surse de tensiune în comutaţie


Impulsurile cu modulaţie în lăţime folosesc semnal undă rectangular al cărui ciclu de
funcţionare este reglat. În acest fel se obţine variaţia valorii medii a formei de undă folosită. Dacă se
consideră o undă de formă rectangulară f t  , care are o valoare minimă y min , o valoare maximă
y max şi factorul de umplere D (Fig. 4.21 ).

Fig. 4.21 Forma semnalului modulat în lăţime


1
Limbaje de Programarea pentru Roboţi C 10

Valoarea medie a formei de undă rectangulară este dată de relaţia:

1 T
y   f ( t )  dt
T 0

Deoarece f t  este o undă rectangulară, valoarea acestei funcţii este y max pentru 0  t  D  T

şi y min pentru D  T  t  T . Cu aceste precizări, relaţia de mai sus devine:

1  DT T  D  T  y max  T  1  D   y min


y    y max  dt   y min  dt    D  y max  1  D   y min .
T  0 DT  T

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.
Regulatorul de viteză al unui motor de curent continuu
Viteza unui motor de curent continuu este direct proporţional cu tensiunea de alimentare. Dacă
se reduce tensiunea de alimentare de la 12 V la 6 V, atunci motorul va funcţiona la jumătate din
viteza nominală. Pentru a regla viteza de funcţionare a unui motor de curent continuu este necesară
introducerea între sursa de alimentare şi motor a unui regulator de viteză. Acesta are sarcina să
varieze tensiunea medie transmisă motorului. O cale simplă de reglare a tensiunii de alimentare este
să comute alimentarea motorului de la deschis la închis foarte repede. Dacă comutarea este destul
de rapidă, motorul nu sesizează aceste schimbări, ci media efectelor.
Alegerea frecvenţei bazată pe caracteristicile motorului
O cale pentru a alege frecvenţa convenabilă este aceea prin care se doreşte ca forma de undă a
curentului să fie stabilită la un procent p. Atunci se poate stabili matematic frecvenţa minimă care
realizează acest scop (stabilirea unui tensiuni care determină o anumită viteză).
În Fig. 4.22 se prezintă circuitul echivalent al motorului şi forma de undă a semnalului PWM,
care comută alimentarea motorului deschis şi închis.
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  Ie   Ie L .
L
τ este constanta de timp a circuitului, care este .
R
Deci curentul i1 la momentul t =T/2 trebuie să fie cu cel puțin P% mai mic decât la t = 0 (i0).
Aceasta înseamnă că există o condiție de limitare pentru curent.
2
Limbaje de Programarea pentru Roboţi C 10

 P 
i1  1    i0
 100 

Fig. 4.22 Circuitul echivalent al motorului de curent continuu

Prin înlocuire se obţine:


T R T R
  P    P 
2L 0 2 L
Ie  1  Ie  e  1  ,
 100   100 
prin calcul rezultă:
 2L  P  R
T  ln1    f  1/T  .
R  100   P 
 2  L  ln1  
 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
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

3
Limbaje de Programarea pentru Roboţi C 10

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.23 Variaţia tensiunii medii de alimentare


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
Limbaje de Programarea pentru Roboţi C 10

Aplicaţie care utilizează PWM


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 RC3
sau RB7. Portul C și portul B se vor seta ca ieşire.
Programul are următoarea forma scris în pseudocod:
/* Nume proiect: Aplicaţie_PWM
Program pentru reglarea vitezei unui motor de curent continuu.
Pentru reglarea vitezei se va utiliza funcţia PWM cu frecvenţa de 5000 Hz. */
unsigned short factor_umplere;
void InitMain()
{
TRISB = 0b01111111;
PORTB = 0b01111111;
TRISC = 0b11110011;
PWM1_Init(5000); //apelarea funcţiei de iniţializare a frecvenţei la 5000 Hz
}
void main()
{
InitMain();
PWM_Start();
while(1)
{
factor_umplere = 120;
PWM_Change_Duty(factor_umplere);
Delay_ms(100);
}
}

Rulaţi programul de mai multe ori modificând timpi de alimentare, care corespund factorului
de umplere al impulsurilor PWM.

4.3.6. Comanda unui servomotor

Introducere
Un servomotor este un motor de curent continuu special prevăzut cu un reductor şi echipat cu
un circuit electronic pentru a controla direcţia de rotaţie precum şi poziţia arborelui motorului.
Deoarece servomotoarele permit poziţionarea unghiulară precisă a arborelui de ieşire, ele sunt
utilizate pe scară largă în robotică şi maşini, avioane controlate prin radio (pentru a controla
mişcarea diverselor piese). În continuare se vor prezenta părţile componente ale unui servomotor,
cum funcţionează şi apoi modul de interfaţare cu un microcontroler PIC.

5
Limbaje de Programarea pentru Roboţi C 10

Noţiuni teoretice
Un servomotor este compus dintr-un motor de curent continuu, care prin intermediul unui
reductor cu roţi dinţate antrenează un ax de ieşire. În interiorul servomotorului există un circuit
electronic care controlează poziţia axului de ieşire. Pe axul de ieşire este montat un potenţiometru
cu rol de senzor de poziţie. Obiectivul utilizării unui servomotor este de a realiza poziţionarea
unghiulară exactă a unei piese.

Fig. 4.24 Componentele unui servomotor

În scopul realizării unei poziţionări unghiulare precise a arborelui de ieşire este necesară o
informare a poziţionării instantanee a arborelui, care se realizează cu ajutorul unui traductor. O cale
simplă pentru „culegerea” informaţiei este ataşarea unui potenţiometru pe arborele de ieşire. Pentru
realizarea controlului poziţiei arborelui se compară semnalul de reacţie primit de la potenţiometru
(acesta conţine poziţia curentă a arborelui) cu semnalul de intrare, care conţine informaţii despre
poziţia dorită a arborelui. rezultatul comparării este semnalul eroare. Orice diferenţă dintre valoarea
actuală (de la potenţiometru) şi valoarea dorită determină semnalul eroare care este amplificat şi
folosit pentru acţionarea motorului de curent continuu în direcţia reducerii sau eliminării erorii.
Eroare este zero atunci când arborele de ieşire ajunge în poziţia dorită. Diagrama bloc tipică pentru
un servomotor este arătată în Fig. 4.25.
Reductor

Arborele
de ieşire

Potenţio-
metru
Semnal
eroare
PWM la
convertor
Control
Amplificator PWM

Fig. 4.25 Diagrama bloc de control a servomotorului


6
Limbaje de Programarea pentru Roboţi C 10
Intrarea unui servomotor este un semnal impuls de lăţime modificată (PWM), în general, de
frecvenţă de 50 Hz. Acest lucru înseamnă că semnalul impuls trebuie să se repete la fiecare 20 ms.
Lăţimea impulsului determină poziţia unghiulară a arborelui de ieşire. Un circuit electronic din
interiorul servomotorului converteşte semnalul PWM la o tensiune de ieşire proporţională, care este
comparată cu tensiunea de reacţie de la potenţiometru. În cazul în care există o diferenţă între cele
două semnale, circuitul de comandă acţionează motorul în direcţia corespunzătoare, până când
diferenţa devine zero. O valoare tipică a lăţimii impulsului este o valoare din intervalul 1.0 - 2.0
milisecunde (ms). Cele mai multe servomotoare realizează o rotaţie de la 0º la 180º.
In acest interval circuitul de control compară, poziţia unghiulară a axului servomotorului cu
unghiul dorit, unghi dat de factorul de umplere al semnalului PWM. În funcţie de valoarea obţinută,
circuitul de control va alimenta motorul de curent continuu cu o tensiune care să determine rotirea
axului servomotorului în vederea anulării diferenţei dintre cele două valori. Reductorul montat pe
axul servomotorului amplifică cuplul dezvoltat de acesta.
Valorile orientative ale lăţimii impulsului pentru poziţii unghiulare diferite ale servomotorului
sunt furnizate în tabelul de mai jos.
Lăţimea impulsului Poziţia unghiulară
(ms) (º CCW)
0,7 0 (min)
1,1 45
1,5 90
1,9 135
2,3 180 (max)

Fig. 4.26 Valoarea lăţimii impulsului pentru diferite


poziţii unghiulare ale servomotorului
7
Limbaje de Programarea pentru Roboţi C 10
Pentru un servomotor standard, o lăţime a impulsului între 1,0 ms şi 1,5 ms face ca
servomotorul să se rotească în sensul acelor de ceasornic (CW), iar între 1.5 ms şi 2 ms determină
rotaţia servomotorului în sens invers (CCW). O valoare a lăţimii impulsului de 1.5 ms roteşte
servomotorul la poziţia de 90º (Fig. 4.26). Aceste valori pot varia în funcţie de marca şi structura
servomotorului. Se recomandă să se citească foaia de date (datasheet) a servomotorului pentru a
găsi adevăratele valori ale lăţimii impulsului necesare pentru poziţionarea servo la unghiuri diferite.
În general, un servomotor are trei fire: două sunt desemnate pentru alimentarea cu energie
(unul pentru alimentare cu +5 V şi al doilea este legat la masă – 0 V) şi firul al treilea este pentru
semnalul de control. Firul pentru alimentare cu +5 V, în general, are culoarea roşie şi firul pentru
masă are culoarea neagră sau maro. Firul semnalului de control are una dintre culorile următoare:
alb, galben sau portocaliu.

Aplicaţia servomotor
Scopul aplicaţiei este alimentarea unui servomotor de curent continuu. Pentru alimentarea
servomotorului se foloseşte pinul RD6 al unui microcontroler PIC 16F877A.. Portul D trebuie setat
ca ieşire. Programul are următoarea forma scris în pseudocod:
/* Nume proiect: Aplicaţie_servo
Program pentru alimentarea unui servomotor de curent continuu.
*/

int i;
void main()
{
TRISD = 0b10111111;

while (1)
{
for (i=0;i<200;i++)
{
PORTD.F6 = 1;
Delay_us(1200);
PORTD.F6 = 0;
Delay_us(18800);
}
}
}

Rulaţi programul de mai multe ori modificând timpi de întârziere a alimentării (750, 1500,
2000, 2500 microsecunde).

S-ar putea să vă placă și