Андрей Смирнов
Время чтения: ~16 мин.
Просмотров: 44

Драйвер шагового двигателя — устройство, виды и возможности

📆13.03.16 🙋basilevscom 👀50 304 💬12 1457870999_photo-main.jpgПри конструировании очередного станка с ЧПУ, а попросту 3-х осевого фрезерного-сверлильного станочка для печатных плат и мелких фрезерных работ, у меня появилось неугомонное желание разложить всё «по полочкам». Многие скажут, что тема не нова, существует множество проектов, множество технических и программных решений. Но, плавая в этом море информации, я постарался убрать всю «воду» и получить «сухой остаток». Вот что из этого получилось…

Содержание / Contents

Сразу оговорюсь — все, что здесь далее написано, лишь мои личные выводы и не претендует на абсолютную истину. Истина рождается в споре, так что если уважаемые читатели в чем-то со мной не согласны, давайте это обсудим! Задача построения станка обычно сводится к трем подзадачам — механика, электроника, программное обеспечение. Видимо и статьи придется писать тоже три.Поскольку у нас журнал всё-таки практической электроники, начну с электроники и чуть-чуть с механики!

↑ Привод

Нужно двигать собственно фрезер в 3-х направлениях — XYZ, значит нужно 3 привода — 3 мотора с передачей вращения вала двигателя в линейное перемещение.

↑ Двигатель (мотор)

В качестве двигателя для привода определил шаговый двигатель (ШД)

↑ Выбираем шаговый двигатель

2 обмотки, с минимальным током, минимальной индуктивностью и максимальным моментом — то есть максимально мощный и экономичный двигатель. Противоречивые требования. Малый ток — значит большое сопротивление, значит много витков провода обмотки двигателя, значит большая индуктивность. А большой момент — это большой ток и много витков. Выбираем в пользу большего тока и меньшей индуктивности. А момент надо выбирать исходя из нагрузки, но об этом потом. Характеристики некоторых двигателей приведены в таблице: 1456680208_step_motors.jpgДля небольшого станка с рабочим пространством размером 300×300х100 мм и легким фрезером вполне сгодятся двигатели с крутящим моментом 0,3Нм и выше. Оптимальным является ток от 1,5 до 2,5 Ампер, вполне подойдет FL42STH38-1684

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

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

↑ Богатство выбора

На сегодняшний день есть достаточно много различных микросхем и достаточно много уже готовых плат и модулей драйверов ШД. Можно купить готовый, а можно «изобретать велосипед», тут каждый решает по-своему.1456680155_a4988_drv8825.jpgИз готовых — наиболее распространённые и недорогие драйверы на микросхемах Allegro A4988 (до 2А), Texas Instruments DRV8825 (до 2,5А). Поскольку модули изначально разрабатывались для использования в 3D принтерах типа Rep-rap проекта Arduino, они не являются законченными модулями (например, им нужно еще питание логики (+5V), которое подается с так называемой рампы (Ramp). Еще есть решения на DRV8811 (до 1,9 А), A3982 (до 2 А), A3977 (до 2,5 А), DRV8818 (до 2,5 А) DRV8825 (до 2,5 А), Toshiba TB6560 (до 3 А) и другие.Поскольку мне интересно что-то сделать самому, плюс появилась возможность «попробовать на вкус» микросхемы Allegro A3982 и A3977, решил сделать пару драйверов самостоятельно. Готовые решения на A4988 не понравились, прежде всего, из-за миниатюризации размеров печатной платы в ущерб хорошему охлаждению. Типовое сопротивление открытых транзисторов у A4388 при токе 1,5А 0,32+0,43 Ом, плюс 0,1-0,22 Ома «измерительный» резистор — получается около 0,85 Ом. А таких каналов два, и хотя и работают они импульсно, но 2-3 Ватта тепла надо рассеивать. Ну не верю я в многослойную плату и малюсенький радиатор охлаждения — в даташите нарисована плата гораздо больших размеров. Провода мотора нужно сделать короткими, драйвер устанавливать рядом с двигателем. Существует 2 технических решения в звукотехнике: длинный сигнальный кабель к усилителю + короткие провода к акустической системе, или короткий сигнальный кабель к усилителю + длинные провода, а акустической системе. Оба решения имеют свои плюсы и минусы. С моторами — так же. Я выбрал длинные провода управления и короткие провода к мотору.Управляющие сигналы — «шаг» (step), «направление» (dir), «включение» (enable), индикация состояния сигналов управления. Некоторые схемы не используют сигнал «Enable», но это приводит в режиме простоя к ненужному нагреву и микросхемы и двигателя.Одно питание 12-24 вольта, источник питания логики (+5B) — на плате. Размеры платы — достаточные для хорошего охлаждения, двухсторонняя печать с большой областью «меди», возможность приклеить на микросхему радиатор (применяемой для охлаждения памяти видеокарт).

↑ Драйвер ШД на микросхеме Allegro A3982

Основные характеристики и блок-схема: Напряжение питание силовое: 8…35 В Напряжение питание логики: 3,3…5 В Выходной ток (максимальный, зависит от режима и охлаждения): ±2 А Типовое сопротивление открытых транзисторов (при токе 1,5А): 0,33+0,37 Ом

↑ Драйвер ШД на микросхеме Allegro A3977

Основные характеристики и блок-схема: Напряжение питание силовое: 8…35 В Напряжение питание логики: 3,3…5 В Выходной ток (максимальный, зависит от режима и охлаждения): ±2,5 А Типовое сопротивление открытых транзисторов (при токе 2,5А): 0,33+0,45 Ом

↑ Схема и прототип

Проектировал в среде DipTrace. Драйвер A3982 включен по схеме из документации производителя. Включен режим «полушаг». Дополнительно для надежной работы сигналов управления и индикации применил микросхему логики 74НС14 (с триггерами Шмитта). Можно было сделать гальвано-развязку на оптронах, но для маленького станка я решил ее не делать. Схема на A3977 отличается только дополнительными джамперами режима шага и более мощным разъемом питания, пока в «железе» не реализована.

↑ Печатная плата

Процесс изготовления — ЛУТ, двухсторонняя. Габариты 37×37 мм, крепеж — как у двигателей, 31×31 мм. Для сравнения — слева мое творчество, справа драйвер на A4988.

↑ Работа

Все заработало сразу, наладки не требовалось. Температуру корпуса микросхемы мерил пирометром — без радиатора она достигала 90-95 градусов (при токе обмоток 1,6А) — мне это не понравилось. С радиатором — 55-60 градусов — куда лучше! Вообще плата вся теплая — около 35 градусов.

↑ Файлы

В архиве схема и плата в формате DipTracea3982.7z 🕗 28/02/16 ⚖️ 44,22 Kb ⇣ 64Здравствуй, читатель! Меня зовут Игорь, мне 45, я сибиряк и заядлый электронщик-любитель. Я придумал, создал и содержу этот замечательный сайт с 2006 года.Уже более 10 лет наш журнал существует только на мои средства. Хорош! Халява кончилась. Хочешь файлы и полезные статьи — помоги мне!Пожертвовать на журнал Датагор и др. способы получения доступа. — Спасибо за внимание! Игорь Котов, главный редактор журнала «Датагор» Даташит на микросхему Allegro A3982a3982.pdf 🕗 28/02/16 ⚖️ 303,14 Kb ⇣ 50Здравствуй, читатель! Меня зовут Игорь, мне 45, я сибиряк и заядлый электронщик-любитель. Я придумал, создал и содержу этот замечательный сайт с 2006 года.Уже более 10 лет наш журнал существует только на мои средства. Хорош! Халява кончилась. Хочешь файлы и полезные статьи — помоги мне!Пожертвовать на журнал Датагор и др. способы получения доступа. — Спасибо за внимание! Игорь Котов, главный редактор журнала «Датагор» Антон (basilevscom)Россия, Санкт-ПетербургСписок всех статейПрофиль basilevscomО себе автор ничего не сообщил.

Читательское голосование

Статью одобрили 123 читателя.

Для участия в голосовании зарегистрируйтесь и войдите на сайт с вашими логином и паролем.

Поделись с друзьями!

Связанные материалы

Atmel U211B — контроллер оборотов двигателя от стиралки для домашнего станка… Моя новая датагорская статья посвящена теме о превращении электродвигателя от стиральной машины в… Домашний CNC. Часть 2. Механика… При конструировании очередного станка с ЧПУ, а попросту 3-х осевого фрезерного-сверлильного… Сверлильный станок для печатных плат на базе механизмов дисковых приводов… Сейчас аппаратура быстро устаревает. Всё, что остаётся не у дел, надо снова пускать в дело!… Намоточный станок с проводоукладчиком… Давно была идея о создании намоточного станка с проводоукладчиком. На просторах Интернета много… Руководство по созданию фрезерного CNC ЧПУ станка. Глава 2. Рама и механика… Всех приветствую! Судя по количеству просмотров первой части статьи, тема ЧПУ людям не… Руководство по созданию фрезерного CNC ЧПУ станка. Глава 1. Электроника станка… Всем доброго времени суток! А вот и я с новой частью своего рассказа о ЧПУ — станке. Когда начинал… Фанерный робот. Мой первый в жизни ЧПУ-станок из подножных материалов… Приветствую всех земляков Датагорцев! Планировал написать очередную статью конечно же о новом… Станок для сверления печатных плат из CD-привода TEAC… Прочитав статьи о достижениях форумчан в области станкостроения (молодцы, ребята!) с упоминанием… Как я сделал станочек для намотки трансформаторов, простой и точный… Прошло почти два года после моего вселения в наш Дата-город. Пришло время отсчитаться о проделанной… Управление шаговым двигателем с ПК… Драйвер для шагового двигателя, который управляется с персонального компьютера. Привет всем! Решил… Программируемые роботы. Дж. Вильямс… Программируемые роботы. Дж. Вильямс Год: 2006 Страниц: 240 Формат: DjVu Размер: 6.39 mb Качество:… Электроника шаг за шагом: Практическая энциклопедия юного радиолюбителя. Р. А.Сворень… Электроника шаг за шагом: Практическая энциклопедия юного радиолюбителя. Рудольф Анатольевич…

Общаемся по статье 💬

«Домашний CNC. Часть 1. Драйвер шагового двигателя для мини-станка с ЧПУ»

Комментарии, вопросы, ответы, дополнения, отзывы

  В этой статье я опишу весь цикл изготовления драйвера шагового электромотора для экспериментов. Это не конечный вариант, он рассчитан на управление одним электромотором и необходим только для исследовательских работ, схема конечного драйвера шагового двигателя будет представлена в отдельной статье.  Для того чтобы изготовить контроллер шагового двигателя, необходимо понять принцип работы самих шаговый электрических машин и чем они отличается от других типов электромоторов. А разновидностей электрических машин существует огромное множество: постоянного тока, переменного тока. Электродвигатели переменного тока делятся на синхронные и асинхронные. Описывать каждый тип электродвигателей я не стану так-как это выходит за рамки данной статьи, скажу лишь что каждый тип двигателя имеет свои преимущества и недостатки. А что же такое шаговый электродвигатель и как им управлять?   Шаговый электродвигатель — это синхронный бесщёточный электродвигатель с несколькими обмотками (обычно с четырьмя), в котором ток, подаваемый в одну из обмоток статора, вызывает фиксацию ротора. Последовательная активация обмоток двигателя вызывает дискретные угловые перемещения (шаги) ротора. Принципиальная электрическая схема шагового мотора дает представление о его устройстве.  А на этой картинке показана таблица истинности и диаграмма работы шаговика в полношаговом режиме. Существуют еще и другие режимы работы шаговых двигателей (полушаговый, микрошаговый и др.)Получается если повторять эту последовательность сигналов ABCD можно вращать ротор электромотора в одну сторону.    А как вращать ротор в другую сторону? Да очень просто, нужно изменить последовательность сигналов с ABCD на DCBA.    А как поворачивать ротор на конкретный заданный угол, например 30 градусов? У каждой модели шагового электромотора есть такой параметр как число шагов. У шаговиков которые я вытащил из матричных принтеров этот параметр 200 и 52, т.е. чтобы совершить полный оборот 360 градусов одним двигателям нужно пройти 200 шагов а другим 52. Получается чтобы повернуть ротор на угол 30 градусов, нужно пройти:  -в первом случае 30:(360:200)=16,666… (шагов) можно округлить до 17 шагов;  -во втором случае 30:(360:52)=4,33… (шага), можно округлить до 4 шагов.  Как видите есть достаточно большая погрешность, можно сделать вывод что чем больше шагов у мотора тем меньше погрешность. Погрешность можно уменьшать если использовать полушаговый или микрошаговый режим работы или механическим способом — использовать понижающий редуктор в этом случае страдает скорость движения.  Как управлять скоростью вращения ротора? Достаточно изменить длительность импульсов подаваемых на входы ABCD, чем длиннее импульсы по оси времени, тем меньше скорость вращения ротора. Полагаю этой информации будет достаточно чтобы иметь теоретическое представление о работе шаговых электромоторов, все остальные знания можно будет получить экспериментируя.  И так перейдем к схемотехнике. Как работать с шаговым двигателем мы разобрались, осталось подключить его к Arduino и написать управляющую программу. К сожалению напрямую подключить обмотки мотора к выходам нашего микроконтроллера невозможно по одной простой причине — нехватка мощности. Любой электромотор пропускает через свои обмотки достаточно большой ток, а к микроконтроллеру можно подключить нагрузку не более 40 mA (параметры ArduinoMega 2560). Что же делать если есть необходимость управлять нагрузкой например 10A да еще и напряжением 220В? Эту проблему можно решить если между микроконтроллером и шаговым двигателем интегрировать силовую электрическую схему, тогда можно будет управлять хоть трехфазным электромотором который открывает многотонный люк в ракетную шахту :-). В нашем случае люк в ракетную шахту открывать не нужно, нам нужно всего лишь заставить работать шаговый мотор и в этом нам поможет драйвер шагового двигателя. Можно конечно купить готовые решения, на рынке их очень много, но я буду делать свой собственный драйвер.  Для этого мне понадобятся силовые ключевые полевые транзисторы Mosfet, как я уже говорил эти транзисторы идеально подходят для сопряжения Arduino с любыми нагрузками.   На рисунке ниже представлена электрическая принципиальная схема контроллера шагового двигателя.  Итак наш драйвер шагового двигателя готов! Теперь переходим к самому интересному к практическим экспериментам. Припаиваем все провода подключаем источник питания и пишем управляющую программу для Arduino.   Среда разработки Arduino богата на различные библиотеки, для работы с шаговым двигателем предусмотрена специальная библиотека Stepper.h, ее мы и будем использовать. Как пользоваться средой разработки Arduino и описывать синтаксис языка программирования я не стану, эту информацию вы можете посмотреть на сайте http://www.arduino.cc/, там же описание всех библиотек с примерами в том числе и описание Stepper.h.Листинг программы:  Данная управляющая программа заставляет делать один полный оборот вала шагового двигателя, после перерыва длительностью в одну секунду, повторяется до бесконечности. Можно поэкспериментировать со скоростью вращения, направлением вращения а также углами поворотов.    Драйвер шагового двигателя (версия 2)

Содержание

</span>

  • Обзор
  • Технические характеристики модуля
  • Назначение контактов драйвера
  • Подключение драйвера к Arduino
  • Пример использования
  • Часто задаваемые вопросы FAQ

Обзор драйвера A4988

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

  • Высокая точность позиционирования и повторяемости — качественные ШД имеют точность не хуже 2,5 % от величины шага, при этом данная ошибка не накапливается при последующих шагах;
  • Шаговый двигатель может быстро стартовать, останавливаться и выполнять реверс;
  • Четкая взаимосвязь угла поворота ротора от количества входных импульсов (в штатных режимах работы) позволяет выполнять позиционирование без применения обратной связи;
  • Шаговые двигатели обеспечивают получение сверхнизких скоростей вращения вала без использования редуктора;
  • Шаговые двигатели работают в широком диапазоне скоростей, поскольку. скорость напрямую зависит от количества входных импульсов.

Шаговые двигатели применяются там, где требуется высокая точность перемещений. Примеры использования – принтеры, факсы и копировальные машины, станки с ЧПУ, 3D-принтеры. Для управления шаговыми двигателями используют специальные устройства – драйверы шаговых двигателей. Популярный драйвер шагового двигателя А4988 (рис. 1) работает от напряжения 8 — 35 В и может обеспечить ток до 1 А на фазу без радиатора (и до 2 A с радиатором). Модуль A4988 имеет защиту от перегрузки и перегрева. Одним из параметров шаговых двигателей является количество шагов на один оборот 360°. Например, для шаговых двигателей Nema17 это 200 шагов на оборот, т.е 1 шаг равен 1.8°. Драйвер A4988 позволяет увеличить это значение за счёт возможности управления промежуточными шагами и имеет пять режимов микрошага (1(полный), 1/2, 1/4, 1/8 и 1/16).

A4988-Drajver-shagovogo-dvigatelya.jpg

Рисунок 1. Драйвер биполярных двигателей A4988

Технические характеристики A4988

  • напряжения питания: 8-35 В
  • режим микрошага: 1, 1/2, 1/4, 1/8, 1/16
  • напряжение логики: 3-5.5 В
  • защита от перегрева
  • максимальный ток на фазу: — 1 А без радиатора; — 2 А с радиатором
  • размер: 20 х 15 мм
  • без радиатора: 2 г

Назначение контактов драйвера A4988

  • ENABLE – включение/выключение драйвера
  • MS1, MS2, MS3 – контакты для установки микрошага
  • RESET — cброс микросхемы
  • STEP — генерация импульсов для движения двигателей (каждый импульс – шаг), можно регулировать скорость двигателя
  • DIR – установка направление вращения
  • VMOT – питание для двигателя (8 – 35 В)
  • GND – общий
  • 2B, 2A, 1A, 1B – для подключения обмоток двигателя
  • VDD – питание микросхемы (3.5 –5В)

driver-a4988-chema.png

Рисунок 2. Выводы драйвера A4988

Значение микрошага устанавливается комбинацией сигналов на входах MS1, MS2, и MS3. Есть пять вариантов дробления шага (см. с таблицу 1).

MS1 MS1 MS1 Дробление шага
1
1 1/2
1 1/4
1 1 1/8
1 1 1 1/16

Таблица 1. Комбинация значений для выбора микрошага

Для работы в режиме микрошага необходим слабый ток. На модуле A4988 поддерживает тока можно ограничить находящимся на плате потенциометром. Драйвер очень чувствителен к скачкам напряжения по питанию двигателя, поэтому производитель рекомендует устанавливать электролитический конденсатор большой емкости по питанию VMOT для сглаживания скачков. Внимание ! — Подключение или отключение шагового двигателя при включённом драйвере может привести выходу двигателя из строя!!!

Подключение драйвера к Arduino

Skhema-podklyucheniya-A4988-Arduino.jpg

Рисунок 3. Схема подключения A4988 к плате Arduino

Схема подключения драйвера A4988 для управления биполярным шаговым двигателем показана на рисунке 3. Вывод RESET подключен к выводу SLEEP, чтобы на нем был высокий уровень HIGH. Загрузим на плату Arduino скетч из листинга 1, который управляет движением биполярного шагового двигателя с постоянной скоростью на один оборот в одну сторону, затем в другую, и далее в цикле. Листинг 1

// пины для подключения контактов STEP, DIR  #define PIN_STEP 3  #define PIN_DIR 2    // количество шагов на 1 оборот  #define STEP_ROUND 200    // скорость двигателя  #define SPEED 10    void setup() {  // режим для STEP и DIR как OUTPUT  pinMode(PIN_STEP, OUTPUT);  pinMode(PIN_DIR, OUTPUT);  // начальные значения  digitalWrite(PIN_STEP, 1);  digitalWrite(PIN_DIR, 0);  }    void loop() {  // направление вращения  digitalWrite(PIN_DIR, HIGH);  // сделать 1 оборот  for(int j = 0; j < STEP_ROUND; j++) {  digitalWrite(PIN_STEP, HIGH);  delay(SPEED);  digitalWrite(PIN_STEP, LOW);  delay(SPEED);  }  // изменить направление вращения  digitalWrite(PIN_DIR, HIGH);  // сделать 1 оборот  for(int j = 0; j < STEP_ROUND; j++) {  digitalWrite(PIN_STEP, HIGH);  delay(SPEED);  digitalWrite(PIN_STEP, LOW);  delay(SPEED);  }  }

Если после загрузки скетча не происходит движения двигателя, проверьте правильность подключения обмоток к выводам драйвера A4988. К выводам 2B и 2A (1A и 1B) подключаются провода двигателя, которые «прозваниваются» тестером.

Пример использования

В качестве примера использования рассмотрим управление дроблением шага и направлением вращения шагового двигателя с платы Arduino. Нам потребуются следующие компоненты:

  • Плата Arduino Uno -1;
  • Драйвер A4988 — 1;
  • Шаговый двигатель NEMA17 — 1;
  • Потенциометр 10 кОм — 1;
  • Кнопка — 1;
  • Переключатель 2-х позиционный — 1;
  • Резистор 10 кОм – 3;
  • Провода MF — 20
  • Соединение деталей по схеме соединений на рис. 4.

Skhema-podklyucheniya-upravleniya-skorostyu.jpg

Рисунок 4. Схема подключения для управления скоростью и направлением движения

Приступим к написанию скетча. Нажатие на кнопку включает/выключает двигатель, подавая сигнал LOW/HIGH на вход ENABLE драйвера A4988. С помощью переключателя выбираем направление вращения двигателя (сигнал с переключателя подается напрямую на вход DIR драйвера A4988). C помощью потенциометра мы выбираем один из режимов микрошага. Содержимое скетча представлено в листинге 2. двигателя с постоянной скоростью на один оборот в одну сторону, затем в другую, и далее в цикле. Листинг 2

// пины для подключения контактов STEP, DIR  const int STEP 3  int DIR 2  // для регулировки скорости - пин потенциометра  #define POT A0  // для кнопки  #define BUTTON 9  // для включения/выключения  #define EN 8    // количество шагов на 1 оборот  #define ROUND 200    // скорость двигателя  #define SPEED 10    // массив пинов для MS1,MS2,MS3  int pins_steps[]={7,6,5};  int steps[5][3]={  {0,0,0}, // 1  {1,0,0}, // 1/2  {0,1,0}, // 1/4  {1,1,0}, // 1/8  {1,1,1} // 1/16  };    // для кнопки  int prevB=0;  int tekB=0;    boolean movement=false;    void setup() {  // режим для выводов STEP и DIR как  pinModeSTEP, OUTPUT);  pinMode(DIR, OUTPUT);  // начальные значения  digitalWrite(STEP, 1);  digitalWrite(DIR, 0);  // режим для enable  pinMode(EN, OUTPUT);  // не разрешать  digitalWrite(EN, 1);  // для MS1,MS2,MS3  for(int i=0;ii++) {  pinMode(pins_steps[i], OUTPUT);  }  }    void loop() {  // получить режим микрошага  digitalWrite(DIR, 1);  int mode=map(analogRead(POT),0,1024,0,5);  // установить  for(int i=0;ii++) {  digitalWrite(pins_steps[i], steps[mode][i]);  }  // сделать 1 оборот  if(movement==true) {  digitalWrite(STEP, 1);  delay(SPEED);  digitalWrite(STEP, 0);  delay(SPEED);  }  // проверка нажатия кнопки  tekB = debounce(prevB, BUTTON);  if (prevB == 0 && tekB == 1) {  movement=!movement;  digitalWrite(EN,!movement);  }  prevB = tekB;  }  // проверка на дребезг  int debounce(int prev,int pin) {  int tek = digitalRead(pin);  if (prev != tek) {  delay(5);  tek = digitalRead(pin);  return tek;  }  }

Часто задаваемые вопросы FAQ

Что делать, если шаговый двигатель не движется?

  1. Проверьте правильность подключения драйвера к плате Arduino. 
  2. Проверьте правильность подключения проводов двигателя к выводам A1,A2,B1,B2.
  3. Может быть недостаточной мощность блока питания двигателя.

Используемые источники:

  • https://datagor.ru/practice/diy-tech/2866-domashniy-cnc-1-drayver-shagovogo-dvigatelya.html
  • http://le2x.blogspot.com/2014/05/3.html
  • https://3d-diy.ru/wiki/arduino-moduli/drajver-shagovogo-dvigatelya-a4988/

Рейтинг автора
5
Подборку подготовил
Максим Уваров
Наш эксперт
Написано статей
171
Ссылка на основную публикацию
Похожие публикации