- Управление шаговым двигателем на Ардуино
- Пояснения к коду:
- Пояснения к коду:
- Описание команд библиотеки AccelStepper.h
- Схема сборки на Fritzing
- Описание библиотеки для работы
- ULN2003 – Шаговый мотор 5В с драйвером
- Обзор основных моделей шаговых двигателей для ардуино
- Шаговый двигатель – принцип работы
- Что такое мост H-bridge?
- Список деталей
- Как подключить шаговый двигатель к Ардуино
- Пояснения к коду:
- Где купить шаговый двигатель
- Драйвер шагового двигателя Ардуино
- Описание библиотеки AccelStepper
- Определение конфигурации моторов
- Управление положением
- Управление скоростью
- Объяснение программы для платы Arduino
- Опыт изучения Arduino. Подключение шагового двигателя. Часть программная и наладочная. — DRIVE2
- Шаговые двигатели и моторы Ардуино 28BYJ-48 с драйвером ULN2003
- Шлейф проводов «Папа — Мама» (20см, 40шт.)
- Самые популярные материалы в блоге
- За все время
- Перейдем к практике
- Схема соединения
- Присоединяем провода
- Эскиз/скетч Arduino
- Arduino Uno (DIP версия)
- L298N – драйвер шагового двигателя
- Процесс подключения
- Что понадобится
- Пошаговая инструкция
Управление шаговым двигателем на Ардуино
Рассмотрите возможность управления шаговым двигателем с помощью стандартной библиотеки stepper.h и более удобной и популярной библиотеки aclstepper.h, в которой реализовано множество дополнительных команд и функций. Схема подключения двигателя остается без изменений. Чуть дальше мы перечислили возможные команды, которые можно использовать в программе с этими библиотеками.
Пояснения к коду:
- вместо портов 8,9,10,11 можно использовать любой цифровой порт;
- библиотека Stepper.h имеет несколько функций, поэтому она подходит только для тестирования шагового двигателя и проверки подключения драйвера.
Пояснения к коду:
- библиотеку AccelStepper.h можно использовать при подключении шагового двигателя к Motor Shield L293D вместе с библиотекой AFMotor.h;
- в программе можно установить не только максимальную скорость, но и ускорение и замедление вала шагового двигателя.
Описание команд библиотеки AccelStepper.h
Схема сборки на Fritzing
Для использования в образовательных проектах рекомендую Arduino Uno. Представляю схему подключения в двух вариантах: принципиальная схема и наглядная схема.
Описание библиотеки для работы
Пакет Arduino IDE содержит стандартную библиотеку Stepper.h. Он позволяет вам создать объект, а затем манипулировать им, используя 2 функции:
- Инструкция Stepper (шаги, pin1, pin2, pin3, pin4) предписывает объект, где шаг — это количество шагов для 1 полного оборота на 360º, pin1 — pin4 — контакты для подключения драйвера. Чтобы создать объект motorN, вам необходимо указать Stepper motorN (steps, pin1-4) с желаемыми числовыми значениями вместо символов в скобках.
- Скорость двигателя указывается как void setSpeed (long rpm), где rpm — это об / мин, например motorN.setSpeed (64).
- Поверните вал на указанное количество шагов: void step (int steps), например, motorN.step (16).
Библиотека Stepper.h позволяет запрограммировать доску для тестирования или обучения. Библиотека AccelStepper.h содержит гораздо больше функций: она гибко контролирует скорость, работает с различными моделями двигателей, позволяет подключать несколько машин к цепи и содержит функции, показанные в таблице 2.
Заявления и аргументы
AccelStepper stepperQ (1, pinStep, pinDirection); | Объявите шаговый двигатель под названием stepperQ. |
AccelStepper stepperQ (2, pin1, pin2); | Описание двухполюсной машины с приводом от Н-образного моста. |
AccelStepper stepperV (4, pin1-4); | Конфигурация униполярного шагового двигателя, управляемого 4 транзисторными ключами. |
stepperQ.setMaxSpeed (stepsPerSecond); | Поскольку скорость по умолчанию низкая, вы должны написать свою собственную, пошагово. |
stepperQ.setAcceleration (stepsPerSecondSquared); | Ускорение, шаги / с². |
stepperQ.moveTo (targetPosition); | Перемещение вала в новое абсолютное положение под управлением функции run(). |
stepperQ.runSpeed(); | Обновление — нужно делать периодически, чтобы вал вращался. |
ULN2003 – Шаговый мотор 5В с драйвером
Обзор основных моделей шаговых двигателей для ардуино
Nema 17 — это биполярный шаговый двигатель, наиболее часто используемый в 3D-принтерах и станках с ЧПУ. Серия двигателя 170хHSхххА универсальна.
Основные характеристики двигателя:
- Угловой шаг составляет 1,8 °, то есть на 1 оборот приходится 200 шагов;
- Двигатель двухфазный;
- Рабочие температуры от -20С до 85С;
- Номинальный ток 1,7 А;
- Удерживающий момент 2,8 кг x см;
- Оснащен фланцем 42 мм для легкой и качественной установки;
- Высокий крутящий момент — 5,5 кг х см.
28BYJ-48 — униполярный шаговый двигатель. Используется в небольших проектах роботов, сервоприводов, радиоуправляемых устройств.
- Номинальное напряжение питания — 5В;
- мотор четырехфазный, 5 проводов;
- Количество проходов: 64;
- Угол шага 5,625°;
- Скорость вращения: 15 оборотов в секунду
- Крутящий момент 450 г / см;
- Сопротивление постоянному току 50 Ом ± 7% (25 ℃).
Шаговый двигатель – принцип работы
Шаговый двигатель — это двигатель, который перемещает свой вал в соответствии с шагами и направлением, указанными в программе микроконтроллера. Такие устройства чаще всего используются в робототехнике, принтерах, манипуляторах, различных станках и других электронных устройствах. Большим преимуществом шаговых двигателей перед двигателями постоянного вращения является то, что они обеспечивают точное угловое позиционирование ротора. Кроме того, шаговые двигатели имеют возможность быстро запускаться, останавливаться, реверсировать.
Шаговый двигатель вращает ротор на заданный угол с соответствующим управляющим сигналом. Благодаря этому есть возможность проверить положение узлов механизмов и перейти в указанное место. Мотор работает следующим образом: в центральном валу расположен ряд магнитов и несколько катушек. При подаче питания создается магнитное поле, которое действует на магниты и заставляет вал вращаться. Такие параметры, как угол поворота (шаги), направление движения задаются в программе для микроконтроллера.
Основные типы шаговых двигателей:
- Двигатели с регулируемыми магнитами (используются редко);
- Двигатели с постоянными магнитами;
- Гибридные двигатели (сложнее в производстве, дороже, но наиболее распространенный тип шаговых двигателей).
Что такое мост H-bridge?
H-мост — это схема, состоящая из 4 переключателей, способных безопасно управлять двигателем постоянного тока или шаговым двигателем. Эти переключатели могут быть реле или (чаще) транзисторами. Транзистор — это твердотельный переключатель, который можно закрыть, послав небольшой ток (сигнал) на один из его контактов.
В отличие от одиночного транзистора, который позволяет управлять скоростью двигателя, H-мосты также позволяют управлять направлением вращения двигателя. Он делает это, открывая разные переключатели (транзисторы), так что ток течет в разных направлениях и, таким образом, меняет полярность на двигателе.
Важно! Выключатели 1 и 2 или 3 и 4 никогда не должны быть замкнуты вместе. Это вызовет короткое замыкание и может повредить устройство.
H-Bridges могут помочь вам предотвратить сжигание вашего Arduino двигателями, которые вы используете. Двигатели представляют собой индукторы, что означает, что они накапливают электрическую энергию в магнитных полях. Когда к двигателям больше не подается ток, магнитная энергия возвращается в электрическую и может повредить компоненты. H-Bridge помогает лучше изолировать ваш Arduino. Нет необходимости подключать мотор напрямую к Arduino.
Хотя H-мосты можно легко изготовить самостоятельно, многие люди предпочитают приобретать H-мосты (например, микросхему L293NE / SN754410) для удобства. Это чип, который мы будем использовать в этом уроке. Физические контактные телефоны и их назначение указаны ниже:
- Контакт 1 (1, 2EN) → Двигатель 1 Вкл. / Выкл. (ВЫСОКИЙ / НИЗКИЙ)
- Контакт 2 (1A) → Двигатель 1, логический выход 1
- Контакт 3 (1Y) → Клемма 1 электродвигателя 1
- Контакт 4 -> Земля
- Контакт 5 -> Земля
- Контакт 6 (2Y) → Клемма 2 двигателя 1
- Контакт 7 (2A) → Двигатель 1, логический выход 2
- Контакт 8 (VCC2) → Электропитание двигателей
- Контакт 9 → Двигатель 2 Вкл. / Выкл. (ВЫСОКИЙ / НИЗКИЙ)
- Контакт 10 → Двигатель 2, логический выход 1
- Контакт 11 → Клемма 1 электродвигателя 2
- Штифт 12 -> Земля
- Штифт 13 -> Земля
- Контакт 14 → Клемма 2 электродвигателя 2
- Контакт 15 → Двигатель 2, логический выход 2
- Контакт 16 (VCC1) → Питание для Н-моста (5 В)
Список деталей
Детали, необходимые для проекта шагового двигателя Arduino:
- Шаговый двигатель (этот мотор был взят от старого принтера)
- Ардуино
- Изолированный медный провод
- Кусачки / стрипперы
- Регулятор тока
- транзистор
- драйвер двигателя H-Bridge 1A
- моторный щит
Дополнительные детали:
- сварщик
- сварка
- инструменты
- безопасные очки
Как подключить шаговый двигатель к Ардуино
Для этого урока нам понадобятся:
- плата Arduino Uno / Arduino Nano / Arduino Mega;
- драйвер шагового двигателя ULN2003;
- шаговый двигатель 28BYJ-48;
- папа-мама темы».
Шаговый двигатель управляется через Arduino путем подачи импульсов на обмотки двигателя в определенной последовательности. Для облегчения управления шаговым двигателем созданы специальные библиотеки stepper.h и Accelstepper.h, но вращать вал двигателя можно и без стандартных библиотек. Подключите шаговый двигатель к микроконтроллеру, как показано на схеме выше, и загрузите следующий эскиз.
Пояснения к коду:
- вместо портов 8,9,10,11 можно использовать любой цифровой порт;
- время задержки в миллисекундах int dl = 5; можно изменить, чем короче задержка в программе, тем быстрее будет вращаться вал двигателя;
- алгоритм программы показан на следующем рисунке.
Где купить шаговый двигатель
Самые простые варианты двигателей на AliExpress:
Nema17 42BYGH 1.7A (17HS4401-S) Шаговый двигатель для 3D-принтера | Набор из 5 шаговых двигателей ULN2003 28BYJ-48 с платами драйверов Arduino | Шаговый двигатель с модулем драйвера шагового двигателя 5 В 28BYJ-48 + ULN2003 |
Еще один вариант шагового двигателя для 4-фазного двигателя постоянного тока Arduino 28BYJ-48 5V + тестовая плата ULN2003 | Набор из трех шаговых двигателей Nema17 42BYGH 1.7A (17HS4401) для 3D-принтера | AliExpress.com Продукт — Запчасти для 3D-принтеров StepStick A4988 DRV8825 Драйвер шагового двигателя с радиатором Carrier Reprap RAMPS 1.4 1.5 1.6 MKS GEN V1.4 board |
Драйвер шагового двигателя Ардуино
Шаговый двигатель — это бесщеточный синхронный двигатель, как и все двигатели, он преобразует электрическую энергию в механическую. В отличие от двигателя постоянного тока, в котором вал вращается, вал шаговых двигателей совершает дискретные движения, то есть вращается не постоянно, а ступенчато. Каждая ступенька вала (ротора) является частью полного оборота.
Вращение вала двигателя осуществляется с помощью сигнала, управляющего магнитным полем катушек в статоре драйвера. Сигнал генерируется драйвером шагового двигателя. Магнитное поле, создаваемое прохождением электрического тока в обмотках статора, заставляет вращаться вал, на котором установлены магниты. Количество шагов задается в программе с помощью библиотеки Arduino IDE.
Схема подключения шагового двигателя 28BYJ-48 к Arduino Uno через драйвер ULN2003 показана на следующем рисунке. Основные характеристики двигателя 28BYJ-48: питание 5 или 12 вольт, 4-фазный двигатель, угол шага 5,625 °. Порты драйвера IN1 — IN4 подключаются к любому цифровому выводу на плате Arduino Mega или Nano. Светодиоды на модуле используются для индикации активации катушек двигателя.
Описание библиотеки AccelStepper
Перейдем к интересной части нашей статьи. Это описание двух библиотек для работы с движками myStepper и AccelStepper. Больше внимания уделю библиотеке AccelStepper, так как в ней больше функций, а именно:
- вы можете контролировать скорость,
- поддержка различных шагов
- поддержка одновременной работы двигателей
Определение конфигурации моторов
AccelStepper mystepper (1, pinStep, pinDirection);
Для управления шаговым двигателем.
AccelStepper mystepper (2, pinA, pinB);
Биполярный шаговый двигатель с Н-мостом.
AccelStepper mystepper (4, pinA1, pinA2, pinB1, pinB2);
Униполярный двигатель, управляемый четырьмя транзисторами.
mystepper.setMaxSpeed (stepsPerSecond);
Максимальная частота вращения двигателя. Скорость явно невысокая. Сначала двигатель разгоняется до этой скорости, затем снижает ее
mystepper.setAcceleration (stepsPerSecondSquared);
Ускорение шагового двигателя в шагах в секунду.
Управление положением
mystepper.moveTo (targetPosition);
Переместитесь в абсолютно указанную позицию. Само движение инициируется функцией run ().
mystepper.move (расстояние);
Переместитесь в относительно конкретное место. Само движение инициируется функцией run (). Расстояние может быть больше или меньше нуля.
mystepper.currentPosition ();
Возвращает текущую абсолютную позицию.
mypass.distanceToGo ();
Верните расстояние до указанного места. Его можно использовать, чтобы проверить, достиг ли двигатель заданной конечной точки.
mystepper.run ();
Начни водить. Чтобы продолжить движение двигателя, вызовите функцию еще раз.
mystepper.runToPosition ();
Начните движение и дождитесь, пока двигатель достигнет указанной точки. Функция не возвращается, пока не остановится.
Управление скоростью
mystepper.setSpeed (stepsPerSecond);
Установите скорость в шагах в секунду. Сам процесс запускается функцией runSpeed ().
mystepper.runSpeed ();
Начни водить. Чтобы продолжить движение двигателя, вызовите функцию еще раз.
Как видите, функции управления в принципе несложные, достаточно посидеть на несколько вечеров.
Объяснение программы для платы Arduino
Прежде чем приступить к написанию программы для платы Arduino, давайте попробуем разобраться, что должно происходить внутри этой программы. Как мы уже говорили ранее, мы будем использовать метод 4-х шаговой последовательности, то есть нам нужно будет пройти 4 шага, чтобы завершить полный оборот двигателя.
Номер шага | Силовые контакты | Катушки с питанием |
Шаг 1 | 8 и 9 | А и Б |
Шаг 2 | 9 и 10 | Да и делать |
Шаг 3 | 10 и 11 | C и D |
Шаг 4 | 11 и 8 | Богиня |
На драйвере мотора есть 4 светодиода, по свечению которых можно судить, на какую катушку подается питание в данный момент. Более подробно все эти процессы можно посмотреть на видео в конце статьи.
Мы напишем программу, в которой мы будем вводить количество шагов, необходимых для двигателя, в последовательный монитор платы Arduino. Полный текст программы приведен в конце статьи, но здесь мы рассмотрим наиболее важные ее фрагменты.
Как мы подсчитали ранее, общее количество шагов на один полный оборот нашего шагового двигателя составляет 32, мы запишем это в следующей строке кода:
Затем нам нужно указать плате Arduino, через какой из ее контактов мы будем управлять шаговым двигателем (то есть к каким контактам подключен драйвер двигателя).
Примечание. Последовательность номеров выводов, показанная в приведенной выше команде (8,10,9,11), специально предназначена для питания катушек шагового двигателя в правильном порядке. Если вы измените номера контактов, к которым подключен шаговый двигатель, вам необходимо изменить их порядок для данной команды.
Мы будем использовать специальную библиотеку для работы с шаговыми двигателями, поэтому для установки скорости вращения шагового двигателя мы можем использовать команду формы:
Для двигателя 28-BYJ48 скорость вращения может быть установлена от 0 до 200.
Число шагов, которые должен сделать двигатель, определяется переменной «val». Поскольку у нас 32 шага (на один оборот) и передаточное число 64, мы должны сделать 2048 (32 * 64 = 2048) «шагов» в этой команде, чтобы сделать один полный оборот двигателя.
В нашей программе мы будем считывать значение на аналоговом выводе A0 платы Arduino и сравнивать его с предыдущим значением (Pval). Если он увеличен, то мы сделаем 5 шагов с мотором по часовой стрелке, а если он уменьшится, то 5 шагов с мотором против часовой стрелки.
Опыт изучения Arduino. Подключение шагового двигателя. Часть программная и наладочная. — DRIVE2
Всем привет!
В последней части своего рассказа о подключении шагового двигателя к ардуино я остановился на том, что собрал на макетной плате стабилизатор напряжения 5В, установил плату управления (КП) и пошагово подготовил выводы мотора. Настройка самой платы заключается в установке тока двигателя и выборе значения микрошага.
Начнем с тока двигателя. ПУ нужно только запитать от логической части, например. 5 В. Плюс подается на вывод VDD (может быть обозначен как VCC, VLOG), минус — на GND. Я до сих пор не обслуживаю СД и ее еду. Сам процесс настройки сводится к установке Vref.
Формула Vref для A4988 зависит от номинала резисторов считывания тока. Это два черных прямоугольника на плате драйвера. Обычно подписывается R050 или R100.
Самый простой способ измерить Vref — на подвижном выводе подстроечного резистора. Минус мультиметра (в режиме измерения постоянного напряжения он подключается к выводу GND, а плюс цепляется за кончик отвертки, которым я вращаю подстроечный резистор. Ток мотора не знал и ковырял его вверх эмпирически.
Побалуйте себя током. Теперь микрошаг.
Выходы MS (микрошаг) За микрошаг отвечают MS1, MS2, MS3 Теперь несколько слов о том, что такое микрошаг. В таблице видно, что это дробное число. Допустим, шаговый двигатель делает полный оборот за 200 шагов.
При выборе 1/4 микрошага полный оборот будет выполнен за 800 шагов, а при 1/16 микрошага — за 3200 шагов. Что нужно? Полный шаг означает больший крутящий момент, меньшую точность и больше шума.
Чем меньше шаг, тем выше точность позиционирования, плавнее ход (особенно на низких скоростях) и значительно ниже рабочий шум. Однако это приведет к снижению крутящего момента на коленчатом валу.
Забегая вперед скажу, что играл с разными значениями, но остановился на 1/16, соединение пинов MS1, MS2, MS3 с пином VDD.PU настроено — можно подключать мотор и его блок питания.
Напомню, что одна из моих обмоток — это сине-зеленый провод, другая — бело-оранжевая.
Схематично подключение шагового двигателя к блоку управления мне выглядит так:
После подачи питающего напряжения на плату шаговый двигатель начал произвольно двигаться. Это происходит из-за индукции на выводах STEP (шаг) и DIR (направление): эти выводы отвечают за управление вращением шагового двигателя. Если вы подключите вывод DIR к выводу VDD, шаговый двигатель будет двигаться в одном направлении, а если с GND, то в другом.
Когда напряжение на выводе STEP повышается с низкого до высокого, SM делает 1 микрошаг. Те, которые заставляют двигатель вращаться, к этому выводу должны быть приложены прямоугольные импульсы с низким уровнем около нуля и высоким уровнем около 5 В, так называемые уровни TTL. В качестве генератора таких импульсов у меня будет плата ардуино.
Я загрузил скетч из примеров под названием Blink. В оригинале он формирует импульсы с частотой 1/2 Гц на выводе 13 платы (в моем случае Arduino Nano) (1 с высокий уровень, затем 1 с низкий уровень).
С такой частотой шаговый двигатель совершит один оборот (с шагом 1/16 микрошага) за 6400 с! Не хотелось так долго ждать))) и начал увеличивать частоту мотора. Мне удалось добиться стабильной работы на частотах до 10 кГц. Для меня длительность импульса и пауза составляют 50 мкс каждая.
Операторы задержки в скетче пришлось заменить на delayMicroseconds, потому что задержка может работать только с временами 1 мс. В результате скетч стал выглядеть так:
Тогда я решил доработать скетч, чтобы мотор периодически менял направление вращения. Модифицированный скетч выглядит так:
Подключение Ардуино.
Тест показал, что схема полностью работоспособна. Двигатель не перегревается и не пропускает ступенек. Цель была достигнута.
Для тех, кто усвоил весь материал, работают видеоустройства.
Это мое первое видео, предназначенное для публичного просмотра. И первая запись в блоге, сделанная мной.
Напишите в комментариях, есть ли смысл снимать видео или достаточно ограничиться статичными изображениями?
Шаговые двигатели и моторы Ардуино 28BYJ-48 с драйвером ULN2003
В этой статье мы поговорим о шаговых двигателях в проектах Arduino на примере очень популярной модели 28BYJ-48. Шаговые двигатели, как и сервоприводы, являются важным элементом автоматизированных систем и робототехники. Их можно найти во многих устройствах поблизости, от привода компакт-дисков до 3D-принтера или манипулятора. В этой статье вы найдете описание того, как работают шаговые двигатели, пример подключения к Arduino с использованием драйверов на основе ULN2003 и примеры скетчей с использованием стандартной библиотеки Stepper.
Шлейф проводов «Папа — Мама» (20см, 40шт.)
Самые популярные материалы в блоге
За все время
- BMS — обзор контроллеров защиты аккумуляторных батарей
- Установка ESP32 в Arduino IDE (Руководство для Windows)
- Адресная светодиодная лента Arduino и WS2812B
- Веб-сервер потокового видео ESP32-CAM (работает с Home Assistant)
- Светодиодный индикатор TM1637 и Arduino — схема подключения
Перейдем к практике
Теория всегда запутанная и непонятная, чтобы понять что и как брать и делать. Поэтому перейдем к практической стороне дела.
Итак, из набора, о котором шла речь ранее, у меня есть:
- Arduino UNO;
- Модуль ULN2003;
- Шаговый двигатель 28BYJ-48 5V DC;
- Связка свитеров, щиток и источник питания для него.
Модуль ULN2003 — предназначен для управления униполярным шаговым двигателем. Схематично это 7-канальный транзисторный комплекс Дарлингтона и, в принципе, им можно управлять чем угодно. Технические характеристики приведены ниже:
- Номинальный ток коллектора ключа — 0,5 А;
- Максимальное выходное напряжение до 50В;
- Защитные диоды на выходах;
- Вход адаптирован к разным типам логики;
- Возможность использования для релейного управления.
Модуль, помимо самой микросхемы ULN2003, имеет светодиоды для индикации выходного напряжения, колодку подключения и перемычку для отключения питания.
Двигатель 28BYJ-48 5V DC подключается штатным разъемом к белому блоку на плате. В нем 5 проводов: общий красный и 4 от обмоток.
- 32 шага на оборот ротора;
- Интегрированная коробка передач с передаточным отношением 63,68395: 1, благодаря которой вал совершает 1 оборот за 2048 шагов в режиме полного шага и 4096 шагов в режиме полушага;
- Скорость вращения: номинальная 15 об / мин, максимальная 25 об / мин;
- Напряжение питания 5 В;
- Ток одной обмотки 160 мА;
- Полный ток: в 4-фазном режиме 320 мА, при быстром вращении 200 мА.
- Передаточное число: 1 / 63,68395
- Угол наклона ротора (без редуктора): при 4-ступенчатой последовательности управляющих сигналов 11,25 ° (32 ступени на оборот); в 8 шагов — 5,625 ° (64 шага на оборот)
- Крутящий момент не ниже: 34,3 мНм (120 Гц);
- Тормозной момент: 600-1200 гсм;
- Тяга: 300 г / м 2;
- Вес: 33 гр.
Итак, давайте рассмотрим более простые примеры управления двигателем без использования библиотек. Как известно, на обмотки необходимо подавать импульсы определенной последовательности.
Итак, попробуем выдать такие сигналы от ардуино. Для этого я подключаю модуль ULN2003 по следующей схеме (вывод arduino — контакт модуля)
Двигатель начнет вращаться, скорость вращения фиксируется переменной dl. Я только ввел его, чтобы не вводить вручную задержку на каждом шаге. Ниже я приложу видео и в нем для наглядности я показал как вращение с задержкой между шагами равной 2 мс (за 1 мс мотор только пищит и не вращается…), и с задержкой полсекунды, что позволяет четко видеть, в какой последовательности отправляются сигналы на обмотки, что позволяет убедиться, что напряжение приложено к двум обмоткам одновременно, согласно приведенной выше таблице. С задержкой в 2 мс светодиоды загораются как будто все вместе.
Перейдем к полушаговому управлению. В следующей таблице показана процедура подачи сигналов на обмотки рассматриваемого двигателя для ее реализации.
Но на практике такой подход к управлению шаговым двигателем не используется. Для этого есть библиотеки, в Arduino IDE встроен «Степпер». Возьмем готовый пример «Stepper_oneRevolution» из библиотеки и изменим его для нашего движка, я цитирую код ниже и описываю основные возможности в комментариях:
Первое, что бросается в глаза, это то, что код занимает намного меньше времени, количество шагов для полного оборота ротора задается первым аргументом функции Stepper, с его помощью выводов, к которым подключен двигатель и объявляется количество шагов в полном повороте дерева, его синтаксис следующий:
Имя шагового двигателя (количество шагов за полный оборот, вывод 1, вывод 2, вывод 3, вывод 4).
Что ж, когда нам нужно повернуть сам мотор, мы обращаемся к мотору, имя которого мы написали в Stepper с префиксом «.step», у нас есть myStepper.step. В видеоролик я для наглядности вставил фрагмент, в котором двигатель крутится на пол-оборота по часовой стрелке, а на полный — против. Это в самом конце. Я изменил код для этого следующим образом:
В дверном мониторе микроконтроллер «сообщает» нам, в каком направлении вращается двигатель.
И напоследок предлагаю посмотреть видео, демонстрирующее, как работают все примеры кода в этой статье
Схема соединения
Ниже представлена схема подключения нашего проекта шагового двигателя Arduino.
Для шагового двигателя Arduino 4 контакта H-моста должны быть подключены к 4 контактам двигателя. Затем 4 логических контакта подключаются к Arduino (8, 9, 10 и 11). Как показано на схеме выше, для питания двигателей можно подключить внешний источник питания. Чип может работать с внешним питанием от 4,5 В до 36 В (мы выбрали батарею 9 В).
Присоединяем провода
Большинство шаговых двигателей имеют четыре провода, поэтому вам нужно разрезать четыре медных провода (обратите внимание, что цвет не связан ни с чем конкретным (обычно существует правило, что черный — это земля, но не сейчас). Разные цвета использовались только для этого. Эти контакты будут использоваться для проверки того, какая катушка в данный момент активна в двигателе. Для этого проекта Arduino шаговый двигатель был взят от старого принтера, поэтому пайка проводов была там. Самый простой вариант для этого проекта можно установить безопасное соединение (припой, штекер, зажим).
Эскиз/скетч Arduino
В Arduino уже есть встроенная библиотека для шаговых двигателей. Просто зайдите в меню:
Файл -> Примеры -> Stepper -> stepper_oneRevolution
Файл → Примеры → Stepper → stepper_oneRevolution
Затем вам нужно изменить переменную stepsPerRevolution в соответствии с вашим конкретным движком. После просмотра номеров деталей двигателя в Интернете, наш конкретный двигатель был рассчитан с 48 шагами для прохождения одного круга.
На самом деле библиотека Stepper переключает сигналы HIGH и LOW для каждой катушки, как показано на анимации выше.
Arduino Uno (DIP версия)
L298N – драйвер шагового двигателя
Процесс подключения
Сборка схемы несложная, поэтому доступна любителю. Требуются базовые знания в области электротехники, умение работать с ПК на уровне пользователя и тщательное составление чертежей. Макетная плата позволит вам обойтись без паяльника, пайки и канифоли.
Что понадобится
Для сборки схемы понадобятся следующие компоненты:
- Шаговый двигатель коллектора.
- Плата Arduino. Для новичков подойдет модель UNO.
- Блюдо для хлеба.
- Диоды, транзисторы, резисторы, потенциометр.
- Перемычки и провода.
- «Motor Shield» — дополнительная плата расширения для управления двигателем постоянного тока, а также регулятор скорости.
- Вместо Motor Shield можно использовать драйверы L298N, ULN2003 или L293D.
- Источник постоянного тока.
- USB-кабель для подключения к компьютеру и загрузки эскизов.
На рынке представлены готовые комплекты (в том числе 2-5).
Пошаговая инструкция
Драйвер и плата «Arduino» могут выйти из строя при неправильном питании, поэтому сначала необходимо подключить отрицательный провод. Выполнять действия нужно в такой последовательности:
- Подготовьте эскиз для проверки двигателя.
- Поместите щит управления двигателем или драйвер на верхнюю часть платы Arduino UNO.
- Проверьте и при необходимости установите перемычки на плате расширения следующим образом: H1 подключается к контакту 4, E1 — к контакту 5, E2 — к контакту 6 и H2 — к контакту 7. Контакты 5 и 6 должны поддерживать ШИМ (широтно-импульсную модуляцию).
- Подготовьте устройство для подачи постоянного тока на экран.
- Подайте постоянный ток на контакты «+» и «-» платы расширения.
- Подключите питание двигателя к контактам PWR на плате расширения.
- Подключите «Ардуино» с помощью USB-кабеля к ПК и загрузите скетч.
Эскизы можно писать с помощью библиотеки Stepper.h или AccelStepper.h. Плата Arduino UNO подходит для работы с ШИМ. В этом случае в блоке цикла используются команды analogWrite и analogRead.
Читайте также: Мигалка на Ардуино: как сделать скетч по схеме из светодиода