Politechnika Rzeszowska im. Ignacego Łukaszewicza |
|||
Mikronapędy w systemach komputerowych |
|||
Rok studiów: II FD |
Grupa laboratoryjna: L05 |
Numer ćwiczenia: 2 |
|
Temat ćwiczenia: Algorytmy komutacji silników skokowych w układzie otwartym |
|||
Wykonali: Michał Kata Tomasz Kordas
|
Data wykonania ćwiczenia:
21/03/2011 |
1. Cel ćwiczenia.
Celem ćwiczenia było napisanie programu, który będzie wyznaczał sekwencje liczb dla trzech rodzajów komutacji.
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;
_interrupt 5 void przerwanie(void)
{
if (j>=8)
j=0;
P1=tab[j];
j++;
}
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))
{
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ęć. Jednakże nie udało nam się napisać instrukcji obsługującej kierunku obracania się silnika oraz wartości max i min prędkości.