Sunteți pe pagina 1din 7

5. LUCRUL CU TIMERE. SEMNALE PWM.

COMANDA UNUI SERVOMOTOR

5.1. Funcționarea unui servomotor


Servomotorul electric are rolul de a transforma un semnal electric de comanda
într-un cuplu electromagnetic, respectiv într-o mişcare de rotaţie a arborelui său prin
care este antrenat mecanismul care realizează operaţia dorită. Astfel, servomotoarele
sunt incluse în sisteme de reglare automată ca elemente de execuţie, lucrând în condiţii
foarte variate atât în ceea ce priveşte caracterul sarcinii cât şi viteza, tensiunea şi
frecvenţa de alimentare.
Principalele calităţi pe care trebuie să le aibă servomotoarele sunt:
 să permită reglarea vitezei în limite foarte largi prin variaţia
parametrilor tensiunii de comandă (uneori până la 1:10000);
 cuplu electromagnetic mare de pornire;
 putere de comandă mică;
 viteză de răspuns mare;
 stabilitate şi siguranţă în funcţionare pentru întreaga gamă de viteze;
 liniaritatea caracteristicilor mecanice şi de reglaj;
 gabarit şi greutate mică, preţ de cost cât mai scăzut.

5.2. Comanda servomotoarelor de cc cu semnale modulate în durată.


Tehnica PWM
PWM (Pulse Width Modulation) este o tehnică folosită pentru a varia în mod controlat
tensiunea dată unui dispozitiv electronic. Având la dispoziție doar două niveluri de
tensiune (0V și 5V), putem aproxima alte valori comutând foarte rapid între cele două
niveluri.
Tensiunea primită de un dispozitiv reprezintă media acestor pulsuri și este raportul
dintre perioada de timp corespunzătoare valorii ON și perioada totală dintr-un ciclu
ON-OFF. Aceast raport se numește factor de umplere (duty cycle). Astfel, se pot
controla circuite analogice din domeniul digital. Practic, asta înseamnă că un LED
acționat astfel se va putea aprinde / stinge gradual, iar în cazul unui motor acesta se va
învârti mai repede sau mai încet.

Factorul de umplere se exprimă în procente și reprezintă cât la sută din perioada


unui semnal acesta va fi pe nivelul ON. În figura de mai jos, se pot observa semnale
PWM cu factori de umplere diferiți. Astfel, se poate deduce foarte ușor formula pentru
a obține valoarea factorului de umplere (D):

Astfel, tensiunea medie care ajunge la dispozitiv este dată de relația:


D * Vcc.
Multe circuite digitale pot genera semnale PWM. Majoritatea microcontroller-
elor oferă această facilitate, pe care o implementează folosind un numărător care este
incrementat periodic (conectat direct sau indirect la o unitate de ceas) și care 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 (output-ul) trece din starea HIGH în
starea LOW (sau invers).

5.3. Lucrul cu PWM-ul


Timer-ul/Counter-ul 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ă (UCP). Acest lucru permite eliminarea
buclelor de delay din programul principal.
MSP430 are două timere- TimerA și TimerB, ambele pe 16 biți. Fiecare timer
are 3 unități principale:
- Registrul numărător Timer Counter
- Prescaler-ul - are rolul de a diviza în funcție de necesitățile aplicației frecvența de
clock.
- La fiecare incrementare a registrului numărător are loc o comparație între acest
registru și o valoare stocată în registrul TACCR0. Această valoare poate fi încarcată de
către programator prin scrierea registrului TACCR0. Dacă are loc egalitatea se
generează o întrerupere, în caz contrar incrementarea continuă.
- Timer-ele pot funcționa și în moduri PWM, astfel încat să genereze pe un pin de
ieșire un semnal de comandă cu tensiune (medie) variabilă.

Calibrarea oscilatorului DCO Digitally Controlled Oscillator


Pentru calibrarea oscilatorului, sunt utilizați regiștrii BCSCTL1 și DCOCTL.
Setarea frecvenței de clock

Registrele Timerului A
Registrul de control TACTL Register (Control Register)
Registrul de control și comparație TACCTLx Register (Control Register)
Registrul de captură și comparație TACCRx

5.4. Aplicație pentru controlul unui servomotor SG180


Servomotorul se conectează la 5V, GND, iar pinul de comandă este P1.6
Codul sursă în Code Composer Studio este următorul
#include <msp430.h>

int main(void)
{
WDTCTL = WDTPW | WDTHOLD; // stop watchdog timer
BCSCTL1 = CALBC1_1MHZ; //pag 633
DCOCTL = CALDCO_1MHZ;
//perioada PWM

P1DIR |= BIT6; //selection for timer setting


P1SEL |= BIT6;

while(1) { //registrele timerului A


TACCR0 = 20000; //PWM period
TACCR1 = 350; //CCR1 PWM duty cycle min350, max2600, angle 190
//350-2350 - 180 grade
TACCTL1 = OUTMOD_7; //CCR1 selection reset-set
TACTL = TASSEL_2|MC_1; //SMCLK submain clock, upmode
__delay_cycles(1500000);
TACCR1 = 2350;
TACCTL1 = OUTMOD_7; //CCR1 selection reset-set
TACTL = TASSEL_2|MC_1;
__delay_cycles(1500000);
}
return 0;
}

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