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

Теория

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

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

Крутящий момент втягивания

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

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

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

Вытягивающий момент

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

Момент фиксации

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

Звон и резонанс

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

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

жзнак равно1002π2пMчасJр{\ displaystyle f = {\ frac {100} {2 \ pi}} {\ sqrt {\ frac {2pM_ {h}} {J_ {r}}}}}
М ч
Удерживающий момент Н · м
п
Количество пар полюсов
J r
Инерция ротора кг · м²

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

Применение шаговых двигателей. Простые схемы

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

Во-первых, все эти приборы имеют в своём составе блок питания, как правило — импульсный, на несколько напряжений. В основном это выходы с постоянными напряжениями +5, +12 и +24 … 36 вольт с токами до 2 … 3 ампер. Такие блоки питания можно использовать, например, для зарядных устройств, питания светодиодных лент или электроинструмента небольшой мощности. Но в данной статье будут даны примеры использования шаговых двигателей из подобных аппаратов.

Для питания и управления шаговым двигателем, конечно, требуется специальная схема-драйвер, это обеспечит его полную функциональность. Но если вам нужен «просто двигатель» без управления частотой вращения и шагом поворота вала, то вполне можно обойтись простейшей схемой питания с применением конденсатора:

— эта схема предполагает использование двигателей с двумя обмотками и отводами от их середины (всего 6 проводов). Обмотка 1 имеет выводы красного и белого цвета, обмотка 2 — синего и жёлтого. Средние выводы (коричневого цвета) здесь не используются. В зависимости от напряжения питания и мощности двигателя может потребоваться подбор элементов С* и R*.

При использовании такой схемы нельзя будет менять частоту (скорость) вращения, но можно менять его направление — при помощи переключателя S1. Вместо трансформатора и выпрямительного моста в схеме можно использовать как раз «родной» блок питания, который стоял в аппаратуре, где использовался этот двигатель.

Другой вариант использования шагового двигателя — в качестве генератора. При вращении вала такого двигателя на его обмотках наводится напряжение, которое можно использовать, например, для питания низковольтной лампы или светодиодов. В интернете можно найти множество схем-вариантов автономных фонариков с использованием шагового двигателя в качестве генератора энергии. Ниже приводятся их простейшие примеры :

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

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

Конденсатор на выходе служит для сглаживания колебаний напряжения при неравномерной скорости вращения вала двигателя. Также на выходе можно включить аккумулятор (например от сотового телефона), который будет подзаряжаться при вращении вала двигателя . А вращать вал можно любым удобным и подходящим способом — с помощью надетого на него шкива с ручкой, привода от ветряной или гидро-«вертушки» и т. д…

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

Благодарю за уделённое время.

Прошу поставить «палец-вверх», если статья была полезна

Драйвер шагового двигателя

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

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

Шаговый двигатель – двигатель со сложной схемой управления, которому требуется специальное электронное устройство – драйвер шагового двигателя.
Драйвер шагового двигателя получает на входе логические сигналы STEP/DIR, которые, как правило, представлены высоким и низким уровнем опорного напряжения 5 В, и в соответствии с полученными сигналами изменяет ток в обмотках двигателя, заставляя вал поворачиваться в соответствующем направлении на заданный угол. >Сигналы STEP/DIR генерируются ЧПУ-контроллером или персональным компьютером, на котором работает программа управления типа Mach3 или LinuxCNC.

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

Типы (виды) драйверов ШД

Драйверы делятся по способу закачки тока в обмотки на несколько видов:1) Драйверы постоянного напряжения

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

2) Двухуровневые драйверы

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

3) Драйверы с ШИМ.

На текущий момент ШИМ-драйверы шаговых двигателей наиболее популярны, практически все драйверы на рынке – этого типа. Эти драйверы подают на обмотку шагового мотора ШИМ-сигнал очень высокого напряжения, которое отсекается по достижению током необходимого уровня. Величина силы тока, по которой происходит отсечка, задается либо потенциометром, либо DIP-переключателем, иногда эта величина программируется с помощью специального ПО. Эти драйверы достаточно интеллектуальны, и снабжены множеством дополнительных функций, поддерживают разные деления шага, что позволяет увеличить дискретность позиционирования и плавность хода. Однако, ШИМ-драйверы также весьма сильно отличаются друг от друга. Помимо таких характеристик, как питающее напряжение и максимальный ток обмотки, у них отличается частота ШИМ. Лучше, если частота драйвера будет более 20 кГц, и вообще, чем она больше – тем лучше. Частота ниже 20 кГц ухудшает ходовые характеристики двигателей и попадает в слышимый диапазон, шаговые моторы начинают издавать неприятный писк. Драйверы шаговых двигателей вслед за самими двигателями делятся на униполярные и биполярные. Начинающим станкостроителям настоятельно рекомендуем не экспериментировать с приводами, а выбрать те, по которым можно получить максимальный объем технической поддержки, информации и для которых продукты на рынке представлены наиболее широко. Такими являются драйверы биполярных гибридных шаговых двигателей.

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

Количество шагов шагового двигателя.

Подпрограмма №4 – светится третий светодиод. Данная подпрограмма обеспечивает один шаг двигателя при каждом нажатии на кнопку «Право». Кнопка «Лево» в данном случае не задействована. Короче говоря, нажимая каждый раз на кнопку, можно сосчитать количество шагов за один оборот проверяемого двигателя. Алгоритм работы двигателя в данной подпрограмме соответствует алгоритму на скрине 2.

Подпрограмма №5 – светятся первый и третий светодиоды. В этой подпрограмме творится тоже самое, только алгоритм работы двигателя в данной подпрограмме соответствует алгоритму на скрине 3.

Общий вид платы — на фото.

Файл прошивки, схему и рисунок печатной платы можно скачать здесь. Успехов всем. До свидания. К.В.Ю.

Объяснение программы для Arduino

Полный код программы и видео с демонстрацией работы схемы приведены в конце статьи, здесь же мы кратко рассмотрим основные фрагменты кода.

Первым делом скачайте библиотеку для управления шаговым двигателем по следующей ссылке и добавьте ее в Arduino IDE. После этого подключите заголовочный файл этой библиотеки в программе и укажите число шагов для шагового двигателя NEMA 17 – оно равно 200.

Arduino

#include <Stepper.h>
#define STEPS 200

1
2

#include <Stepper.h>
#define STEPS 200

После этого укажем в программе контакты Arduino, к которым подключен модуль драйвера двигателя и определим тип интерфейса для двигателя как Type1 поскольку шаговый двигатель подключен к плате Arduino с помощью модуля драйвера двигателя.

Arduino

Stepper stepper(STEPS, 2, 3);
#define motorInterfaceType 1

1
2

Stepperstepper(STEPS,2,3);

#define motorInterfaceType 1

Далее установим скорость для шагового двигателя с помощью функции stepper.setSpeed. Максимальная скорость двигателя NEMA 17 составляет 4688 RPM (число оборотов в минуту), но если его крутить со скоростью более 1000 RPM, то у него значительно падает крутящий момент.

Arduino

void setup() {
stepper.setSpeed(1000);

1
2

voidsetup(){

stepper.setSpeed(1000);

После этого, в основной функции loop мы будем считывать значения с потенциометра, подключенного к контакту A0. В этой функции мы будем использовать две переменные – potVal и Pval. Если текущее значение (potVal) больше его предыдущего значения (Pval), то мы будем вращать шаговый двигатель на 10 шагов по часовой стрелке, а если меньше — то мы будем вращать шаговый двигатель на 10 шагов против часовой стрелки.

Arduino

potVal = map(analogRead(A0),0,1024,0,500);
if (potVal>Pval)
stepper.step(10);
if (potVal<Pval)
stepper.step(-10);
Pval = potVal;

1
2
3
4
5
6

potVal=map(analogRead(A0),,1024,,500);

if(potVal>Pval)

stepper.step(10);

if(potVal<Pval)

stepper.step(-10);

Pval=potVal;

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

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

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

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

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

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

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

Общие принципы работы шаговых двигателей

Внешний вид шагового двигателя 28-BYJ48 (купить на AliExpress) представлен на следующем рисунке:

Первый вопрос, который напрашивается при взгляде на этот рисунок – почему в отличие от обычного двигателя из этого шагового двигателя выходят 5 проводов различных цветов? Чтобы понять это давайте сначала разберемся с принципами работы шагового двигателя.

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

Как можно видеть из рисунка, двигатель имеет однополярную катушку с 5 выводами. Но фактически это 4 катушки, на которые нужно подавать питание в определенной последовательности. На красные провода необходимо подать +5V, на остальные 4 провода необходимо подать землю чтобы запустить в работу соответствующую катушку. Мы будем использовать плату Arduino чтобы подавать питание на эти катушки в определенной последовательности и тем самым заставлять двигатель вращаться. Более подробно ознакомиться с принципами работы шаговых двигателей можно в статье про подключение шагового двигателя к микроконтроллеру AVR.

Так почему же этот двигатель называется 28-BYJ48? Честно говоря, мы не знаем точного ответа на этот вопрос. Некоторые наиболее важные технические характеристики этого шагового двигателя приведены на следующем рисунке.

На первый взгляд от такого количества характеристик может закружиться голова, но давайте попробуем выделить из них самые важные, те, которые нам понадобятся для дальнейшей работы. Во-первых, мы знаем, что это шаговый двигатель 5V, поэтому необходимо подавать на красный провод 5V. Также мы знаем что это четырехфазный шаговый двигатель поскольку в нем четыре катушки. Передаточное число этого двигателя — 1: 64. Это означает, что вал, который вы видите снаружи, сделает одно полное вращение в том случае, когда двигатель внутри сделает 64 оборота. Это происходит благодаря шестерням, которые включены между двигателем и выходным валом. Эти шестерни помогают в увеличении крутящего момента.

Еще одним важным показателем, который нам следует знать, является угол шага: 5.625°/64. Это значит что когда двигатель сделает последовательность в 8 шагов он будет поворачиваться на 5.625° при каждом шаге и за один полный оборот он сделает 64 шага (5.625*64=360).

Расчет шагов на оборот для шагового двигателя

Важно знать, как рассчитать количество шагов за один оборот для вашего шагового двигателя, потому что только тогда вы можете эффективно его запрограммировать. В Arduino для управления двигателем мы будем использовать 4-шаговую последовательность, поэтому угол шага будет составлять 11.25°

Поскольку изначально он равен 5.625°(приведен в даташите), то для 8 шаговой последовательности получим 11.25° (5.625*2=11.25)

В Arduino для управления двигателем мы будем использовать 4-шаговую последовательность, поэтому угол шага будет составлять 11.25°. Поскольку изначально он равен 5.625°(приведен в даташите), то для 8 шаговой последовательности получим 11.25° (5.625*2=11.25).

Справедлива следующая формула:

Количество шагов за оборот = 360 / угол шага.

В нашем случае 360/11.25 = 32 шага за оборот.

Зачем нужен драйвер мотора для управления шаговым двигателем

Большинство шаговых двигателей будут работать только с помощью модуля драйвера мотора. Это связано с тем, что микроконтроллер (в нашем случае плата Arduino) не может обеспечить достаточный ток на своих контактах ввода/вывода для работы двигателя. Поэтому мы будем использовать внешний драйвер мотора для управления нашим шаговым двигателем — модуль ULN2003 (купить на AliExpress). В сети интернет можно найти рейтинги эффективности различных драйверов мотора, но эти рейтинги будут меняться в зависимости от типа используемого шагового двигателя. Основной принцип, которого следует придерживаться при выборе драйвера мотора – он должен обеспечивать достаточный ток для управления шаговым двигателем.

Итог

Главное преимущество контроллера на базе MC33035 — это простота в использовании. Просто покупаете микросхему, собираете Н-мост, спаиваете всё на плату с небольшой обвязкой — и контроллер готов. Если нужно просто запустить двигатель с ШИМ-сигналом и управлять им — оптимальный вариант.

Контроллер на базе Ардуино — вариант сложнее, понадобится писать логику, обеспечивать дополнительные защиты контроллера. Но для экспериментов, прототипов, дополнительного функционала, использования различных режимов работы двигателя — подходящий вариант. Поэтому я решил пока отложить MC33035 и продолжить работу с Ардуино.

Рейтинг
( Пока оценок нет )
Понравилась статья? Поделиться с друзьями:
Электрик в доме
Добавить комментарий

;-) :| :x :twisted: :smile: :shock: :sad: :roll: :razz: :oops: :o :mrgreen: :lol: :idea: :grin: :evil: :cry: :cool: :arrow: :???: :?: :!: