Управление шаговым двигателем с помощью Arduino

Всем привет!


В этом посте я постараюсь вкратце рассказать про шаговые электродвигатели, и как с ними можно работать с помощью нашего любимого ардуино.


Многие из вас знакомы с маленькими моторчиками, из которых исходят всего 2 провода, они часто встречаются в детских игрушках, например, в машинках.

Управление шаговым двигателем с помощью Arduino Arduino, Шаговые двигатели, Совет, Видео, Длиннопост

Это коллекторные электродвигатели постоянного тока. Они могут напрямую подключатся к источнику питания и будут всегда вращаться с постоянной скоростью, в зависимости от подаваемого напряжения. Если необходимо изменить направление вращения, то на нашем моторе нужно просто поменять местами "+" и "-" и он сразу начнёт крутиться в другую сторону. За счёт их простой конструкции, они имеют небольшую стоимость и простоту в управлении.


Но есть ещё один из распространенных типов двигателей - это шаговые электродвигатели.

Вы могли их встречать, если разбирали CD-DVD привода, жёсткие диски, принтеры или другие электронные устройства, в механической части которых нужно чётко контролировать обороты, перемещения или другие необходимые кинематические движения.


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

Управление шаговым двигателем с помощью Arduino Arduino, Шаговые двигатели, Совет, Видео, Длиннопост

Как видно - здесь уже больше, чем 2 провода и напрямую подключить такой мотор к источнику питания просто так не получиться из-за совсем другой конструкции самого двигателя. Если для нашего первого моторчика достаточно было подать "+" и "-" на соответственные клемы и он начинал вращаться, то для шагового электродвигателя нужно подавать цифровые электронные сигналы управления, которые будут сообщать двигателю на сколько и в какую сторону ему необходимо вращаться. Это возможно осуществить с помощью устройства, которое будет генерировать и отправлять эти сигналы на драйвер, а он, в свою очередь, напрямую управлять обмотками двигателя.


Мы рассмотрим пример, как подключить шаговый электродвигатель к Arduino Mega 2560 - именно оно и будет тем устройством, которое генерирует нужные электронные сигналы управления.

Я взял мотор формата Nema 17 - это гибридный шаговый двигатель, который часто встречается в 3Д принтерах, ЧПУ системах, робототехнике и т.д.


Фото двигателя в разрезе:

Управление шаговым двигателем с помощью Arduino Arduino, Шаговые двигатели, Совет, Видео, Длиннопост

Драйвер на микросхеме TB6600 - это довольно неплохой контроллер, который можно использовать с двигателями до 4.5 А, 50 В. Для домашних 3Д принтеров и ЧПУ систем его полностью достаточно.


Схема драйвера:

Управление шаговым двигателем с помощью Arduino Arduino, Шаговые двигатели, Совет, Видео, Длиннопост

Чтобы драйвер работал, необходим внешний источник питания с напряжением 8-50 В (рекомендуется 36 В). Именно с него наш двигатель будет получать энергию для своей работы. А логические сигналы Dir - направление вращения и Pulse - сигнал шага, драйвер будет получать от ардуино.

У данного двигателя 4 обмотки: A+, A-, B+, B-, их нужно соединить с соответствующими выходами на плате драйвера.

Управление шаговым двигателем с помощью Arduino Arduino, Шаговые двигатели, Совет, Видео, Длиннопост

Для управления шаговым двигателем можно использовать различные библиотеки, которые упрощают жизнь, если необходимо как-то динамически управлять двигателем, например "AccelStepper" и тому подобные. Также есть различные программные комплексы для управления 3Д принтерами или ЧПУ станками.

Мы же рассмотрим простой пример вращения двигателя с постоянной скоростью, который не сложно будет повторить всем желающим. Также, так ещё удобно проверять общее состояние двигателя.


Воспользуемся этим несложным кодом: https://gist.github.com/anonymous/f556f387d90c6a5bbebaa4b57a...

Здесь написан цикл, который беспрерывно будет отправлять логические сигналы к нашему драйверу, а он уже на двигатель.


Примерно так всё работает:

P.S. Сильно в теорию я не вдавался, потому что на это нужен не один пост, да и не всем она понравится :)

Arduino & Pi

1.4K постов20.6K подписчиков

Добавить пост

Правила сообщества

В нашем сообществе запрещается:

• Добавлять посты не относящиеся к тематике сообщества, либо не несущие какой-либо полезной нагрузки (флуд)

• Задавать очевидные вопросы в виде постов, не воспользовавшись перед этим поиском

• Выкладывать код прямо в посте - используйте для этого сервисы ideone.com, gist.github.com или схожие ресурсы (pastebin запрещен)

• Рассуждать на темы политики

• Нарушать установленные правила Пикабу