МиНОБРНАУКИ РОССИИ
Санкт-Петербургский государственный
электротехнический университет
«ЛЭТИ» им. В.И. Ульянова (Ленина)
Кафедра систем автоматического управления
Лабораторная работа №8
по дисциплине
«Микропроцессорный устройства систем управления»
Вариант 9
Студента гр. 8491 |
|
Авраменок Д.А. Пшебельская Р.С. |
Преподаватель |
|
Голик С.Е. |
Санкт-Петербург
2020
Цель работы: Программирование принципов управления двигателем постоянного тока на основе генерации сигнала с широтно-импульсной модуляцией (ШИМ).
Задание: Составить программу управления ДПТ для реализации заданного режима ШИМ и графика изменения скорости вращения (максимальная скорость достигается в пике графика). Задание представлено в таблице 1.
Таблица 1.
Вариант задания |
График изменения скорости вращения |
Режим ШИМ |
9 |
|
8-разрядная быстрая ШИМ |
С
хема
макета, относящегося к заданию:
Рис.1. Схема макета.
Блок-схема алгоритма программы:
//ноги мк на выход
//неинвертированный ШИМ мк, выбор быстрого ШИМ //предделитель CS32
Да
Нет
Да
//мотор плавно разгоняется и вращается по часовой стрелке
1
4
5
1
2
3
4
5
6
Нет
Нет
//мотор плавно тормозит и вращается по часовой стрелке
//мотор с постоянной скоростью вращается против часовой стрелки
Да
Да
Нет
Нет
//мотор плавно разгоняется и вращается против часовой стрелки
//мотор плавно тормозит и вращается против часовой стрелки
Да
Да
2
3
6
Текст программы на языке С:
#include <mega128a.h>
#include <delay.h>
void main(void)
{
unsigned char i,j;
DDRE |= (1<<3) | (1<<4); //ноги мк на выход
TCCR3A |= (1<<COM3A1)|(1<<COM3B1)|(1<<WGM30); //неинвертированный ШИМ мк, выбор быстрого ШИМ
//предделитель CS32
TCCR3B |= (1<<WGM32)|(1<<CS32);
while (1)
{
for (i = 20; i<=220; i+=10)
{
OCR3AL = i; //мотор плавно разгоняется и вращается по часовой стрелке
delay_ms (200);
}
for (i=220; i>=20; i-=10)
{
OCR3AL = i; //мотор плавно тормозит и вращается по часовой стрелке
delay_ms (200);
}
for (i = 20; i<=220; i+=10)
{
OCR3BL = i; //мотор плавно разгоняется и вращается против часовой стрелки
delay_ms (200);
}
for(i=203,j=0;j<40;j++)
{
OCR3BL = i; //мотор с постоянной скоростью вращается против часовой стрелки
delay_ms (200);
}
for (i = 220; i>=20; i-=10)
{
OCR3BL = i; //мотор плавно тормозит и вращается против часовой стрелки
delay_ms (200);
}
}
}
Вывод: В ходе лабораторной работы было осуществлено управление двигателем постоянного тока на основе генерации сигнала с широтно-импульсной модуляцией. Были исследованы режимы работы таймера счетчиков, структура управляющих регистров используемого таймера/счетчика, назначения битов COM1x1, COM1x0 и зависимости для формирования частоты тактирования.