Управление шаговым двигателем
67
кварцевого резонатора Q1. После установки конфигурации микроконтроллер сразу же приступает к выполнению программы управления ШД.
На выводы РВО, РВ1 (1 и 2 корпуса микроконтроллера) и РВ2, РВЗ (3 и 4 корпуса микроконтроллера) в определенной очередности поступают импульсы управления драйверами DDI и DD2. В свою очередь, драйверы в определенной последовательности коммутируют обмотки ШД.
Схема питания схемы от трех батареек 1,5 В типа АА и подключения обмоток ШД показана на рис. 3.4.
SL1 АА 1,5в ДА 1,5в ДА i.sb
Алгоритм работы
Блок-схема алгоритма работы схемы показана на рис. 3.5. Программа начинается с конфигурирования порта В. Далее устанавливается конфигурация чтения АЦП. После того как данные с АЦП считаны, арифметическая подпрограмма выделяет "ноль" регулятора переменного напряжения. Подпрограмма логики определяет направление вращения вала ШД. Поскольку "ноль" смещен, необходимо пересчитать значения временных промежутков по модулю. Далее основная программа разделяется на три ветви.
В зависимости от результата работы арифметической подпрограммы выбирается один из способов управления ШД. По заданному алгоритму управления в порт В и на драйвер обмоток ШД десять раз подается последовательность из восьми импульсов, после чего программа возвращается к конфигурированию АЦП, и цикл повторяется сначала.
Рис. 3.4. Схема питания и подключения обмоток ШД
68
Глава 3
Рис. 3.S. Алгоритм работы схемы управления ШД
Программа
Программа на ассемблере представлена в листинге 3.1, а шестна-дцатеричный код — в листинге 3.2. Соответствующие файлы cshag3. asm и cshag3.hex находятся на прилагаемом к книге компакт-диске в папке ПрограммыХОЗ - Шагозый двигатель.
Управление шаговым двигателем
.include "C:\Program Files\Atmel\AVR Tools\AVRStudio4\Appnotes\ tn26def.inc"
;Автор: Кравченко А.В.
;Дата: 17.07.2008
;Версия: 1.1.3
;Имя файла: Cshag.asm
/Микроконтроллер: AVR tiny26.
/Тактовая частота: 4,194мГц
;Питание: нестабилизированное 5 В
list |
|||||
def |
adr |
= |
rO |
Рабочий |
регистр |
def |
prgl |
= |
rl8 |
Рабочий |
регистр |
def |
prg2 |
= |
rl9 |
Рабочий |
регистр |
def |
tmp |
= |
r21 |
Общий регистр |
|
def |
D |
r22 |
Рабочий |
регистр |
|
def |
tmp2 |
= |
r20 |
Рабочий |
регистр |
def |
tmp3 |
r24 |
Рабочий |
регистр |
|
def |
Hbt |
= |
r25 |
Рабочий |
регистр |
def |
Lbt |
= |
rl6 |
Рабочий |
регистр |
def |
X |
= |
r2 5 |
Рабочий |
регистр |
def |
Y |
= |
rl7 |
Рабочий |
регистр |
def |
M |
= |
r23 |
Рабочий |
регистр |
def |
par |
= |
r27 |
Рабочий |
регистр |
. cseg . org О
rjmp RESET
nop /rjmp EXT_INT0 - прерывание не используется
nop /rjmp EXT_PIN - прерывание не используется
nop /rjmp TIME_CMPA - прерывание от таймера
nop /rjmp TIME_CMPB - прерывание от таймера
np /rjmp TIME_OVFl - прерывание от таймера
nop /rjmp TIME_OVF0 - прерывание от таймера
nop /rjmp UCI_STRT - прерывание от USI
nop /rjmp UCI_OVF - прерывание от USI
НА ГЛАВНУЮ | | ЧТО ТАКОЕ PIC ? | | ПРОГРАММАТОР | | ПРОЕКТЫ | | СТАТЬИ | | ССЫЛКИ | | КАРТА САЙТА |