Делаем контроллер шагового двигателя. Часть 1.

Читая материалы по STEP/DIR контроллерам шаговых двигателей в интернете, не нашел ни одного более-менее документированного проекта с исходниками на Си для управления шаговым двигателем в режиме «микрошаг» (wave step).

Где такой контроллер может найти применение?
1) Управление станком ЧПУ
2) Робототехника
3) Всякая хрень где нужно точное перемещение вала ШД

Большинство проектов, найденных мной в интернете имеют ряд недостатков:

1) Слишком навороченная схема (применение дорогих специализированных микросхем, которые иногда труднодоставаемы)
2) Отсутствие режима «микрошаг» (1/4, 1/16, 1/32 шага);
3) Афтар просит бабла за прошитый МК (PIC);
4) Запутанный и неоптимальный код на Басике.

Проанализировав все это было решено начать проект простого STEP/DIR контроллера на распространенных комплектующих. В последствии ПО будет перенесено на STM8 и какую-нибудь tiny2313. В качестве МК подойдет любой контроллер, имеющий хотя-бы два 8-и битных ШИМ выхода. Как два ШИМа распределить на четыре управляющих ключа, я расскажу позже. А пока, чтобы не заморачиваться, возмем atmega48 с четырьмя ШИМами и приступим к написанию ПО.

Шаговые двигатели бывают разных типов. Более подробно о них можно прочитать в Педивикии. На сегодняшний день распростанены два типа униполярный и биполярный ШД. Униполярные постепенно отмирают. Но мы начнем именно с униполярного, т.к. для него не надо городить мост, а можно использовать MOSFETы с материнок.

Графики напряжений
Рис.1

На Рис.1 представлены три распростаненных режима управления ШД
— Полный шаг
— Полушаг
— Микрошаг

симуляция в Протеусе

В аттаче два проекта для ATmega48 и для PIC18F252. Оба работают в режиме 1/16 шага. Плюсом к проектам идет симуляция Протеуса — можно двиглом плавно микрошагово покрутить даже.

В проекте на ATmega48 массив полупериода синусойды генерируется при старте МК и отправляется в USART с целью отладки, позже мы запихнем один массив на 128 значений во флеш и будем доставать из него значения для ШИМ в зависимости от требуемой кратности шага. То есть, либо 0,1,2,3-й…, либо 0, 2, 4, 6-й элементы и так далее.
  • +2
  • 17 августа 2011, 12:14
  • yakuzaa
  • 2
Файлы в топике: pwm_m48.zip, pwm_pic18.zip

Комментарии (14)

RSS свернуть / развернуть
Перенес в коллективный блог
0
А почему драйвер биполярника нельзя на мосфетах с матери сделать? Нужны PMOS и/или драйверы? Это как бы вроде не самая большая проблема в этой жизни, и было бы интереснее и полезнее :-)
0
можо, тоьлко их необходимо включить в мост и управлять специальной микросхемой-драйвером ключей, например IR2104.
0
Мост это конечно да, необходимое зло. А вот без драйвера можно и обойтись, особенно если сверх-высокие скорости не нужны.
0
Только не IR2104. Как минимум IR2184, да и то только если выбора другого нет. IR-ки серии 21х это высоковольтные драйверы, для своих задач они ничего, но для управления полевиками в режиме «небольшие напряжения и большие токи» они подходят не очень. А вообще для шаговиков нужны драйверы на «средние» напряжения, до 100В.
0
Наткнулся тут, Stepper motor — Animation, правда не пока не догнал что к чему :)
+1
Шикарная анимация. И к BLDC моторам есть. Наглядно и понятно стало.
0
особо доставляет на микрошаге обратная связь с ЦАПом. ЦАП выставляет на положительном входе компаратора уровень, соответствующий текущему заполнению ШИМа, этот уровень затем сравнивается с током текущей питаемой обмотки. В нашем случае вместо ЦАП буит еще один ШИМ с цепочкой RC фильтров.
0
Ссылочка протухла, теперь, судя по всему, оно тут: Stepper and BLDC Motor Animation — Nanotec
0
обновил примеры. теперь их два — для ATmega48 (мой) и на PIC18F252(не мой). Оба проекта идут с Протеусовской симуляцией.
0
Наконец то реальный код, а не разглагольствования, огромное спасибо.
PS: Жду реализацию биполярного двигателя и на ATTiny2313 ))
0
какая макс частота шагов?
какая частота ШИМа?

с микрошагом есть linisteper: www.piclist.com/techref/io/stepper/linistep/index.htm
0
Он только для униполярных движков, если не ошибаюсь.

P.S. а по хорошему я не вижу большого смысла в этом. специализированные чипы (как минимум некоторые из них) вполне доступны. Та же TB6560 валяется чуть ли не в каждой первой лавке, вагонами лежит на ебае. По своим возможностям она, IMHO, покрывает процентов 80 (если не 90) любительских задач, включая CNC.
0
Как ток стабилизируем?
А как с резонансами боремся?
0
Только зарегистрированные и авторизованные пользователи могут оставлять комментарии.