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

Добавил пользователь Владимир З.
Обновлено: 15.09.2024

Простой контроллер Шагового Двигателя из компьютерного барахла стоимостью ~150 рублей.

Началось мое станкостроение со случайной ссылки на немецкий станок за 2000DM, который на мой взгляд выглядел по детски, однако мог выполнять довольно много занятных функций. В тот момент, меня заинтересовала возможность рисовать платы (это было еще до появления в моей жизни ЛУТ).

В результате протяженных поисков в сети было найдено несколько сайтов посвященных этой проблеме, однако русскоязычных среди них не было ни одного (это было примерно 3 года назад). В общем, в конце концов, я нашел два принтера CM6337 (кстати их выпускал Орловский завод УВМ), откуда и выдрал униполярные шаговые двигатели (Dynasyn 4SHG-023F 39S, аналог ДШИ200-1-1). Параллельно с доставанием принтеров заказал и микросхемы ULN2803A(с буквой А – DIP корпус). Все собрал, запустил. Что получил, а получил дико греющиеся микросхемы ключей, и с трудом вращающийся двигатель. Так как по схеме из Голландии для увеличения тока ключи соединены попарно, то максимальный отдаваемый ток не превышал 1А, в то время как двигателю надо было 2А (кто ж знал что я найду такие прожорливые, как мне тогда показалось, двигатели J ). Кроме того, данные ключи построены по биполярной технологии, для тех кто не в курсе, падение напряжения может быть до 2В (если питание от 5, то фактически половина падает на сопротивлении перехода).

В принципе, для опытов с двигателями от 5” дисководов очень неплохой вариант, можно сделать например плоттер, однако что то более тяжелое чем карандаш (например дремель) ими вряд ли можно тягать.

Решил собрать свою собственную схему из дискретных элементов, благо в одном из принтеров оказалась нетронутой электроника, и я взял оттуда транзисторы КТ829 (Ток до 8А, напряжение до 100В)… Была собрана такая схема…


Рис.1 – Схема драйвера для 4х фазного униполярного двигателя.

Сейчас объясню принцип. При подаче логической “1” на один из выводов (на остальных “0”), например на D0, транзистор открывается и ток течет через одну из катушек двигателя, при этом двигатель отрабатывает один шаг. Далее единица подается на следующий вывод D1, а на D0 единица сбрасывается в ноль. Двигатель отрабатывает сладующий шаг. Если подавать ток сразу в две соседние катушки то реализуется режим полушагов (для моих двигателей с углом поворота 1,8’ получается 400 шагов на оборот).

К общему выводу подсоединяются отводы от середины катушек двигателя (их два если проводов шесть). Очень хорошо теория шаговых двигателей описана тут – Шаговые двигатели. Управление шаговым двигателем., тут же приведена схема контроллера ШД на микроконтроллере AVR фирмы Atmel. Честно говоря, мне показалось похоже на забивание гвоздей часами, однако в ней реализована очень хорошая функция как ШИМ регулирование тока обмоток.

Поняв принцип, несложно написать программу управляющую двигателем через LPT порт. Зачем в этой схеме диоды, а за тем, что нагрузка у нас индуктивная, при возникновении ЭДС самоиндукции она разряжается через диод, при этом исключается пробой транзистора, а следовательно и вывод его из строя. Еще одна деталь схемы – регистр RG (я использовал 555ИР33), используется как шинный формирователь, поскольку ток отдаваемый, например LPT портом мал – можно его элементарно спалить, а следовательно, есть возможность спалить весь компьютер.

Схема примитивна, и собрать такое можно минут за 15-20, если есть все детали. Однако у такого принципа управления есть недостаток – так как формирование задержек при задании скорости вращения задается программой относительно внутренних часов компьютера то работать в многозадачной системе (Win) это все не будет! Будут просто теряться шаги (может быть в Windows и есть таймер, но я не в курсе). Второй недостаток – это нестабилизированный ток обмоток, максимальную мощность из двигателя не выжать. Однако по простоте и надежности этот способ меня устраивает, тем более что для того, что бы не рисковать своим Атлоном 2ГГц, я собрал из барахла 486 тарантас, и кроме ДОСа там, в принципе мало, что можно поставить нормальное.

Описанная выше схема работала и в принципе неплоха, но я решил, что можно несколько переделать схему. Применить MOSFETJ ). транзисторы (полевые), выигрыш в том, что можно коммутировать огромные токи (до 75 – 100А), при солидных для шаговых двигателей напряжениях (до 30В), и при этом детали схемы практически не греются, ну если не считать предельных значений (хотел бы я видеть тот шаговый двигатель который съест ток 100А

Как всегда в России возник вопрос, где взять детали. У меня возникла идея – извлечь транзисторы из горелых материнских плат, благо, например Атлоны кушают порядочно и транзисторы там стоят огого. Дал объявление в ФИДО, и получил предложение забрать 3 мат. платы за 100 рублей. Прикинув что в магазине за эти деньги можно от силы купить 3 транзистора, забрал, расковырял и о чудо, хотя они все и были дохлыми, ни один транзистор в цепи питания процессора не пострадал. Так я получил пару десятков полевых транзисторов за сто рублей. Схема, которая получилась в результате, представлена ниже.

Рис. 2 – Тоже на полевых транзисторах

Отличий в этой схеме немного, в частности была применена микросхема нормального буфера 75LS245 (выпаяна над газовой плитой из 286 материнской платы J ). Диоды можно поставить любые, главное, что бы их максимальное напряжение не было меньше максимального напряжения питания, а предельный ток не меньше тока питания одной фазы. Я поставил диоды КД213A, это 10А и 200В. Возможно это излишне для моих 2х амперных двигателей, однако покупать детали не было смысла, да и запас по току думается лишним не будет. Резисторы служат для ограничения тока перезарядки емкости затворов.

Ниже приводится печатная плата контроллера построенного по такой схеме.


Рис. 3 – Печатная плата.

Печатная плата разведена для поверхностного монтажа на одностороннем текстолите (лень мне что то дырочки сверлить сталоJ). Микросхемы в DIP корпусах паяются с подогнутыми ножками, резисторы SMD с тех же материнок. Файл с разводкой в Sprint-Layout 4.0 прилагается. Можно было бы запаять на плату и разъемы, но лень как говорится – двигатель прогресса, да и при отладке железа удобнее было запаять провода подлиннее.

Еще необходимо отметить, что схема снабжена тремя концевиками, на плате справа снизу шесть контактов вертикально, радом с ними посадочные места под три резистора, каждый соединяет один вывод выключателей с +5В. Схема концевиков:


Рис. 4 – Схема концевиков.

Вот так это выглядело у меня в процессе наладки системы:

В результате на представленный контроллер я потратил не более 150 рублей: 100 рублей за материнские платы (при желании можно вообще бесплатно достать) + кусок текстолита, припой и банка хлорного железа в сумме тянут на ~50 рублей, причем хлорного железа останется потом еще много. Думаю считать провода и разъемы смысла не имеет. (Кстати разъем питания отпилен от старого винчестера.)

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

Если бы на Орловских заводах проточить отдельные детали не стоило бы так дорого, то мне бы конечно проще было бы вычертить все детали в CAD’е, со всеми квалитетами и шероховатостями и отдать на съедение рабочим. Однако знакомых токарей нет… Да и руками как то знаете ли интереснее…

Спасибо огромное! только вопрос.. первая из схем работает независимо как я понял, но вот там переменный резистор на 10k это для изменения частоты вращения?

Да. U1C, U1B и U1D представляют собой задающий генератор.

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

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

_________________
Выслушай и противную сторону, даже если она и противна

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

Ошибаешься, униполярный - со средним выводом, биполярный - без.

tarior, униполярный - средние выводы соединены внутри двигателя.

_________________
Electronikus mente prius et oculis agat, quam armata manu.

Точно, ошибся Владимир К. прав.

А вот - тот драйвер, о котором я говорил:

_________________
Выслушай и противную сторону, даже если она и противна

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

Блок управления шаговым двигателем

Шаговые двигатели достаточно распространены в устройствах, в которых необходимо добиться точного перемещения механизмов. Существует очень много типов шаговых двигателей, но самыми простыми в плане управления являются 2-х фазные униполярные двигатели. Этот тип двигателей имеет две независимые обмотки с выводами от середины (см. Рис.1). Их устанавливают в такие аппараты, как принтер, копир, дисковод и т.д.

Блок управления шаговым двигателем

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

На рисунке 2 представлена схема управления шаговым двигателем.

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


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

  1. Можно определить количество шагов.
  2. Определить один из двух алгоритмов работы двигателя.
  3. Опробовать работу двигателя в полушаговом режиме.
  4. Можно опробовать работу в полношаговом режиме.
    Еще раз повторюсь, что разновидностей шаговых двигателей много и данный контроллер подойдет не для всех.

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

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

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

Полношаговый алгоритм работы шагового двигателя

Подпрограмма №2 – светится второй светодиод. В этой подпрограмме двигатель будет работать по полно шаговому алгоритму, показанному на скрине 2.

Полношаговый алгоритм работы шагового двигателя

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

Полношаговый алгоритм работы шагового двигателя

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

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

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

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

Файл прошивки, схему и рисунок печатной платы можно скачать по ссылке ниже.

В этой статье мы поговорим о шаговых двигателях в проектах Ардуино на примере очень популярной модели 28BYJ-48. Так же как и сервоприводы, шаговые моторы являются крайне важным элементом автоматизированных систем и робототехники. Их можно найти во многих устройствах рядом: от CD-привода до 3D-принтера или робота-манипулятора. В этой статье вы найдете описание схемы работы шаговых двигателей, пример подключения к Arduino с помощью драйверов на базе ULN2003 и примеры скетчей с использованием стандартной библиотеки Stepper.

Шаговый двигатель – принцип работы

Схема шагового двигателя

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

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

Основные виды шаговых моторов:

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

Где купить шаговый двигатель

Самые простые двигатели Варианты на сайте AliExpress:

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

Драйвер – это устройство, которое связывает контроллер и шаговый двигатель. Для управления биполярным шаговым двигателем чаще всего используется драйверы L298N и ULN2003.

Работа двигателя в биполярном режиме имеет несколько преимуществ:

  • Увеличение крутящего момента на 40% по сравнению с униполярными двигателями;
  • Возможность применения двигателей с любой конфигурацией фазной обмотки.

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

Драйвер шагового двигателя на базе L298N

Этот мостовой драйвер управляет двигателем с током до 2 А и питанием до 46В. Модуль на основе драйвера L298N состоит из микросхемы L298N, системы охлаждения, клеммных колодок, разъемов для подключения сигналов, стабилизатора напряжения и защитных диодов.

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

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

Описание драйвера шаговых двигателей UNL2003

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

Другие драйвера

Существует другой вид драйверов – STEP/DIR драйверы. Это аппаратные модули, которые работают по протоколу STEP/DIR для связи с микроконтроллером. STEP/DIR драйверы расширяют возможности:

  • Они позволяют стабилизировать фазные токи;
  • Возможность установки микрошагового режима;
  • Обеспечение защиты ключа от замыкания;
  • Защита от перегрева;
  • Оптоизоляция сигнала управления, высокая защищенность от помех.

В STEP/DIR драйверах используется 3 сигнала:

  • STEP – импульс, который инициирует поворот на шаг/часть шага в зависимости от режима. От частоты следования импульсов будет определяться скорость вращения двигателя.
  • DIR – сигнал, который задает направление вращения. Обычно при подаче высокого сигнала производится вращение по часовой стрелке. Этот тип сигнала формируется перед импульсом STEP.
  • ENABLE – разрешение/запрет работы драйвера. С помощью этого сигнала можно остановить работу двигателя в режиме без тока удержания.

Одним из самых недорогих STEP/DIR драйверов является модуль TB6560-V2. Этот драйвер обеспечивает все необходимые функции и режимы.

Подключение шагового двигателя к Ардуино

Подключение будет рассмотрено на примере униполярного двигателя 28BYj-48 и драйверов L298 и ULN2003. В качестве платы будет использоваться Arduino Uno.

Подключение шагового двигателя к Ардуино

Еще один вариант схемы с использованием L298:

Подключение шагового двигателя к Ардуино на базе L298

Подключение шагового двигателя

Принципиальная схема подключения.

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

Еще одна схема подключения биполярного шагового двигателя Nema17 через драйвер L298 выглядит следующим образом.

Подключение биполярного двигателя

Обзор основных моделей шаговых двигателей для ардуино

Nema 17 – биполярный шаговый двигатель, который чаще всего используется в 3D принтерах и ЧПУ станках. Серия 170хHSхххА мотора является универсальной.

Nema-17

Основные характеристики двигателя:

  • Угловой шаг 1,8°, то есть на 1 оборот приходится 200 шагов;
  • Двигатель – двухфазный;
  • Рабочие температуры от -20С до 85С;
  • Номинальный ток 1,7А;
  • Момент удержания 2,8 кг х см;
  • Оснащен фланцем 42 мм для легкого и качественного монтажа;
  • Высокий крутящий момент – 5,5 кг х см.

28BYJ-48 – униполярный шаговый двигатель. Используется в небольших проектах роботов, сервоприводных устройствах, радиоуправляемых приборах.

  • Номинальное питание – 5В;
  • 4-х фазный двигатель, 5 проводов;
  • Число шагов: 64;
  • Угол шага 5,625°;
  • Скорость вращения: 15 оборотов в секунду
  • Крутящий момент 450 г/сантиметр;
  • Сопротивление постоянного тока 50O ± 7% (25 ?).

Описание библиотеки для работы с шаговым двигателем

В среде разработки Ардуино IDE существует стандартная библиотека Strepper.h для написания программ шаговых двигателей. Основные функции в этой библиотеке:

  • Stepper(количество шагов, номера контактов). Эта функция создает объект Stepper, которая соответствует подключенному к плате Ардуино двигателю. Аргумент – контакты на плате, к которым подключается двигатель, и количество шагов, которые совершаются для полного оборота вокруг своей оси. Информацию о количестве шагов можно посмотреть в документации к мотору. Вместо количества шагов может быть указан угол, который составляет один шаг. Для определения числа шагов, нужно разделить 360 градусов на это число.
  • Set Speed(long rpms) – функция, в которой указывается скорость вращения. Аргументом является положительное целое число, в котором указано количество оборотов в минуту. Задается после функции Step().
  • Step(Steps) –поворот на указанное количество шагов. Аргументом может быть либо положительное число – поворот двигателя по часовой стрелке, либо отрицательное – против часовой стрелки.

Пример скетча для управления

В наборе примеров библиотеки Stepper.h существует программа stepper_oneRevolution, в которой задаются все параметры для шагового двигателя – количество шагов, скорость, поворот.

Заключение

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


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

Схема драйвера шагового двигателя

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

Схема драйвера шагового двигателя не содержит дорогих деталей и программируемых контроллеров. Работа может регулироваться в широком диапазоне с помощью потенциометра PR1. Есть изменение направления вращения двигателя. Катушки шагового двигателя переключаются с помощью четырех МОП-транзисторов T1-T4. Применение в блоке транзисторов большой мощности типа BUZ10 позволит подключить двигатели даже с очень большим током.

Особенности схемы и детали

  • управление четырехфазным шаговым двигателем
  • плавная регулировка скорости вращения в пределах всего диапазона
  • изменение направления вращения мотора
  • возможная остановка двигателя
  • блок питания 12 В постоянного тока

Детали – IC1: 4070, IC2: 4093, IC3: 4027, T1-T4: BUZ10, BUZ11

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

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

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

Блок, собранный из проверенных компонентов, не требует настройки и запускается сразу после подачи питания. Со значениями элементов, указанными на схеме, позволяет работать двигателю 5,25” и выполняет изменение скорости вращения в интервале от 40 об./мин. до 5 об./мин.

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

Биполярный контроллер шаговых двигателей

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

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

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

Принципиальную схему можно разделить на следующие блоки:

  1. последовательный чип, генерирующий битовые строки,
  2. локальный генератор тактового сигнала,
  3. схема управления питанием катушек,
  4. выходные буферы Н-моста,
  5. схемы защиты входных сигналов управления.

Контроллер должен питаться постоянным напряжением, хорошо отфильтрованным, желательно стабилизированным.

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

Теперь пару слов про H-мосты, которые будут работать с этим драйвером. Они должны принимать на своих входах все возможные логические состояния (00, 01, 10, 11), без риска какого-либо повреждения. Просто в некоторых конфигурациях мостов построенных из дискретных элементов, запрещается одновременное включение двух входов – их естественно нельзя использовать с этим контроллером. Мосты выполненные в виде интегральных микросхем (например L293, L298), устойчивы к этому.

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

И в завершение третий вариант контроллера, на микросхемах STK672-440, имеющий все необходимые защиты и функции смотрите по ссылке.

Читайте также: