4 MwSK Spr 6

background image

1

~K.

Data wykonania: 25.05.2010

Data oddania: 08.06.2010

Mikronapędy w systemach komputerowych

Laboratorium

Ćwiczenie 6

Regulatory cyfrowe w układach sterowania silników prądu stałego.

2 FDI Grupa: L-04

Cel ćwiczenia

Napisanie programu który będzie sterował silnikiem prądu stałego. Będzie można mierzyć prędkość

obrotową silnika która będzie wyświetlana na ekranie.

Kod programu

#include

<reg515.sfr>

#include

<lcd.h>

//Biblioteki z funkcjami obsługuj

ą

cymi wy

ś

wietlacz i

//klawiatur

ę

unsigned

char

x;

unsigned

int

var = 50, delta, e=0, e_1=0, e_2=0;

float

odp, tmp;

void

opoznienie(

int

x){

int

j;

for

(j = 1; j < x; j++);

}
_interrupt 1

void

int_T0 (

void

){

unsigned

int

aktualna;

DAPR = 8;

while

(BSY);

aktualna = ADDAT;
e = var - aktualna;
tmp = CCL1;
odp = tmp + 0.9 * e + 0.45 * e_1 + 0.45 * e_2;

//Równanie regulatora na podstawie którego wyznaczamy odpowied

ź

czasu

e_2 = e_1;
e_1 = e;
CCL1 = var;

if

(CCL1 < 30)

CCL1 = 30;

if

(CCL1 > 250)

CCL1 = 250;

else

CCL1 = odp;
}

int

main(){

//deklaracje liczników i zegarów

init();
EAL=1;
ET0=1;
TMOD=1;
TR0=1;
T2R1=1;
T2I0=1;
CRCH=0xFF;

background image

2

CRCL=0x00;
CCH1=0xFF;
CCL1=var;
CCEN = 8;
CLK=1;
P3_5=0;

while

(1){

int

a, b;

if

(var < 30)

//je

ż

eli obroty <30

var = 30;

// to utrzymuj na poziomie 30

if

(var > 250)

//je

ż

eli obroty>250

var = 250;

//to utrzymuj na poziomie 250

x = get_char();

if

(x >=

'0'

&& x <=

'9'

){

liczba = 10*liczba+(x-48);
put_char(x);
}
x=get_char();

if

(x ==

'e'

){

if

(liczba < 30)

liczba = 30;

if

(liczba > 250)

liczba = 250;

put_instr(0x02);
opoznienie(2000);
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);
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;
put_char(a + 48);
put_char(b + 48);

opoznienie(2000);

background image

3

}
}
}
opoznienie(2000);

return

0;

}

Wnioski

Na zajęciach dowiedzieliśmy się jak mierzyć prędkość obrotową silnika prądu stałego, które liczniki i

zegary powinny być uruchomione i jakie blokady wprowadzone, aby nie przeciążyć silnika i go nie

spalić. Niestety pomimo wielu prób i ocenie naszego programu przez prowadzącego na zajęciach

okazało się, że silnik nie działa tak płynnie jak w innych zespołach, tzn. co chwile zwiększał i

zmniejszał swoją prędkość w obrębie określonych wartości. Program reagował poprawnie na

wciskanie przycisków strzałka w górę i w dół – odpowiednio zwiększał prędkość obrotów lecz praca

silnika wciąż nie była stabilna.


Wyszukiwarka

Podobne podstrony:
lab.1 4 MwSK Spr 1
lab.4 4 MwSK Spr 4
4 MwSK Spr 5 (2)
4 MwSK Spr 3
4 MwSK Spr 1
Spr[1] adm i uznanie adm
08 03 KPGO Spr z realizacji
17 Rozp Min Zdr w spr szk czyn Nieznany
przetworka spr ostatnie
as spr 5 id 69978 Nieznany (2)
metr spr 5
belka spr podl
078c rozp zm rozp min gosp w spr szkolenia w dziedzinie bhp
99 SPOSOBÓW OKAZYWANIA DZIECIOM MIŁOŚCI, Różne Spr(1)(4)
Spr. 4-Techniki wytw, ZiIP, sem 1
klucz do age, Różne Spr(1)(4)
Wnioski do spr z elektry 3, PW SiMR, Inżynierskie, Semestr V, syf, laborki, Lab. Ukł. Napędowych
spr kl 5 dodaw ulamkow rozne mian2, Matematyka, kl 5
spr - koag pow, Sprawozdania, oczyszczanie wody

więcej podobnych podstron