Яндекс.Метрика


AVR360

Контроллер шагового двигателя 


Ключевые моменты:


  • Быстродействующий контроллер шагового двигателя.
  • Управляемый прерываниями.
  • Компактный код (подпрограмма обработки прерываний длиной всего 10 байт).
  • Очень высокая скорость.
  • Низкие требования к вычислительной мощности.
  • Поддерживает все устройства AVR.


Введение


Эта заметка по применению рассказывает, как построить компактный высокоскоростной управляемый прерываниями контроллер шагового двигателя. Шаговые двигатели обычно используются в устройствах фокусировки и протяжки пленки фото и видеокамер, в факсах, принтерах, копировальных машинах, в механизмах подачи бумаги и в приводах дисков. Высокая производительность контроллера AVR позволяет разработчику создавать высокоскоростные устройства на шаговых двигателях с низкими требованиями к вычислительной мощности контроллера.


Теория работы


Шаговый двигатель постоянного тока преобразует импульсы тока во вращение ротора. Обычно двигатель имеет четыре обмотки, выводы которых часто  окрашены в красный, желтый/белый, красный/белый и желтый цвета.  Однако могут использоваться и другие цвета. Подача напряжения на эти обмотки заставляет двигатель делать один шаг.

При обычной работе одновременно активируются две обмотки двигателя. Шаговый двигатель делает один шаг по часовой стрелке при смене активных обмоток. Если последовательность смены обмоток имеет противоположный характер, то двигатель будет вращаться против часовой стрелки.

Скорость вращения контролируется путем изменения частоты следования импульсов. Каждый раз при подаче импульса на двигатель его ротор поворачивается на фиксированный угол. Типичный шаг поворота составляет 1.8 градуса. При таком шаге для полного поворота вала двигателя (360 градусов) потребуется 200 шагов.

Изменяя длительность интервала между прерываниями таймера, можно регулировать скорость вращения двигателя. А путем подсчета числа шагов можно контролировать угол поворота.

  
 

Рисунок 1. Последовательность переключения обмоток шагового двигателя.

В таблице 1. приведены шестнадцатеричные значения, которые необходимо подавать на шаговый двигатель для выполнения каждого шага.

Таблица 1. Значения для шагового двигателя.

Шаг

Желтый

Красный/Белый

Желтый/белый

Красный

Шестнадцатеричное число

1

1

0

0

1

9

2

1

1

0

0

С

3

0

1

1

0

6

4

0

0

1

1

3


Описание программы (avr360.zip)


Для генерации прерываний каждые 100 uS программа использует шестнадцатиразрядный таймер с функцией захвата. При обработке прерывания в PORTB выводится новое значение шага. Значения шагов хранятся во Flash памяти. При запуске программы они копируются в ОЗУ. Этим достигается более быстрый доступ и максимальная производительность по скорости.

В данном варианте подпрограмма обработки прерывания занимает семь циклов. Плюс четыре цикла на вход в подпрограмму и четыре цикла на выход. Всего 15 циклов. Управление шаговым двигателем требует не более 2 uS. Если прерывания осуществляются через каждые 100 uS, то на работу с шаговым двигателем тратится только 2% вычислительной мощности процессора.

В этом примере значения для шагового двигателя хранятся в ОЗУ по адресу 0100 (hex). Старший байт адреса ОЗУ – константа и, только первые четыре бита младшего байта используются для доступа к адресной информации. Смотрите рисунок 2.

Младший полубайт (четыре бита) переменных представляет собой реальное значение, используемое для управления двигателем, а в старшем полубайте находится адрес следующего значения.

 
 

Рисунок 2. Адреса и значения для шагового двигателя.

Благодаря использованию данного метода может быть достигнута максимальная скорость в комбинации с минимумом процессорных ресурсов.


Ресурсы


Таблица 2. Использование памяти и процессора

Функция

Размер кода

Циклы

Использование регистров

Прерывания

Описание

Main

38 слов

-

R16,XL,XH,ZL,ZH

-

Программа инициализации и пример

OC1A

10 слов

13 + возврат

R16,XL,XH

Timer1

Output

Compare

Вывод значения шагового двигателя и расчет следующего значения

Всего

48 слов

-

-




Таблица 3. Использование периферийных устройств.

Периферия

Описание

Разрешенные прерывания

4 вывода I/O

Выводы управления шаговым двигателем


Timer 1

Генерирует прерывания от таймера для выработки частоты шагового двигателя

Timer 1 Output Compare A

 

Бесплатный хостинг uCoz