- AVR Урок 18. Подключаем шаговый двигатель. Часть 1
- Подключаем шаговый двигатель
- Управление шаговым двигателем с помощью микроконтроллера.
- Подключение шагового двигателя к микроконтроллеру AVR ATmega16
- Примеры шаговых двигателей
- Принцип работы биполярного шагового электродвигателя
- Необходимые компоненты
- Маркировка контактов шагового двигателя
- Работа схемы
- Исходный код программы на языке С (Си) с пояснениями
AVR Урок 18. Подключаем шаговый двигатель. Часть 1
Урок 18
Подключаем шаговый двигатель
Сегодня мы попробуем к микроконтроллеру Atmega8a подключить шаговый двигатель.
Шаговые двигатели – это такие двигатели, которые посредством подачи напряжения на определённую обмотку переводят свой ротор в определённое место, тем самым достигается более точное управление угловой скоростью. Можно также, в принципе, управлять и положением ротора, но это уже как-то больше сервоприводы, с которыми, мы, возможно, тоже, когда-то столкнёмся.
Шаговые двигатели в наше время приобретают всё больший интерес, так как в наш век точной электроники люди что-то мастерят движущееся, наподобие роботов и каких-то умных машин, также доходит дело до определённых летательных аппаратов и прочих устройств.
Поэтому я также не обошел этот вопрос стороной и решил также что-то об этом рассказать и подключить шаговый двигатель к контроллеру и попробовать им поуправлять. Как только мне это удалось, я решил этим поделиться и с вами.
Мне в руки попался именно вот такой вот шаговый двигатель 28-BJ48 компании Kiatronics
Питается данный двигатель от 5 вольт, питание подается попеременно на различные обмотки, которых 4, и если питание снимается с одной обмотки и подается на другую, то ротор. соответственно. устраемляется к ней.
Данные обмотки своими сердечниками в статоре находятся не в 4 местах, а намного чаще, а именно каждая повторяется 2048 раз, поэтому когда мы подаем напряжение на соседнюю обмотку, ротор поворачивается на очень малый угол. А если напряжение подавать ещё и на 2 соседние обмотки, то ротор можно расположить между ними, и количество положений при этом вообще удваивается. А есть вообще микрошаговый режим, когда мы на одну обмотку подаём меньшее напряжение, а на другую большее, то и вообще можно потеряться в количестве шагов и вообще крутить данный шаговый двигатель очень плавно.
Питать двигатель лучше не от ножек контроллера, а лучше через какую-нибудь развязку. Можно использовать мощные транзисторы, но существует специальная микросхема-драйвер для шаговых двигателей. Как правило, выпускается данный драйвер в виде готовых модулей, выглядящих приблизительно вот так вместе с подключенным шаговым двигателем
Данный модуль представляем собой микросхему ULN2003. Можно использовать ее не только для двигателей. Но мы будем использовать здесь 4 входа и 4 выхода, так как у нашего двигателя 4 провода. каждый из которых подключен к определённой обмотке, а пятый провод является общим. Подключенный таким образом мотор уже не влияет на ножки портов, у которых ограничен максимальный ток и можно уже ничего не бояться на этот счёт. При подключении к ножкам контроллера мы используем входы модуля IN1, IN2, IN3 и IN4, а разъём двигателя просто соединим с разъёмом модуля.
Нарисуем вот такую схему, чтобы лучше понять принцип работы двигателя (чтобы увидеть процесс рисования, смотрите видеоверсию урока, ссылка на которую внизу страницы)
Здесь мы видим 4 катушки, одним выводом которые соединены к общему проводу, а на другие выводы каждой катушки мы будем подавать логические уровни, например на рисунке поданы 1000.
Данные обмотки потом по кругу так циклически и повторяются.
Теперь рассмотрим возможные режимы управления с помощью логических уровней.
1 режим – этот простейший режим, при котором мы по очереди подаём логические единицы или высокие логические уровни на каждую обмотку. Называется он также полношаговый режим или One Phase Step Mode.
Схематично данный режим можно изобразить таким образом
Существует также ещё один интересный режим – это режим когда ротор будет шагать между обмотками, то есть мы единички будем подавать на 2 соседние обмотки
А также есть ещё и третий решим – это полушаговый режим, когда мы уже чередуем комбинации, сначала ротор будет находиться у обмотки, потом наполовину переместится к соседней обмотке, потом совсем к соседней обмотке и т.д. Это полушаговый режим или one and two-phase-on
Вот таких вот три режима существуют. мы остановимся на 3 режиме, так как он будет самый плавный и самый интересный.
На следующем занятии мы соберём всю нашу схему с шаговым двигателем и начнём уже писать какой-то исходный код.
Программатор и шаговый двигатель 28YBJ-48 с драйвером ULN2003 можно приобрести здесь:
Смотреть ВИДЕОУРОК (нажмите на картинку)
Управление шаговым двигателем с помощью микроконтроллера.
После первого запуска стало понятно, что хотели получить одно, а получили другое, после того как транзистор закрывался, двигатель продолжал вращаться ещё не один оборот, оно и понятно, для того чтобы вал остановился, энергия, которую он накопил пока вращался, должна быть израсходована.
Вот мы и подошли к одному из основных преимуществ шагового двигателя — возможность точного позиционирования.
Шаговые двигатели бывают трёх основных типов:
- двигатели с переменным магнитным сопротивлением
- двигатели с постоянными магнитами
- гибридные двигатели
В двигателях с переменным магнитным сопротивлением, ротор изготовлен из магнитомягкого материала, то есть материала, который способен быстро намагничиваться и быстро терять магнитные свойства при снятии магнитного поля. Вращающий момент создаётся магнитными потоками статора, причём ротор всегда становится так, чтобы магнитный поток создаваемый статором замкнулся. Для того чтобы ротор повернулся надо, выключить ток в одной обмотке и включить в другой обмотке.
Гибридные двигатели обладают преимуществами вышеописанных двигателей и лучшими характеристиками: меньшей величиной шага, большим моментом, большей скоростью и как следствие стоят дороже.
Перейдём к практике, для эксперимента возьмём шаговый двигатель MITSUMI M42SP-5 с шагом 7.5°, изображённый на картинке.
Из таблицы понятно, что такие двигатели бывают двух типов:
- 12 вольтовые с сопротивлением обмотки 50 Ом
- 24 вольтовые с сопротивлением обмотки 120 Ом
Схема двигателя изображена на картинке ниже.
Из двигателя выходит 5 проводов: 4 фазы и один общий. Общий провод можно найти с помощью мультиметра, сопротивление между ним и оставшимися 4 проводами равно сопротивлению фазы, в нашем случае 50 Ом.
Как писалось выше, необходим посредник, который примет от микроконтроллера 20mA и отдаст двигателю 259mA. Можно как раньше взять полевой транзистор, но есть одно, но фаз здесь целых четыре штуки и для этого случая есть более простое решение — это использовать микросхему ULN2003.
Транзистор Дарлингтона или пара Дарлингтона, представляет собой два соединённых транзистора, его отличительной особенностью является высокий коэффициент усиления, который равен произведению коэффициентов усиления каждого из транзисторов(βс = β1 ∙ β2).
Вращать двигатель можно, подавая питание по очереди на обмотки, при этом в любой момент времени включена лишь одна обмотка, в этом случае двигатель будет работать в режиме шага, то есть при одном переключении обмоток будет поворачиваться на 7.5°.
Для удобства управления можно создать массив в котором номер элемента массива будет обозначать номер шага, а значение элемента массива — какие обмотки должны быть включены.
Если передавать последовательно элементы этого массива в порт микроконтроллера, двигатель будет работать в режиме полушага, если через один — в режиме полного шага. Для передачи значений в порт удобно использовать прерывание от таймера по переполнению, таким образом, изменяя время между прерываниями, мы можем регулировать скорость вращения двигателя.
Подключение шагового двигателя к микроконтроллеру AVR ATmega16
Шаговые двигатели – это бесщеточные двигатели постоянного тока, которую могут вращаться от 00 до 3600 дискретными шагами. С каждым управляющим сигналом ось такого двигателя поворачивается на фиксированное значение (шаг). Управление вращением подобных двигателей осуществляется последовательностью специальных сигналов. В отличие от серводвигателей шаговые двигатели могут управляться контактами ввода-вывода общего назначения, а не только контактами ШИМ модуляции, и могут вращаться на (+3600) и (-3600). Последовательность следования управляющих сигналов определяет будет ли шаговый двигатель вращаться по часовой или против часовой стрелки. Для управления скоростью вращения такого двигателя необходимо просто изменять уровень управляющих сигналов. У шаговых двигателей есть несколько режимов шагового (дискретного) вращения – на полный шаг, на половину шага и на микрошаг.
В этом проекте мы будем подключать шаговый двигатель 28BYJ-48 к микроконтроллеру ATmega16 (семейство AVR), используя программу Atmel Studio 7.0. Шаговый двигатель будет работать при напряжении питания 5В. Мы будем подключать шаговый двигатель к микроконтроллеру с помощью драйверов электродвигателей ULN2003 и L293 (по отдельности). Оба будут запитываться напряжением 5В.
Примеры шаговых двигателей
Как следует из их названия, вращение шаговых электродвигателей представляет собой серию коротких шагов. В этом и состоит их отличие от двигателей свободного вращения — шаговый двигатель сделает столько шагов, сколько ему будет задано, и вы будете точно знать, сколько он их сделал. Это одна из причин, почему шаговые двигатели широко применяются как в обычных, так и в ЗD-принтерах. В обычных принтерах они точно позиционируют бумагу, а в ЗD — рабочий столик и сопло.
На представленном рисунке представлены три образца шаговых электродвигателей. Миниатюрные электродвигатели типа тех, что показан слева, служат для перемещения элементов объектива в компактной фотокамере или смартфоне. В центре находится шаговый мотор-редуктор с питанием 5В — в его корпусе заключен и шаговый электродвигатель, и редуктор. Справа изображен шаговый электродвигатель, типичный дл я принтеров.
Принцип работы биполярного шагового электродвигателя
На следующем рисунке показана схема работы биполярного шагового электродвигателя. О другом типе шаговых электродвигателей — униполярных – можно прочитать в соответствующих источниках. В биполярном шаговом двигателе, как правило, имеются четыре катушки. Катушки, расположенные одна против другой, соединены так, что работают синхронно.
Все катушки расположены на неподвижном статоре двигателя, а значит, нет необходимости во вращающемся коллекторе и щетках, как у двигателей постоянного тока.
Ротор шагового электродвигателя выполнен в форме намагниченных зубцов с чередующимися северным (С) и южным (Ю) полюсами (зубцов на роторе обычно гораздо больше, чем показано на представленном рисунке). Каждую катушку можно подключить так, что она будет намагничена или как северный полюс, или как южный, — в зависимости от направления тока в катушке. Катушки 1 и 3 работают совместно так, что когда катушка 1 будет южным полюсом, катушка 3 также будет южным полюсом. То же самое относится и к катушкам 2 и 4.
Начнем с варианта рисунка под буквой «а» — когда катушка 1 , а значит, и катушка 3 запитаны так, что становятся южными полюсами (Ю), вследствие того, что разноименные полюса притягиваются, а одноименные отталкиваются, ротор поворачивается против часовой стрелки до тех пор, пока ближайшие зубцы ротора с намагниченностью северного полюса (С) не поравняются с катушками 1 и 3 (как показано на «б»).
Чтобы продолжить вращение против часовой стрелки, на следующем шаге (рисунок «в») необходимо подать ток в катушки 2 и 4 так, чтобы они стали северными полюсами (С). Тогда ближайшие зубцы ротора с намагниченностью Ю подтянутся к катушкам 2 и 4 (рисунок «г»).
Каждое такое действие проворачивает ротор электродвигателя на один шаг. Для продолжения вращения против часовой стрелки в катушке 1 снова нужно создать намагниченность С (см. представленную таблицу).
Таблица 1. Последовательность действий при вращении шагового двигателя против часовой стрелки
Катушки 1 и 3 | Катушки 2 и 4 |
Ю | — |
— | С |
С | — |
— | Ю |
Прочерки в графах таблицы 1 указывают на то, что катушка в этот момент не оказывает влияния на вращение ротора и должна быть обесточена. Чтобы усилить момент вращения двигателя, на эти обесточенные катушки можно подать такой ток, чтобы полярность их намагниченности совпадала с полярностью стоящего под ней зубца ротора (таблица 2).
Таблица 2. Уточненная последовательность переключения катушек при вращении шагового двигателя
Катушки 1 и 3 | Катушки 2 и 4 |
Ю | С |
С | С |
С | Ю |
Ю | Ю |
Для изменения направления вращения ротора нужно всего лишь изменить порядок переключения катушек, указанный в таблице 2, на обратный.
Необходимые компоненты
- Микроконтроллер ATmega16 (купить на AliExpress).
- Программатор AVR-ISP (купить на AliExpress), USBASP (купить на AliExpress) или другой подобный.
- Кварцевый генератор 16 МГц (купить на AliExpress).
- Шаговый двигатель 28BYJ-48 (купить на AliExpress).
- Драйвер двигателей ULN2003 (купить на AliExpress) или L293D (купить на AliExpress).
- Конденсатор 100 нФ (2 шт.) (купить на AliExpress).
- Конденсатор 22 пФ (2 шт.) (купить на AliExpress).
- Кнопка.
- Светодиод (купить на AliExpress).
- Макетная плата.
- Соединительные провода.
- Источник питания с напряжением 5 Вольт.
Маркировка контактов шагового двигателя
Представлена на следующем рисунке.
Как видим, схема контактов шагового двигателя как будто специально «заточена» под то, чтобы подключать его к соответствующим драйверам (ULN2003 или L293D).
Назначение контактов микросхемы ULN2003 (драйвера двигателей) приведено на следующем рисунке.
Внешний вид этого драйвера двигателей выглядит следующим образом:
Внешний вид драйвера мотора L293D приведен на следующем рисунке:
Работа схемы
В следующих двух таблицах представлены схемы соединений входных и выходных контактов драйверов моторов ULN2003 или L293D с микроконтроллером AVR ATmega16 и шаговым электродвигателем.
Atmega16 | ULN2003 | L293D |
A0 | IN1(PIN1) | IN1(PIN2) |
A1 | IN2(PIN2) | IN2(PIN7) |
A2 | IN3(PIN3) | IN3(PIN10) |
A3 | IN4(PIN4) | IN4(PIN15) |
Шаговый двигатель | ULN2003 | L293D |
Orange | OUT1(PIN16) | OUT1(PIN3) |
Yellow | OUT2(PIN15) | OUT2(PIN6) |
Pink | OUT3(PIN14) | OUT3(PIN11) |
Blue | OUT4(PIN13) | OUT4(PIN14) |
Схема устройства с драйвером мотора ULN2003 приведена на следующем рисунке.
Схема этой же самой конструкции, но с драйвером мотора L293D, будет выглядеть следующим образом.
Внешний вид устройства с использованием ULN2003 приведен в начале статьи, а с использованием L293D он будет выглядеть следующим образом:
Соедините все компоненты устройства в соответствии с приведенной схемой соединений (одной из двух). Для управления шаговым двигателем мы будем использовать PORTA микроконтроллера Atmega16. К контактам шагового двигателя нет необходимости подключать питание – для управления им нам понадобятся только контакты его катушек (coil pins) – верно для ULN2003, для L293D немного по другому. Очень важен порядок контактов для того чтобы шаговый двигатель работал корректно. Для микросхемы ULN2003 используются четыре ее входа и четыре ее выхода – входы соединяются с контактами PORTA микроконтроллера, а выходы – с сигнальными контактами шагового двигателя. Также подсоедините кнопку к контакту сброса (Reset pin) чтобы иметь возможность осуществлять сброс микроконтроллера Atmega16 всегда, когда нам это понадобится. Подсоедините к микроконтроллеру кварцевый генератор. Все устройство должно быть запитано напряжением 5В.
Исходный код программы на языке С (Си) с пояснениями
Приведенный в этом разделе код программы демонстрирует вращение шагового двигателя под управлением микроконтроллера AVR в обе стороны: по часовой стрелке и против часовой стрелки. Если вы хотите вращать шаговый двигатель только в одну сторону – просто закомментируйте ненужную часть кода.