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

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

Урок 18

Сегодня мы попробуем к микроконтроллеру Atmega8a подключить шаговый двигатель.

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

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

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

Мне в руки попался именно вот такой вот шаговый двигатель 28-BJ48 компании Kiatronics

Питается данный двигатель от 5 вольт, питание подается попеременно на различные обмотки, которых 4, и если питание снимается с одной обмотки и подается на другую, то ротор. соответственно. устраемляется к ней.

Данные обмотки своими сердечниками в статоре находятся не в 4 местах, а намного чаще, а именно каждая повторяется 2048 раз, поэтому когда мы подаем напряжение на соседнюю обмотку, ротор поворачивается на очень малый угол. А если напряжение подавать ещё и на 2 соседние обмотки, то ротор можно расположить между ними, и количество положений при этом вообще удваивается. А есть вообще микрошаговый режим, когда мы на одну обмотку подаём меньшее напряжение, а на другую большее, то и вообще можно потеряться в количестве шагов и вообще крутить данный шаговый двигатель очень плавно.

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

Данный модуль представляем собой микросхему ULN2003. Можно использовать ее не только для двигателей. Но мы будем использовать здесь 4 входа и 4 выхода, так как у нашего двигателя 4 провода. каждый из которых подключен к определённой обмотке, а пятый провод является общим. Подключенный таким образом мотор уже не влияет на ножки портов, у которых ограничен максимальный ток и можно уже ничего не бояться на этот счёт. При подключении к ножкам контроллера мы используем входы модуля IN1, IN2, IN3 и IN4, а разъём двигателя просто соединим с разъёмом модуля.

Читайте также:  1С склонение должности по падежам

Нарисуем вот такую схему, чтобы лучше понять принцип работы двигателя (чтобы увидеть процесс рисования, смотрите видеоверсию урока, ссылка на которую внизу страницы)

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

Данные обмотки потом по кругу так циклически и повторяются.

Теперь рассмотрим возможные режимы управления с помощью логических уровней.

1 режим — этот простейший режим, при котором мы по очереди подаём логические единицы или высокие логические уровни на каждую обмотку. Называется он также полношаговый режим или One Phase Step Mode.

Схематично данный режим можно изобразить таким образом

Существует также ещё один интересный режим — это режим когда ротор будет шагать между обмотками, то есть мы единички будем подавать на 2 соседние обмотки

А также есть ещё и третий решим — это полушаговый режим, когда мы уже чередуем комбинации, сначала ротор будет находиться у обмотки, потом наполовину переместится к соседней обмотке, потом совсем к соседней обмотке и т.д. Это полушаговый режим или one and two-phase-on

Вот таких вот три режима существуют. мы остановимся на 3 режиме, так как он будет самый плавный и самый интересный.

На следующем занятии мы соберём всю нашу схему с шаговым двигателем и начнём уже писать какой-то исходный код.

Программатор и шаговый двигатель 28YBJ-48 с драйвером ULN2003 можно приобрести здесь:

Смотреть ВИДЕОУРОК (нажмите на картинку)

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

Схема управления для биполярного шагового двигателя требует наличия мостовой схемы для каждой обмотки. Эта схема позволит независимо менять полярность напряжения на каждой обмотке. Основа схемы — микроконтроллер ATMega8, обеспечивающий логику работы и двойной H-мост L293, который обеспечивает коммутацию обмоток двигателя. Согласно документации L293 в схему включены 8 диодов 1N4001, чтобы защитить микросхему от выбросов обратного напряжения. Если драйвер L293 с индексом D, то диоды можно не ставить так как они уже есть внутри микросхемы.

Читайте также:  Как войти в настройки аккаунта гугл

Логика работы микроконтроллера для управления униполярным и биполярным двигателями одинакова, различаются только типы силовых драйверов, поэтому исходный код управляющей программы для того и другого типа будет одинаков.

01. // Подключение биполярного шагового двигателя к AVR

Форум по AVR

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

Отличатся немного по строению и по системе управления.
Униполярный шаговый двигатель, принципиальная схема показана на рис. 1

Рис. 1

У униполярного шагового двигателя есть 4-ре обмотки соединенные по схеме показанной на рис. 1
Принцип работы униполярного шагового двигателя следующий: поочередно на каждую из 4-х обмоток подается напряжение положительной полярности, в это время общий вывод соединен с отрицательным проводом питания. Получается за каждую коммутацию(подачу напряжения на одну из 4-х обмоток) ротор шагового двигателя смещается на один шаг, ширина этого шага зависит от конструкции самого шагового двигателя, для униполярного шагового двигателя показанного на рис. 2 и рис. 3 шаг составляет примерно:
22х8=176(шагов)
365/172=2,104 градуса.


рис. 2


рис. 3

Его я успешно выкурочил из древнего привода магнитных дисков размером 5,25 дюйма, кстати привод известной фирмы TEAC ))) Данный шаговый двигатель выполнял функцию перемещения магнитной головки по пазу в дискете, собственно через который и считывалась вся информация с магнитного диска.
Для управления этим шаговым двигателем при помощи микроконтроллера нам понадобится собрать силовой каскад, сам микроконтроллер просто сгорит, если подключить униполярный шаговый двигатель напрямую к его портам. В качестве силового каскада можно успешно применить 4 пары полевых транзистора из уже известной сборки IRF7105(схема показана на рис. 5),

Рис. 5
или четыре мощных биполярных транзистора или если у вас есть лишние деньги, можно воспользоваться драйвером мощной нагрузки, таким как микросхема L293 или L293DNE что практически одно и то же. Я пользовался именно драйвером L293DNE.

Принципиальная схема включения шагового двигателя через драйвер L293DNE:

Алгоритм управления униполярным шаговым двигателем очень простой, необходимо выполнять поочередную коммутацию четырех обмоток двигателя. То есть выдавать на четыре бита порта микроконтроллера последовательность типа:
1000
0100
0010
0001

Читайте также:  Увлажнитель воздуха для кожи лица отзывы

Соответственно крутим поочередно обмотки A, B, C, D:
1000 — обмотка A
0100 — обмотка B
0010 — обмотка C
0001 — обмотка D

Данный вид коммутации называется "полношаговым режимом", то есть за каждую коммутацию происходит смещение ротора шагового двигателя на один целый шаг. Так же существует "полушаговый режим", коммутация обмоток при полушаговом режиме следующая:
1000 — 1-е пол шага обмотки А
1100 — 2-е пол шага обмотки А
0100 — 1-е пол шага обмотки B
0110 — 2-е пол шага обмотки B
0010 — .
0011 — .
0001 — .
1001 — 2-е пол шага обмотки D

Данный режим применяют в устройствах, где необходимо очень плавно изменять угол поворота ротора шагового двигателя, например в медицинских прибора, которые отвечают за равномерное и плавное введение в вену лекарства (шприцевые дозаторы) или в устройствах механической настройки, например радиоприемники с настройкой при помощи шагового двигателя (сейчас очень большая редкость).

Программа подходит для любого микроконтроллера AVR Attiny2313, Atmega8, Atmega16.
Итак, вот и сама программа (программа для полношагового режима):

Таким образом скорость вращения шагового двигателя будет замедлятся или ускорятся в зависимости от того, будут вы увеличивать (m=m+1;) или уменьшать (m=m-1;) время задержки между командами.

Хочу сказать что униполярные шаговые двигатели не очень мощные, то есть использовать их для перемещения предмета весом больше 40-80 грамм нет смысла, он просто не потянет. Тем более в полушаговом режиме. Для таких целей лучше всего применять шаговые двигатели из принтеров, те которые перемещают каретку с печатной головкой принтера.
Для экономичного управления униполярным шаговым двигателем необходимо отключать напряжение на обмотках во время простоя, то есть не давать обмотке шагового двигателя все время находится под напряжением, так как это приводит к нагреву самого шагового двигателя и соответственно к большой потере энергии (хотя конечно если преследуете цель обогрева помещения при помощи ШД тогда да 🙂 ). Максимальная скорость вращения ротора униполярного шагового двигателя не столь велика, её можно определить при помощи небольшого кусочка, который я разместил в самом низу программы. То есть для устройств требующих больших скоростей вращения униполярные шаговые двигатели не годятся.

Если не ошибаюсь IRF это не

Если не ошибаюсь IRF это не логического уровня, берите IRL и будев вам счастье.

Ссылка на основную публикацию
Adblock detector