Sunteți pe pagina 1din 7

Limbaje de programarea pentru roboţi L8

Lucrare de laborator nr. 8

PROGRAMAREA ŞI COMANDA MOTOARELOR ELECTRICE


UTILIZÂND PWM

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.

2. 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. 1 ).

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


1 T
y   f t   dt
T 0 .

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

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

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.

3. Regulatorul de viteză al unui motor de c.c.


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 c.c. 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 repede,
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ă).

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  Ie τ  Ie 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

curentului ( i 0 ) obţinut la timpul t  0 . Aceasta reprezintă condiţia limită pentru curent.

 P 
i1  1    i0
 100 
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

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. Întreruperi. Tratarea întreruperilor


O întrerupere reprezintă un semnal sincron sau asincron de la un periferic ce semnalizează
apariţia unui eveniment care trebuie tratat de către procesor. Tratarea întreruperii are ca efect
suspendarea firului normal de execuţie al unui program şi lansarea în execuţie a unei rutine de
tratare a întreruperii (RTI).
Întreruperile hardware au fost introduse pentru a se elimina buclele pe care un procesor ar
trebui să le facă în aşteptarea unui eveniment de la un periferic. Folosind un sistem de întreruperi,
perifericele pot atenţiona procesorul în momentul producerii unei întreruperi (IRQ), acesta din urmă
fiind liber să-şi ruleze programul normal în restul timpului şi să îşi întrerupă execuţia doar atunci
când este necesar.
Înainte de a lansa în execuţie o rutină de tratare a întreruperii, procesorul trebuie să aibă la
dispoziţie un mecanism prin care să salveze starea în care se află în momentul apariţiei întreruperii.
Aceasta se face prin salvarea într-o memorie, a registrului contor de program (Program Counter), a
registrelor de stare precum şi a tuturor variabilelor din program care sunt afectate de execuţia rutinei
de tratare a întreruperii. La sfârşitul execuţiei rutinei de tratare a întreruperii starea anterioară a
registrelor este refăcută şi programul principal este reluat din punctul de unde a fost întrerupt.

5. Principiul de funcţionare al unui Timer


Timerul/Counterul, după cum îi spune şi numele oferă facilitatea de a măsura intervale fixe de
timp şi de a genera întreruperi la expirarea intervalului măsurat. Un timer, odată iniţializat va
funcţiona independent de unitatea centrală. Acest lucru permite eliminarea buclelor de delay din
programul principal.
Principiul de funcţionare a unui Timer poate fi descris astfel :
- Prescaler-ul divizează în funcţie de necesităţile aplicaţiei frecvenţa de ceas şi odată cu
divizarea incrementează registrul numărător TCNT .

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

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