1
~K.
Data wykonania: 11.05.2010
Data oddania: 25.05.2010
Mikronapędy w systemach komputerowych
Laboratorium
Ćwiczenie 5
Sterowanie silnika prądu stałego przy użyciu specjalizowanych mikrokontrolerów.
2 FDI Grupa: L-04
Cel ćwiczenia
Celem ćwiczenia było napisanie programu obsługującego specjalizowany mikrokontroler regulując
prędkość silnika i wyświetlał aktualny współczynnik wypełnienia wyrażony w procentach, nie
pozwalając jednocześnie na przekroczenie wartości krytycznej (w naszym wypadku 98%).
Kod programu
#include
<reg515.sfr>
#include
<lcd.h>
unsigned
char
x;
unsigned
int
var = 50, delta;
void
opoznienie(
int
x){
int
j;
for
(j = 1; j < x; j++);
}
int
main(){
init();
T2R1 = 1;
T2I0 = 1;
CRCH = 0xFF;
CRCL = 0x00;
CCH1 = 0xFF;
CCL1 = var;
// odpowied
ź
regulatora inicjowana pocz
ą
tkow
ą
warto
ś
ci
ą
pr
ę
dko
ś
ci
CCEN = 8;
CLK = 1;
P3_5 = 0;
while
(1){
int
a, b;
x = get_char();
if
(x ==
'g'
){
// spr. czy wci
ś
ni
ę
to strzałk
ę
w gór
ę
if
(var < 250)
// spr. czy warto
ść
pr
ę
dko
ś
ci jest mniejsza od max. dopuszczalnej
CCL1 = ++var;
// je
ś
li, to zwiekszenie odpowiedzi regulatora
put_instr(0x02);
delta = CCL1 * 100 / 255;
// wyliczanie wspołczynnika wypełnienia
a = delta / 10;
// wyłuskanie warto
ś
ci dziesi
ą
tnych
b = delta % 10;
// wyłuskanie warto
ś
ci jedno
ś
ci
put_char(a + 48);
2
put_char(b + 48);
opoznienie(2000);
}
if
(x ==
'd'
){
// spr. czy wci
ś
ni
ę
to strzałk
ę
w dół
if
(var > 0)
// spr. czy warto
ść
pr
ę
dko
ś
ci jest wi
ę
ksza od 0
CCL1 = --var;
// je
ś
li, to zmniejszenie odpowiedzi regulatora
put_instr(0x02);
delta = CCL1 * 100 / 255;
a = delta / 10;
b = delta % 10;
opoznienie(2000);
put_char(a + 48);
put_char(b + 48);
}
}
opoznienie(2000);
return
0;
}
Wnioski
W ćwiczeniu wykorzystywaliśmy mikrokontroler zawierający w swojej strukturze jednostkę
generującą przebiegi PWM (ang. Pulse Width Modulation). Cechą takiego układu jest to, że w
momencie przepełnienia licznika na wyjściu przerzutnika pojawia się stan niski, czyli zmniejszona
zostaje prędkość. W naszym programie zastosowaliśmy ograniczenie, które nie pozwala przekroczyć
określonej wcześniej prędkości (czyli maksymalny współczynnik wypełnienia wynosi 98%) a wszelkie
kolejne próby zwiększenia wartości są ignorowane – analogicznie program postępuje ze
zmniejszaniem prędkości dla której dolnym ograniczeniem jest zatrzymanie silnika, czyli ustalenie
współczynnika wypełnienia na 0).
Program przyjmuje prędkość początkową 50 (odpowiednio współczynnik wypełnienia wynosi 19%).
Zwiększanie bądź zmniejszanie prędkości odbywa się za pomocą klawiszy strzałek w górę i dół, a
każda zmiana (o ile dopuszczalna przez program) jest prezentowana na wyświetlaczu w postawi
współczynnika wypełnienia. Każda dopuszczalne żądanie zmiany prędkości odbywa się poprzez
zwiększenie bądź zmniejszenie wartości rejestru
CCL1
,
czyli wartości odpowiedzialnej za napięcie na
zaciskach silnika (maksymalna wartość możliwa to 255 a w naszym programie 250).