Politechnika Rzeszowska im. Ignacego Łukaszewicza |
|||
Mikronapędy w systemach komputerowych |
|||
Rok studiów: II FD |
Grupa laboratoryjna: L05 |
Numer ćwiczenia: 4 |
|
Temat ćwiczenia: Programy sterujące pracą silników z komutacją elektroniczną |
|||
Wykonali: Michał Kata Tomasz Kordas
|
Data wykonania ćwiczenia:
18/04/2011 |
1. Cel ćwiczenia.
Celem ćwiczenia było napisanie programu, który obsługuje silnik z komutacją elektroniczną wraz z możliwością ustawienia prędkości i kierunku obracania silnika.
2. Program
#include <reg515.sfr>
#include <lcd.h>
char tab[8];
int j=0;
unsigned char klawisz, klawisz2;
unsigned int cyfra=0, cyfra2, f=1, predkosc;
int i, count;
unsigned int halotron;
/*
unsigned char tabP1[6]={222,219,249,237,239,246};
unsigned char tabP4[6]={3,1,5,4,6,2};
*/
_interrupt 5 void przerwanie(void)
{
TF2 = 0;
if (P4%6 == 3)
P1=222;
else if(P4%6 ==1)
P1=219;
else if(P4%6 ==5)
P1=249;
else if(P4%6 ==4)
P1=237;
else if(P4%6 ==6)
P1=239;
else if(P4%6 ==2)
P1=246;
}
void main()
{
int zn1;
int komutacja=1;
init();
while(1)
{
klawisz=get_char();
if ((klawisz!='\0') && (klawisz2!= klawisz));
if ((klawisz >=48) && (klawisz <=57))
{
if (count==0)
{
put_instr(0x80);
put_char(' ');
put_char(' ');
put_char(' ');
put_char(' ');
put_char(' ');
put_instr(0x80);
}
cyfra=10* cyfra +( klawisz -48);
put_char(klawisz);
count++;
for(i=0;i<20000;i++);
klawisz2= klawisz;
}
if((klawisz =='e') && ( count>0))
{
if((cyfra > 100) && (cyfra < 600))
{
f=cyfra;
predkosc=0xFFFF-1000000/f;
CRCH=(predkosc>>8);
CRCL= predkosc;
}
for(i=0;i<20000;i++);
cyfra=0;
count=0;
}
if (klawisz =='g')
if (komutacja<=3)
{
komutacja++;
count++;
zn1++;
put_instr(0x88);
}
if (klawisz =='d')
if (komutacja>=1)
{
komutacja--;
count++;
zn1++;
put_instr(0x88);
}
if ((komutacja==1) && ( count>0) && (zn1>0))
{
put_char(49);
put_char('/');
put_char(52);
for(i=0;i<20000;i++);
count=0;
zn1=0;
}
if ((komutacja==2) && ( count>0) && (zn1>0))
{
put_char(49);
put_char('/');
put_char(50);
for(i=0;i<20000;i++);
count=0;
zn1=0;
}
if ((komutacja==3) && ( count>0) && (zn1>0))
{
put_char(51);
put_char('/');
put_char(56);
for(i=0;i<20000;i++);
count=0;
zn1=0;
}
EAL=1;
ET2=1;
T2R1=1;
T2I0=1;
if (komutacja==1)// komutacja 1/2
{
tab[0] = 8;
tab[1] = 2;
tab[2] = 4;
tab[3] = 1;
tab[4] = 8;
tab[5] = 2;
tab[6] = 4;
tab[7] = 1;
}
if (komutacja==2)// komutacja 1/4
{
tab[0] = 9;
tab[1] = 10;
tab[2] = 6;
tab[3] = 5;
tab[4] = 9;
tab[5] = 10;
tab[6] = 6;
tab[7] = 5;
}
if (komutacja==3)// komutacja 3/8
{
tab[0] = 8;
tab[1] = 10;
tab[2] = 2;
tab[3] = 6;
tab[4] = 4;
tab[5] = 5;
tab[6] = 1;
tab[7] = 9;
}
}
}
3. Wnioski.
Do wykonania ćwiczenia wykorzystaliśmy program z poprzednich zajęć. Program uruchamia silnik, mimo wszelkich starań nie udało nam się napisać kodu, który obsługiwałby prędkości podane przez użytkownika i wybór kierunku obrotu silnika.