Politechnika Rzeszowska im. Ignacego Łukasiewicza |
---|
Mikronapędy w systemach komputerowych |
Rok studiów: IIEF-DI |
Temat ćwiczenia: Programy sterujące pracą silników z komutacją elektroniczną |
Wykonali: Adam Rówiński Hubert Sadecki Krzysztof Skrobacz |
1. Cel ćwiczenia.
Celem ćwiczenia było napisanie programu, który obsługuje silnik prądu stałego przy użyciu specjalizowanych mikrokontrolerów.
2. Program napisany na laboratorium.
#include "reg515.sfr"
#include "lcd.h"
void sleep(int time);
void display(int i);
int main(void)
{
//zmienne
unsigned char key;
int wsp_wyp = 0;
T2I0 = 1;
T2R1 = 1;
CCEN = 8;
CRCH = 0xFF;
CRCL = 0x00;
CCH1 = 0xFF;
CLK = 1;
P3_5 = 0;
CCL1 = 123; // Rejestr odpowiadający za prędkość wirnika
lcd_init(); //Inicjalizacja wyswietlacza LCD
while(1)
{
wsp_wyp = (CCL1*100)/255; //obliczenie wsp. wypełnienia
sleep(2000);
key = get_kb();
display(wsp_wyp);
sleep(9000);
if(key == 'g') // jeżeli wciśnietą strzałka w górę
{
if(CCL1 < 255)
{
CCL1 = CCL1 + 1; // zwiększenie wsp. wypełnienia
}
}
if(key == 'd')
{
if(CCL1 > 1) // jeżeli wciśnietą strzałka w dół
{
CCL1 = CCL1 - 1; // zmniejszenie wsp. wypełnienia
}
}
}
return 0;
}
void sleep(int time)
{
int i;
int sleep = 0;
for(i = 0; i < time ; i++)
sleep += i;
}
void display(int i) // funkcja wyświetlająca wartość wsp wypełnienia
{
int x,y,z;
out_instr(0x1);
x = i/100;
if(x != 0)
out_char(x+0x30);
i = i - x*100;
y = i/10;
if(x != 0 || y != 0)
out_char(y+0x30);
i = i - y*10;
z = i;
out_char(z+0x30);
}
3. Wnioski.
Ćwiczenie wykonywaliśmy przy pomocy mikrokontrolera który zawiera w swojej strukturze jednostkę generującą przebiegi PWM. Pierwszym etapem naszych prac było napisanie kodu odpowiedzialnego za obsługę przycisków na których widniały strzałki w doł oraz w góre. Dodane zostały także ograniczenia które nie pozwalały przekroczenia wcześniej ustalonej prędkości maksymalnej(wartość z przedziału 0-255). Kolejnym krokiem było zrealizowanie wzoru obliczającego współczynnik wypełnienia oraz dodanie możliwości zmiany go w odpowiednich miejscach w kodzie. Za pomocą strzałek zmieniany był współczynnik wypełnienia, który odpowiadał za prędkość poruszania się silnika. Ostatnim krokiem było zaprogramowanie wyświetlacza na którym powinien widnieć współczynnik wypełnienia. Ćwiczenie zostało wykonane poprawnie, co potwierdził test na koniec wykonywania zadania.