Вторая программа на PICBASIC

Вторая программа на PICBASIC

Вторая программа на PICBASIC является гораздо более гибкой. Пользователь может изменять параметры программы (время задержки) во время ее работы с помощью одного из четырех выключателей, соединенных с портом А. При нажатии кнопки 1 время задержки между импульсами увеличивается, и соответственно ротор ШД вращается медленнее. Кнопка 2 обладает противоположным действием. При нажатии кнопки 3 двигатель останавливается и находится в режиме ожидания, пока эта кнопка нажата. Кнопка 4 управляет направлением вращения ШД (по часовой стрелке или против часовой стрелки). Нажатие кнопки 4 изменяет направление вращения на противоположное. Реверсирование направления вращения сохраняется на все время нажатия кнопки.

‘Контроллер вращения ШД

Symbol TRISB = 134 ‘Инициализация TRISB как 134

Symbol TRISA = 133 ‘Инициализация TRISA как 133

Symbol PortB = 6 ‘Инициализация portb как 6

Symbol PortA = 5 ‘Инициализация porta как 5

symbol ti = b6 ‘Начальное время задержки

ti = 100 ‘Установка времени задержки 100 мс

Poke TRISB,0 ‘Установка PORTB как выхода

start: ‘Вращение ШД вперед

poke portb, 1 ‘Шаг 1

pause ti ‘Задержка

poke portb,2 ‘Шаг 2

pause ti ‘Задержка

poke portb,4 ‘Шаг 3

pause ti ‘Задержка

poke portb,8 ‘Шаг 4

pause ti ‘Задержка

goto check ‘Переход на проверку состояния кнопок

start2: ‘Вращение ШД назад

poke portb,8 ‘Шаг 1

pause ti ‘Задержка

poke portb,4 ‘Шаг 2

pause ti ‘Задержка

poke portb,2 ‘Шаг 3

pause ti ‘Задержка

poke portb,1 ‘Шаг 4

pause ti ‘Задержка

goto check ‘Переход на проверку состояния кнопок

Check: ‘Состояние кнопок

Peek PortA, B0 ‘Загрузка состояния

if bit0 = 0 then loop1 ‘Если кнопка 1 нажата, увеличить ti

if bit1 = 0 then loop2 ‘Если кнопка 2 нажата, уменьшить ti

if bit2 = 0 then loop3 ‘Остановка ШД

if bit3 = 0 then start ‘Вращение вперед

goto start2 ‘Реверсивное вращение

loop1: ‘Увеличение времени задержки

poke portb,0 ‘Выключение транзисторов

ti = ti +5 ‘увеличение задержки на 5 мс

pause 50 ‘Пауза 50 мс

if ti > 250 then hold1 ‘Ограничение задержки 250 мс

peek porta,b0 ‘Проверка состояния кнопок

if bit0 = 0 then loop1 ‘Продолжать увеличивать задержку?

goto check ‘Если нет, переход на основную проверку состояния

loop2: ‘Уменьшить задержку

poke portb,0 ‘Выключение транзисторов

ti = ti – 5 ‘Уменьшение задержки на 5 мс

pause 50 ‘Пауза 50 мс

if ti < 20 then hold2 ‘Ограничение задержки 20 мс

peek porta,b0 ‘Проверка состояния кнопок

if bit1 = 0 then loop2 ‘Продолжать уменьшать задержку?

goto check ‘Если нет, переход на основную проверку состояния

hold1: ‘Верхний предел задержки

ti = 245 ‘Задержка до 250 мс

goto loop1 ‘Идти назад

hold2: ‘Нижний предел задержки

ti = 25 ‘Задержка 25 мс

goto loop2 ‘Идти назад

hold3: ‘Остановка ШД

poke portb,0 ‘Выключение транзисторов

peek porta,b0 ‘Проверка состояния кнопок

if bit2 = 0 then hold3 ‘Держать мотор выключенным?

goto check ‘Если нет, переход на основную проверку состояния

Схема устройства изображена на рис. 10.13. На фотографии (рис. 10.14) трудно различить конструкцию кнопок выключателей. Они представляют собой четыре оголенных проводящих полоски позади микроконтроллера.

Рис. 10.13. Схема шагового микроконтроллера с дополнительными выключателями

Рис. 10.14. Схема микроконтроллера шагового двигателя

Верхние половины оголенных полосок соединены с источником питания 5 В через резисторы сопротивлением 10 кОм. Проводник от каждой полоски соединен с соответствующим выводом порта А ИС. Второй контакт представляет собой оголенный одножильный проводник, соединенный с землей, на который замыкаются при нажатии на соответствующие полоски.

Половинный шаг

Использование режима половинного шага эффективно удваивает разрешение ШД. В этом случае для завершения полного оборота требуется 400 импульсов. Таблица 10.4 представляет логику переключений, необходимую для работы программы. Когда вы дойдете до конца таблицы, то вы циклически вернетесь к ее началу.

Таблица 10.4. Логика переключений транзисторов для половинного шага

Переменная задержки ti

Переменная ti в каждой из программ на PICBASIC определяет время задержки, целью которой является снижение скорости следования выходных импульсов на шине В. Без этой задержки скорость следования выходных импульсов может оказаться слишком большой для обеспечения нормальной работы ШД, что приведет к сбоям в его функционировании.

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

Данный текст является ознакомительным фрагментом.