Управление шаговым двигателем через контроллер Canny

в 11:52, , рубрики: CANNY, pic, контроллер, программирование микроконтроллеров, шаговый двигатель

Наткнулся недавно на статью камрада BosonBeard про новые контроллеры и решил попробовать на зуб что это такое. Недолго думая были раздобыты 3 типа контроллеров: Canny 3 Tiny, Canny 5 Nano, Canny 7.

Управление шаговым двигателем через контроллер Canny - 1
Рис. 1. Внешний вид упаковки контроллеров Canny 7 (слева), Canny 5 Nano (в центре), Canny 3 Tiny (справа), шариковая ручка для масштаба

Управление шаговым двигателем через контроллер Canny - 2
Рис. 2. Внешний вид контроллеров Canny 7 (слева), Canny 5 Nano (в центре), Canny 3 Tiny (справа), шариковая ручка для масштаба

На что стоит обратить внимание… сердцем контроллеров являются чипы семейства PIC — PIC18F25K50-I/ML, PIC18F25K80, PIC24HJ128GP506A-I/PT — соответственно. Про возможности каждого чипа можно прочитать из даташитов производителя, так что не будем заострять на этом внимание. Из особенностей могу добавить только, что у модели Canny 5 Nano есть внешний TTL-USB драйвер на чипе CP2102. На счет подключения и впаянных разъемов на моделях Canny 7 и Canny 3 переживать не стоит, т.к. производитель укомплектовывает поставку солидным пучком проводов с запаянными разъемами.

Применение чипов семейства PIC было неожиданностью. Хотя сам я не большой их поклонник, свою нишу они определенно занимают не зря. К слову, система защиты от протечек “аквасторож” тоже построена на чипах PIC.

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

Внимание! Собственный бутлоадер и графическая среда программирования накладывают определенные ограничения — невозможность использования стандартных библиотек. Но когда это нас останавливало?)

Не уверен что использовать подобный контроллер в качестве полноценного драйвера шагового двигателя даже для настольного ЧПУ или 3D принтера рационально, но для простого поворотного столика для создания моделей или съемки думаю реально.

От старого проекта у меня лежал неиспользованный старенький ДШИ-200 и самодельный драйвер к нему.

Управление шаговым двигателем через контроллер Canny - 3
Рис.3. Мой старый драйвер шагового двигателя, на рисунке можно увидеть 3 канала управления

Это делает задачу немного интересней, так как готовые примеры рассчитаны на использование обычных сейчас 2-х обмоточных двигателей, в то время как ДШИ-200 — четырехобмоточный с двумя выводами с каждой обмотки.

Для сравнения, стандартная программа управления выглядит так:

Управление шаговым двигателем через контроллер Canny - 4

А то что изобразил я, для управления своим двигателем выглядело так:

Управление шаговым двигателем через контроллер Canny - 5

Почему такая разница в программах? Во-первых для таймлапса не надо организовывать реверс, т.е. достаточно вращения двигателя в одну сторону. Во-вторых — особенности самого двигателя, который может быть включен как по униполярной, так и по биполярной схеме. Так что нам подойдет униполярная схема:

Управление шаговым двигателем через контроллер Canny - 6

В качестве платформы для таймлапса я использовал слегка измененный поворотный стол от 3д сканера cyclopus:

Управление шаговым двигателем через контроллер Canny - 7

Достоинства и недостатки.
По традиции начнем с недостатков:
Закрытый бутлоадер
Отсутствие возможности подключения внешних библиотек

Из достоинств:
Графическая среда программирования — да, это непривычно, но это снижает порог вхождения
Высокая скорость разработки программ
Простота настройки и наладки программ “по месту” в полевых условиях
Развитое сообщество и поддержка разработчиков

Выводы
Не смотря на то, что контроллер достаточно специфичный и относится больше к узкоспециализированному профессиональному классу, производитель позаботился и о простых смертных. Это действительно сопоставимо со временем написания программ на Arduino. Но если взять более сложные программы, Arduino в проигрыше из-за сложности восприятия кода. Всетаки “картинку” мозг воспринимает быстрей чем текст. Кроме того, человеку который не участвовал в изначальной разработке кода проще будет его разобрать по картинке. Конечно визуальная среда разработки добавляет в загружаемый код хлама, но для сложных задач можно выбрать другой контроллер с большим объемом памяти… в общем каждый сам решает что ему важнее.

Уверен что многие вспомнят визуальную среду программирования Arduino — ArduBlock, которая умеет поддерживать библиотеки различных модулей и протоколов. Однако для чипов PIC ничего такого не было. Да и вообще с того момента как массово стали использовать Arduino про аналогичные устройства на PIC большинство из нас забыло. О достойной альтернативе говорить сложно, но это однозначно шаг вперед.

Мне было любопытно что это за контроллеры и что они умеют и я на данный момент удовлетворил свое любопытство. Я не придумал красивое окончание статьи, так что всем прочитавшим — спасибо за внимание.

Автор: Илья

Источник

* - обязательные к заполнению поля


https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js