Documente Academic
Documente Profesional
Documente Cultură
1. Scopul lucrării
• studiul comenzii unui motor de curent continuu;
• analiza rutinelor de comandă a motorului de curent continuu;
2. Aparatura necesară
• montajul experimental;
• osciloscop;
3. Consideraţii teoretice
124
Comanda unui motor de curent continuu
SW1 SW4
1 M 2
SW2 SW3
GND
Figura 2 – Puntea H
Motorul va fi pornit când una din perechile SW1-SW3 sau SW2-SW4 vor
fi cuplate.
V+ V+
GND GND
Figura 4 – Inversarea sensului de rotaţie al motorului
După cum se observă din figura 4, dacă SW1 şi SW3 sunt cuplate, polul
1 al motorului va fi conectat la V+ şi polul 2 la GND, imprimând o mişcare
125
Aplicaţii cu microcontrolere din familia 8051
T
T_off T_on
A D=20%
D=50%
D=80%
Unde:
A – amplitudinea semnalului PWM
126
Comanda unui motor de curent continuu
D – factorul de umplere
T_on – timpul de conducţie
T – perioada semnalului
Avantajul evident al acestei metode constă în faptul că elementele de
comandă SW1-SW4 lucrează în regim de comutaţie (saturat – blocat), deci cu
randament maxim.
Pentru realizarea comenzii PWM cu ajutorul unui microcontroler, trebuie
să stabilim perioada semnalului PWM şi un număr de paşi (cuante) pentru
reglajul factorului de umplere.
T
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
127
Aplicaţii cu microcontrolere din familia 8051
START
Initializam K, N
1
Contor = 1
Eveniment
baza de timp?
DA NU
Contor <= N
Iesire = 1 Iesire = 0
Contor = Contor+1
DA NU
128
Comanda unui motor de curent continuu
129
Aplicaţii cu microcontrolere din familia 8051
Cele nouă taste vor fi dispuse ca în figura 9. Dintre acestea, se vor folosi
tasta 2, pentru incrementarea vitezei motorului, tasta 5 pentru decrementarea
vitezei motorului, tasta 4 şi 6 pentru cele a impune direcţia de rotaţie.
Linia 1
Linia 2
Linia 3
130
Comanda unui motor de curent continuu
;DCMotor.a51
$NOMOD51
$INCLUDE (reg52.inc)
NAME DCMOTORCONTROL
;*************************************************************
;Definiri stivă, variabile pe octeţi si pe biţi
;*************************************************************
STIVA SEGMENT IDATA
RSEG STIVA
DS 10
;CONSTANTE SEGMENT CODE
; RSEG CONSTANTE
;
VARIABILE SEGMENT DATA
RSEG VARIABILE
CurrentVal: DS 1 ;Contor pentru iesirea PWM
KbdScanCount: DS 1 ;Contor temporizare scanare tastatură
Kbd_RowScan: DS 1 ;Contor scanare linii
Duty: DS 1 ;Factorul de umplere
KeyToDebounce: DS 1 ;Val. temp. pentru tasta citită
KeyPressed: DS 1 ;Valoare tastă citită
PortMask: DS 3
131
Aplicaţii cu microcontrolere din familia 8051
mov a, r7 ;
clr c
subb a, #0B4h ;Tasta nr. 5? /Dec. viteză
jz Tasta_Down ;
mov a, r7 ;
clr c
subb a, #0D4h ;Tasta nr. 4 /Schimbare direcţie
jz Tasta_Sens_1 ;
mov a, r7
clr c
subb a, #074h ;Tasta nr. 6? /Schimbare direcţie
jnz main
132
Comanda unui motor de curent continuu
jmp main
mov a, CurrentVal
clr c
subb a, Duty ;verificăm PWM activ/inactiv
jc T0_CheckDir ;dacă e activ, verificăm direcţia
jmp T0_OutIdle ;dacă nu, setăm stările inactive
T0_CheckDir:
jnb Dir, T0_OutActive_1
T0_OutActive_0: ;dacă direcţia e 0,
clr P2.0 ;setăm ieşirea activă
setb P2.1 ;pentru portul P2.0
jmp T0_NextPWM ;
T0_OutActive_1: ;dacă direcţia e 1,
setb P2.0 ;setăm ieşirea activă
133
Aplicaţii cu microcontrolere din familia 8051
134
Comanda unui motor de curent continuu
135
Aplicaţii cu microcontrolere din familia 8051
136
Comanda unui motor de curent continuu
START
Initializare
aplicatie
NU Tasta
apasata?
DA
DA DA
Tasta =
Duty <31 Duty = Duty + 1
Incrementare?
NU
NU
DA DA
Tasta =
Decrementare Duty > 0 Duty = Duty -1
?
NU
NU
Tasta = DA
Directie 1
?
Dir = !Dir
NU
NU Tasta =
Directie 2
? DA
137
Aplicaţii cu microcontrolere din familia 8051
START ISR
Reîncarcare
Timer0
NU
CurrentVal P2. 0 = 1
< P2. 1 = 1
Duty
DA
DA NU
Dir = 0
P2. 0 = 0 P2. 0 = 1
P2. 1 = 1 P2. 1 = 0
CurrentVal=
CurrentVal+ 1
NU
CurrentVal CurrentVal= 0
< 32
DA
KbdScanCount=
KbdScanCount- 1
KbdScanCount NU
1
=0
DA
KbdScanCount=
100
138
Comanda unui motor de curent continuu
NU DA
DebounceFlag
=1
DebounceFlag= 0
NU
Tasta citita ?
DA NU Tasta citita =
KeyToDebounce
KeyToDebounce =
Tasta citita
DA
KeyPressed=
DebounceFlag= 1
KeyToDebounce
KeyPressed_Flag
1 =1
1
P2 =
PortMask[Linie]
Linie = Linie+1
NU
Linie < 3 Linie = 0
DA
1
STOP ISR
139
Aplicaţii cu microcontrolere din familia 8051
4. Modul de lucru
• Se va rula codul pas cu pas, utilizând depanatorul de programe
inclus în Keil µVision2;
• Se vor vizualiza cu ajutorul osciloscopului formele de undă
pentru comanda motorului, la diferite valori ale factorului de
umplere;
• Se vor vizualiza formele de undă pentru scanarea tastaturii.
5. Prelucrarea datelor
• Să se modifice programul, astfel încât PWM-ul generat să aibă
o frecvenţă de 50Hz cu 64 paşi, iar tastatura să se scaneze cu o
frecvenţă de 15Hz.
• Să se modifice maparea tastelor, astfel încât tastele pentru
incrementarea/decrementarea vitezei să fie 3 respectiv 4, iar
cele pentru direcţie să fie 8 şi 9.
• Să se propună un algoritm de schimbare lentă a sensului de
rotaţie.
140
Comanda unui motor de curent continuu
141