Создаем робота-андроида своими руками - Джон Ловин
Шрифт:
Интервал:
Закладка:
‘Контроллер шагового двигателя
Symbol TRISB = 134 ‘Инициализировать TRISB как 134
Symbol PortB = 6 ‘Инициализировать PortB как 6
Symbol ti = b6 ‘Инициализировать ti как задержку
ti = 25 ‘Задержка 25 мс
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 start ‘Повторение
Полный оборотПри полном шаге для завершения полного оборота ШД требуется 200 импульсов (360° /1,8° на шаг). Подсчет количества импульсов позволяет PIC-микроконтроллеру управлять и позиционировать ротор ШД.
Вторая программа на 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.
Возможные неисправности
Если двигатель не вращается, проверьте полярность диодов. Убедитесь, что вы подключили их правильно, соблюдая полярность, изображенную на схеме.
Если шаговый двигатель вращается медленно или совершает колебания туда и обратно, то это может быть вызвано рядом причин.
Если вы используете питание от батарей, то батареи могут оказаться слишком слабыми для питания двигателя. Примечание: батареи истощаются достаточно быстро, поскольку ШД потребляет относительно большой ток.
В случае замены транзисторов TIP 120 NPN на транзисторы другого типа переключающий ток может оказаться слишком большим для их нормальной работы. Решение: используйте транзисторы TIP 120.
Перепутаны концы обмоток ШД, включенные в схему. Проверьте обмотки с помощью омметра и при необходимости переключите их.
Частота импульсов слишком велика. Если частота импульсов превышает время реакции двигателя, то это приведет к нарушению его правильной работы. Частота импульсов управляется переменной ti в программе. При увеличении значения этой переменой частота следования импульсов, управляющих ШД, уменьшится. Решением будет являться уменьшение частоты импульсации.
Использование PIC-микроконтроллера и ИС UCN-5804 для управления ШД
Мы использовали схему управления работой ШД непосредственно с помощью ИС PIC. Также для управления работой ШД мы использовали специализированную ИС. При совместном использовании специализированной ИС и PIC-микроконтроллера мы можем объединить преимущества, характерные для каждой из схем. ИС UCN-5804 в этом случае выполняет всю «черновую» работу по управлению работой ШД. При некотором усложнении конечной электрической схемы программа управления PIC может быть сильно упрощена, что является хорошим решением.
Принципиальная схема устройства управления ШД с использованием специализированной ИС показана на рис. 10.15, а фотография устройства приведена на рис. 10.16. Питание ИС UCN-5804 осуществляется от источника постоянного тока напряжением 5 В. При напряжении питания 5 В управляющие работой ШД напряжения могут достигать 35 В.
Рис. 10.15. Схема микроконтроллера шагового двигателя
Рис. 10.16. Принципиальная схема микроконтроллера и ИС управления шаговым двигателем
Обратите внимание, что на схеме присутствуют два резистора, обозначенные «rx» и «ry» без указания их номинала. Наличие или отсутствие этих резисторов определяется типом применяемого ШД. Целью введения этих резисторов является ограничение выходного тока, протекающего через ШД, значением 1,25 А (в случае необходимости).
Рассмотрим наш ШД с напряжением питания 5 В. Его обмотки имеют сопротивление 13 Ом. Ток, протекающий через обмотки, составляет 5В/130 м=0,385А, или 385 мА, что значительно ниже максимально разрешенного значения тока 1,25 А для ИС UCN-5804. Поэтому для данного случая резисторы rx и ry не требуются и могут быть исключены из схемы.
Перед тем как мы двинемся дальше, рассмотрим еще один случай. ШД с напряжением питания 12 В имеет сопротивление обмоток 6 Ом. Ток, протекающий через обмотки ШД, составит 12 В/6 Ом=2 А. Такое значение тока превышает максимально допустимое для ИС UCN-5804. Для использование данного ШД резисторы rx и ry необходимы. Для обеспечения одинакового крутящего момента для каждой фазы сопротивления rx и ry должны быть равны. Величины резисторов должны ограничивать ток до величины 1,25 А или ниже. В данном случае сопротивление резисторов должно быть не менее 4 Ом (при мощности от 5 до 10 Вт). При включении резисторов значение тока составит 12 В/10 Ом = 1,20 А.