Схема управления шагового двигателя на atmega8

Схема управления шагового двигателя на atmega8

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

Отличатся немного по строению и по системе управления.
Униполярный шаговый двигатель, принципиальная схема показана на рис. 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 грамм нет смысла, он просто не потянет. Тем более в полушаговом режиме. Для таких целей лучше всего применять шаговые двигатели из принтеров, те которые перемещают каретку с печатной головкой принтера.
Для экономичного управления униполярным шаговым двигателем необходимо отключать напряжение на обмотках во время простоя, то есть не давать обмотке шагового двигателя все время находится под напряжением, так как это приводит к нагреву самого шагового двигателя и соответственно к большой потере энергии (хотя конечно если преследуете цель обогрева помещения при помощи ШД тогда да 🙂 ). Максимальная скорость вращения ротора униполярного шагового двигателя не столь велика, её можно определить при помощи небольшого кусочка, который я разместил в самом низу программы. То есть для устройств требующих больших скоростей вращения униполярные шаговые двигатели не годятся.

Читайте также:  Схема регулятор частоты вращения для асинхронного двигателя

Источник

Схема управления шагового двигателя на atmega8

Пропорциональное управление шаговым двигателем

Автор: МКС, uels73@mail.ru
Опубликовано 14.08.2013
Создано при помощи КотоРед.

Описываемое ниже устройство позволяет управлять униполярным шаговым двигателем типа СДХ 1,8/40 и аналогичным. Схема электрическая принципиальная блока управления изображена на рис.1. Он выполнен на базе микроконтроллера ATmega 8 работающего от встроенного тактового генератора на частоте 2 МГц. В качестве ключей, коммутирующих обмотки шагового двигателя М1, использованы логические элементы микросхем DD2, DD3 типа SN75452 (русский аналог — К155ЛА18). Это микросхемы – повышенной мощности с открытым коллекторным выходом.

Блок поддерживает пропорциональное и дискретное управление мотором. В режиме пропорционального управления — угол поворота ротора двигателя, задается переменный резистором R1. В режиме дискретного управления — вращение двигателя «влево», «вправо», «стоп» осуществляется кнопками S1 и S2. Кроме этого, в схеме можно выбирать шаговый или полушаговый режим работы, а также скорость вращения двигателя.
Установкой перемычки X4 выбирается пропорциональное управление, а при ее отсутствии – дискретное управление. Перемычкой X5 определяется шаговый и полушаговый режим работы двигателя. Все эти режимы работы инициализируются только в момент включения схемы или сброса микроконтроллера. Поэтому нужные перемычки необходимо установить перед включением питания. В микроконтроллере задействованы два канала АЦП. На вход одного из них – ADC5 (28 ножка) подключен подстроечный резистор R3. С его помощью регулируется скорость вращения двигателя при любом режиме работы схемы.
В режиме пропорционального управления задействуется еще один канал АЦП – ADC4 (27 ножка). На его вход через интегрирующую цепь R2, C1 подключен переменный резистор R1, который задает угол поворота ротора мотора. Скорость работы АЦП в данной управляющей программе осуществляет преобразования с 8 — битной точностью. Поэтому положение ручки переменного резистора R1 программа контроллера условно разбивает на 255 шагов. После включения питания, программа выполняет калибровку положения ротора шагового двигателя. Для этого, перед началом работы, автоматически выполняется команда «вращение двигателя влево» до тех пор, пока флажок, закрепленный на роторе мотора, не «доедет» до концевого датчика (оптопары) VT1, HL1. При поступлении сигнала с датчика VT1, программа обнуляет регистр-счетчик количества шагов двигателя, измеряет напряжение на выходе переменного резистора R1, преобразует его в цифровой код в диапазоне от 0 до 255, записывает его в старший байт регистра результата преобразования АЦП (это количество шагов переменного резистора R1), а затем сравнивает его содержимым регистра-счетчика количества шагов двигателя. Если число шагов резистора R1 больше чем шагов двигателя М1, то выдается команда: «вращение двигателя вправо». При этом с каждым шагом ротора происходит инкремент счетчика шагов двигателя и его сравнение с числом в регистре АЦП (шаги резистора R1). Когда число шагов двигателя станет равно числу в регистре АЦП, выполняется команда: «стоп». Поворачивая ручку резистора R1 «влево», уменьшается уровень постоянного напряжения на входе АЦП. При этом число в регистре результата преобразования АЦП станет меньше чем текущее значение регистра — счетчика шагов. В этом случае выдается команда: «вращение двигателя влево». С каждым шагом двигателя происходит декремент регистра-счетчика шагов двигателя до тех пор, пока числа в обоих регистрах не станут равны. Таким образом, вращая ручку переменного резистора R1, ротор двигателя поворачивается в том же направлении и на такое же количество шагов.
Отмечу, что предлагаемый двигатель совершает один оборот на 360° за 200 шагов (т.е. один шаг – 1,8 град.). Следовательно, в данной схеме, за 255 условных шагов от переменного резистора R1, ротор мотора сделает более одного оборота и повернется на угол 459°. Поэтому для ограничения угла поворота двигателя используется концевой датчик (оптопара) для крайнего правого положения ротора. Он выполнен на элементах VT2, HL2. Для более точного копирования угла поворота ручки переменного резистора ротором двигателя необходимо установить в разрыв вывода сопротивления R1, подключенного к «+5 В», ограничительный резистор Rогр.. Его номинал следует тщательно подобрать (в пределах от 1 до 3 кОм).
В управляющей программе предусмотрена функция повторной калибровки положения ротора двигателя в процессе работы устройства. Например, в случае проскальзывания шагов ротора, по какой либо причине (двигатель перегружен, зацепился за что-то и т.д.), можно повернуть ручку переменного резистора R1 в крайнее левое положение и подождать 2 — 3 секунды. При этом происходит проверка положения флажка ротора с помощью оптического датчика крайнего левого положения VT1. Если флажок не зашел в зону срабатывания датчика, значит в процессе работы произошло смещение шагов ротора мотора М1 относительно шагов резистора R1. В этом случае запускается программа повторной калибровки системы, и работа устройства восстанавливается.
Для работы схемы в режиме пропорционального управления оптический датчик крайнего левого положения и калибровки VT1 — обязателен. Датчик крайнего правого положения VT2 можно не ставить, если нет необходимости в ограничении положения ротора при вращении вправо. Но, тогда, необходимо 14 вывод микроконтроллера подключить к +5 В.
При пропорциональном управлении двигателем в полушаговом режиме ротор совершает поворот в пределах от 0° до 230°. Мощность мотора уменьшается, зато увеличивается плавность хода. Это необходимо учитывать при выборе этого режима работы.
В режиме дискретного управления вращение «вправо» осуществляется кнопкой S1, вращение «влево» — кнопкой S2. Если кнопки не нажаты, выполняется команда «стоп». Программа калибровки двигателя и переменный резистор R1 в этом режиме не используются. Оптические датчики VT1, HL1 и VT2, HL2 работают как ограничители крайних положений ротора двигателя М1. Если ограничение вращения не требуется, то эти оптопары можно не ставить. Но при этом необходимо выводы 14, 15 микроконтроллера припаять к +5В.
В случае необходимости контроля над работой шагового двигателя другими (внешними) устройствами, в схеме предусмотрены специальные выходы на старших пинах порта D микроконтроллера. На выводе PD7 «step» формируется кратковременный импульс прямоугольной формы при каждом шаге двигателя (может пригодиться для внешнего счетчика шагов). Вывод PD6 «rewers» – сигнал реверса двигателя (лог. 0 — вращение вправо, лог. 1 – вращение влево). При обнулении (сбросе) программного счетчика — регистра количества шагов, на выводе PD5 формируется кратковременный импульс «reset». Эти выходы работают и в режиме пропорционального управления.
Управляющая программа для микроконтроллера написана на языке Ассемблер. Файл прошивки прилагается. Кроме этого, необходимо запрограммировать фьюзы: CKSEL0=0, CKSEL1=1, CKSEL2=0, CKSEL3=0, SUT0=0, SUT1=1, SKOPT=1.

Читайте также:  Как улучшить двигатель оки


Печатная плата блока управления изображена на рис. 2. Она изготовлена из одностороннего фольгированного стеклотекстолита размерами 42 × 58 мм. В прикрепленном файле с расширением .lay прилагается рисунок для «лазерно-утюжной» технологии изготовления платы. Расположение элементов схемы на печатной плате приведено на рисунке 3.

После установки микросхемы – стабилизатора DA1, к ней, необходимо прикрутить радиатор площадью не менее 4 см². Собранная конструкция представлена на фото. 1 и фото. 2.


Как уже отмечалось, логические микросхемы SN75452 можно заменить русским аналогом — К155ЛА18. Раньше они использовались в старых пятидюймовых флоппи дисководах вместе с предлагаемым шаговым двигателем.


Предлагаемый блок может быть использован в различных устройствах с электромеханическим приводом. Например, у меня два таких модуля с шаговыми двигателями пропорционально управляют видеокамерой наблюдения с удаленным доступом по двум осям координат. Один мотор поворачивает камеру по оси Х, другой – по оси Y (фото. 3).

Видеоролик о работе девайса:

Источник

AVR Lab устройства на микроконтроллерах AVR

Форум по AVR

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

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

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

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

Рис. 1

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

Читайте также:  Троит двигатель ваз 21093 инжектор в чем причина


рис. 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