AVR360
Контроллер шагового двигателя
Отличительные особенности:
- Контроллер быстродействующего шагового двигателя
- Использование системы прерываний
- Компактный код программы (размер процедуры прерываний всего 10 байт)
- Очень высокое быстродействие
- Низкие требования к вычислительным возможностям
- Поддержка всех AVR-микроконтроллеров
Введение
В данном документе описывается пример реализации контроллера шагового двигателя с компактным размером кода и высокоскоростным формированием управляющих воздействий с помощью прерываний по таймеру и табличного метода преобразования. Типичная сфера применения шаговых двигателей: подача пленки и изменение масштаба изображения в камерах, факсимильные аппараты, принтерах, копировальные машины, лотки подачи и сортировщики бумаги, а также дисководы. Высокая производительность AVR-микроконтроллеров позволяет разработчикам реализовать устройство управления быстродействующим шаговым двигателем при малых требованиях к вычислительным возможностям контроллера.
Принцип действия
Шаговый двигатель постоянного напряжения преобразует импульсы тока во вращение. Обычный шаговый двигатель содержит четыре обмотки. Обмотки часто маркируются красным, желто-белым, красно-белым и желтым цветами, но могут иметь и другие цвета. Прикладывание напряжения к этим обмоткам вынуждает двигатель выполнять шаг за шагом.
В нормальном режиме функционирования две обмотки находятся в активном режиме в одно и то же время. Шаговый двигатель перемещается на один шаг против часовой стрелки при изменении активности обмотки. Если последовательность подачи напряжения обратная, то двигатель будет вращаться против часовой стрелки.
Скорость вращения определяется частотой импульсов. В каждый интервал времени подача импульса приведет к повороту вала двигателя на фиксированный угол. Типичный шаг угла поворота составляет 1.8 градусов. Соответственно, при шаге поворота в 1.8 градусов требуется 200 шагов, чтобы вал двигателя совершил полный оборот (360 градусов). Скорость вращения двигателя может регулироваться за счет изменения периода генерации прерываний по переполнению таймера, угол вращения можно контролировать путем подсчета шагов.
Рисунок 1- Последовательность подачи импульсов управления шаговым двигателем
В таблице 1 приведены значения 16-ричных кодов, задающих состояния выходов на каждом шаге управления.
Таблица 1 – Коды управления шаговым двигателем
Описание программного обеспечения
Программа использует 16-разрядный таймер с функцией захвата фронтов для генерации прерываний каждые 100 мкс. При выполнении процедуры обработки прерывания на линиях порта В устанавливаются значения, соответствующие следующему шагу. Коды управления двигателем хранятся во флэш-памяти. При запуске эти значения копируются в ОЗУ для минимизации времени доступа к ним и как следствие достижения максимального быстродействия. С учетом этого процедура обработки прерывания выполняется 7 циклов + 4 цикла для входа и 4 цикла для выхода из прерывания. Таким образом, всего требуется 15 циклов, а на управление шаговым двигателем затрачивается 2 мкс (при 8 МГц). С учетом того, что прерывание генерируется каждые 100 мкс, то на управление шаговым двигателем затрачивается всего 2% от производительности ЦПУ.
В данном примере значения кодов управления хранятся в ОЗУ по адресу 0х100. Старший байт адреса ОЗУ (01h) – постоянная и только младшая тетрада младшего байта используется для доступа к информации адреса (см. рис.2).
Младшие тетрады (4 бита) переменных – фактическое значение кода управления шаговым двигателем, а старшие тетрады хранят адрес следующего кода управления.
Рисунок 2 – Адресы и коды управления шаговым двигателем
Использование данного метода позволяет достигнуть максимальной производительности в сочетании с минимальным использованием ресурсов процессора.
Использование ресурсов
Таблица 2 – Использование ЦПУ и памяти
Функция |
Размер кода |
Циклы |
Используемые регистры |
Прерывание |
Описание |
Основная программа |
38 слов |
- |
R16,XL,XH,ZL,ZH |
- |
Инициализация и программа приложения |
OC1A Обработка прерывания |
10 слов |
13+выход из прерывания |
R16,XL,XH |
Выход компаратора А таймера 1 |
Выводит данные для управления двигателем и вычисляет значения для следующего шага |
Вместе |
48 слов |
- |
R16,XL,XH,ZL,ZH |
|
|
Таблица 3 – Использование периферийных устройств
Периферийное устройство |
Описание |
Разрешенное прерывание |
4 линии ввода-вывода |
Выходы управления шаговым двигателем |
|
Таймер 1 |
Генерация частоты управления шаговым двигателем за счет |
Выход компаратора А таймера 1 |
модульные здания, мобильные здания
|