МиНОБРНАУКИ РОССИИ
Санкт-Петербургский государственный
электротехнический университет
«ЛЭТИ» им. В.И. Ульянова (Ленина)
Кафедра систем автоматического управления
Лабораторная работа №3
по дисциплине
«Микропроцессорный устройства систем управления»
Вариант 9
Студенты гр. 8491 |
|
Авраменок Д.А. Пшебельская Р.С. |
Преподаватель |
|
Голик С.Е. |
Санкт-Петербург
2020
Цель работы: Изучение принципов программного управления шаговым двигателем с использованием параллельного порта МК.
Задание: Составить программу управления шаговым двигателем для реализации заданного режима управления и графика изменения скорости вращения(см. табл.1).
Табл.1.
Вариант задания |
График изменения скорости вращения |
Режим управления |
9 |
|
Двухфазный полношаговый |
Схема макета, относящегося к заданию:
Рис.1. Схема макета.
Б
1
лок-схема алгоритма программы:
//1 участок, длительность будет 5с
//ускорение мотора, вращение по часовой стрелке
//на каждой скорости мотор провернется 2 раза
1
//включение необходимой катушки
//задержка влияющая на скорость мотора, чем больше задержка, тем медленнее мотор
//2 участок, длительность будет 5с
2
2
9
10
2
9
10
2
8
11
3
//замедление мотора, вращение по часовой стрелке
//мотор покоит--ся
//3-4 участки, длительность будет 10с
//5 участок, длительность будет 5с
3
8
11
3
7
12
4
7
12
4
6
1300
5
//уско-рение мотора, вращение против часовой стрелки
//замедление мотора, вращение против часовой стрелки
//6 участок, длительность будет 1с
6
13
5
Текст программы на языке С:
/*
Разобьем наш график изменения скорости на 6 участков
----|1. мотор вращается по часовой стрелке и ускоряется |----
----|2. мотор вращается по часовой стрелке и замедляется |----
----|3-4. мотор покоится |----
----|5. мотор вращается против часовой стрелки и ускоряется |----
----|6. мотор вращается против часовой стрелки и замедляется |----
*/
#include <mega128.h>
#include <delay.h>
void main(void)
{
unsigned char k;
signed char j;
unsigned int i;
unsigned char steps[]=
{0x03,0x06,0x0C,0x09};
DDRC = 0x0F;
{
while (1)
{ //1 участок, длительность будет 5с
for(i=150;i>=30;i-=20) //ускорение мотора, вращение по часовой стрелке
{
for(k=0;k<=1;k++) //на каждой скорости мотор провернется 2 раза
{
for(j=0;j<=3;j++) //включение необходимой катушки
{
PORTC = steps[j];
delay_ms(i); //задержка влияющая на скорость мотора, чем больше задержка, тем медленнее мотор
}
}
}
//2 участок, длительность будет 5с
for(i=30;i<=150;i+=20)
{ //замедление мотора, вращение по часовой стрелке
for(k=0;k<=1;k++)
{
for(j=0;j<=3;j++)
{
PORTC = steps[j];
delay_ms(i);
}
}
}
//3-4 участки, длительность будет 10с
for(i=150;i>=30;i-=20) //мотор покоится
{
for(k=0;k<=1;k++)
{
for(j=0;j<=3;j++)
{
delay_ms(i);
delay_ms(i);
}
}
}
//5 участки, длительность будет 5с
for(i=150;i>=30;i-=20) //ускорение мотора, вращение против часовой стрелки
{
for(k=0;k<=1;k++)
{
for(j=3;j>=0;j--)
{
PORTC = steps[j];
delay_ms(i);
}
}
}
//6 участки, длительность будет 1с
for(i=30;i<=150;i+=20) //замедление мотора, вращение против часовой стрелки
{
for(k=0;k<=1;k++)
{
for(j=3;j>=0;j--)
{
PORTC = steps[j];
delay_ms(i);
}
}
}
}
}
}
Вывод: Были изучены принципы программного управления шаговым двигателем с использованием параллельного порта МК. Была составлена программа управления шаговым двигателем для реализации заданного режима управления и графика изменения скорости вращения.