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.