Как управлять шаговым двигателем с помощью джойстика

Управление щёточными моторами с Arduino

Как вы знаете, никакую нагрузку мощнее светодиода нельзя подключать к Ардуино напрямую, особенно моторчики. Ардуино, да и вообще любой микроконтроллер – логическое устройство, которое может давать только логические сигналы другим железкам, а те уже могут управлять нагрузкой. Кстати, урок по управлению мощной нагрузкой постоянного и переменного тока у меня тоже есть. “Драйвером” мотора могут быть разные железки, рассмотрим некоторые из них.

Как управлять шаговым двигателем с помощью джойстика. Смотреть фото Как управлять шаговым двигателем с помощью джойстика. Смотреть картинку Как управлять шаговым двигателем с помощью джойстика. Картинка про Как управлять шаговым двигателем с помощью джойстика. Фото Как управлять шаговым двигателем с помощью джойстика

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

Как управлять шаговым двигателем с помощью джойстика. Смотреть фото Как управлять шаговым двигателем с помощью джойстика. Смотреть картинку Как управлять шаговым двигателем с помощью джойстика. Картинка про Как управлять шаговым двигателем с помощью джойстика. Фото Как управлять шаговым двигателем с помощью джойстика

Купить модуль реле можно на Aliexpress.

Мосфет

Как управлять шаговым двигателем с помощью джойстика. Смотреть фото Как управлять шаговым двигателем с помощью джойстика. Смотреть картинку Как управлять шаговым двигателем с помощью джойстика. Картинка про Как управлять шаговым двигателем с помощью джойстика. Фото Как управлять шаговым двигателем с помощью джойстика

Вместо “голого” мосфета можно использовать готовый китайский модуль:

Как управлять шаговым двигателем с помощью джойстика. Смотреть фото Как управлять шаговым двигателем с помощью джойстика. Смотреть картинку Как управлять шаговым двигателем с помощью джойстика. Картинка про Как управлять шаговым двигателем с помощью джойстика. Фото Как управлять шаговым двигателем с помощью джойстика

Купить мосфет модуль можно на Aliexpress.

Реле и мосфет

Если объединить реле и мосфет – получим весьма колхозную, но рабочую схему управления скоростью и направлением мотора:

Как управлять шаговым двигателем с помощью джойстика. Смотреть фото Как управлять шаговым двигателем с помощью джойстика. Смотреть картинку Как управлять шаговым двигателем с помощью джойстика. Картинка про Как управлять шаговым двигателем с помощью джойстика. Фото Как управлять шаговым двигателем с помощью джойстика

Специальный драйвер

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

ДрайверVmotТок (пик)

Стоимость

Aliexpress
L298N4-50V1A (2A)100рКупить
MX15082-9.6V1.5A (2.5A)20рКупить
TA65863-14V5A (7A)100р (чип 30р)Купить, купить, купить чип
L9110S2.5-12V0.8A (1.5A)50рКупить
TB66124.5-13.5V1.2A (3A)80рКупить
BTS79605.5-27V10A (43A)300рКупить
Большой3-36V10A (30A)700рКупить

Остальные драйверы смотри у меня вот тут. Схемы подключения и таблицы управления:

Как управлять шаговым двигателем с помощью джойстика. Смотреть фото Как управлять шаговым двигателем с помощью джойстика. Смотреть картинку Как управлять шаговым двигателем с помощью джойстика. Картинка про Как управлять шаговым двигателем с помощью джойстика. Фото Как управлять шаговым двигателем с помощью джойстика Как управлять шаговым двигателем с помощью джойстика. Смотреть фото Как управлять шаговым двигателем с помощью джойстика. Смотреть картинку Как управлять шаговым двигателем с помощью джойстика. Картинка про Как управлять шаговым двигателем с помощью джойстика. Фото Как управлять шаговым двигателем с помощью джойстика
Как управлять шаговым двигателем с помощью джойстика. Смотреть фото Как управлять шаговым двигателем с помощью джойстика. Смотреть картинку Как управлять шаговым двигателем с помощью джойстика. Картинка про Как управлять шаговым двигателем с помощью джойстика. Фото Как управлять шаговым двигателем с помощью джойстика Как управлять шаговым двигателем с помощью джойстика. Смотреть фото Как управлять шаговым двигателем с помощью джойстика. Смотреть картинку Как управлять шаговым двигателем с помощью джойстика. Картинка про Как управлять шаговым двигателем с помощью джойстика. Фото Как управлять шаговым двигателем с помощью джойстика
Как управлять шаговым двигателем с помощью джойстика. Смотреть фото Как управлять шаговым двигателем с помощью джойстика. Смотреть картинку Как управлять шаговым двигателем с помощью джойстика. Картинка про Как управлять шаговым двигателем с помощью джойстика. Фото Как управлять шаговым двигателем с помощью джойстика Как управлять шаговым двигателем с помощью джойстика. Смотреть фото Как управлять шаговым двигателем с помощью джойстика. Смотреть картинку Как управлять шаговым двигателем с помощью джойстика. Картинка про Как управлять шаговым двигателем с помощью джойстика. Фото Как управлять шаговым двигателем с помощью джойстика
Как управлять шаговым двигателем с помощью джойстика. Смотреть фото Как управлять шаговым двигателем с помощью джойстика. Смотреть картинку Как управлять шаговым двигателем с помощью джойстика. Картинка про Как управлять шаговым двигателем с помощью джойстика. Фото Как управлять шаговым двигателем с помощью джойстика Как управлять шаговым двигателем с помощью джойстика. Смотреть фото Как управлять шаговым двигателем с помощью джойстика. Смотреть картинку Как управлять шаговым двигателем с помощью джойстика. Картинка про Как управлять шаговым двигателем с помощью джойстика. Фото Как управлять шаговым двигателем с помощью джойстика

Моторы переменного тока

Мотором переменного тока (220V от розетки) можно управлять при помощи диммера на симисторе, как в уроке про управление нагрузкой.

Библиотеки

У меня есть удобная библиотека для управления мотором – GyverMotor, документацию можно почитать вот здесь. Особенности библиотеки:

Помехи и защита от них

Индуктивный выброс напряжения

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

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

Помехи от щёток

Искрящиеся щетки мотора, особенно старого и разбитого, являются сильным источником электромагнитных помех, и здесь проблема решается установкой керамических конденсаторов с ёмкостью 0.1-1 мкФ на выводы мотора. Такие же конденсаторы можно поставить между каждым выводом и металлическим корпусом, это ещё сильнее погасит помехи. Для пайки к корпусу нужно использовать мощный паяльник и активный флюс, чтобы залудиться и припаяться как можно быстрее, не перегревая мотор. Как управлять шаговым двигателем с помощью джойстика. Смотреть фото Как управлять шаговым двигателем с помощью джойстика. Смотреть картинку Как управлять шаговым двигателем с помощью джойстика. Картинка про Как управлять шаговым двигателем с помощью джойстика. Фото Как управлять шаговым двигателем с помощью джойстика

Помехи по питанию, просадка

Мотор потребляет ток не очень равномерно, особенно во время разгона или в условиях переменной нагрузки на вал, что проявляется в виде просадок напряжения по питанию всей схемы. Беды с питанием решаются установкой ёмких электролитических конденсаторов по питанию, логично что ставить их нужно максимально близко к драйверу, то есть до драйвера. Напряжение должно быть выше чем напряжение питания, а ёмкость уже подбирается по факту. Начать можно с 470 мкф и повышать, пока не станет хорошо.

Разделение питания

Если описанные выше способы не помогают – остаётся только одно: разделение питания. Отдельный малошумящий хороший источник на МК и сенсоры/модули, и отдельный – для силовой части, в том числе мотора. Иногда ради стабильности работы приходится вводить отдельный БП или отдельный аккумулятор для надёжности функционирования устройства.

Экранирование

В отдельных случаях критичными являются даже наводки от питающих проводов моторов, особенно при управлении ШИМ мощными моторами и управлении мощными шаговиками в станках. Такие наводки могут создавать сильные помехи для работающих рядом чувствительных электронных компонентов, на аналоговые цепи, наводить помехи на линии измерения АЦП и конечно же на радиосвязь. Защититься от таких помех можно при помощи экранирования силовых проводов: экранированные силовые провода не всегда удаётся купить, поэтому достаточно обмотать обычные провода фольгой и подключить экран на GND питания силовой части. Этот трюк часто используют RC моделисты, летающие по FPV.

Видео


Источник

БИБЛИОТЕКА ДЛЯ ШАГОВОГО ДВИГАТЕЛЯ ARDUINO

Для подключения шаговых моторов к Arduino нужно использовать драйверы. Очень дешёвые и популярные моторы 28byj-48-5v часто продаются вместе со своим драйвером (транзисторная сборка ULN2003), подключить можно к любым 4-м пинам Ардуино и использовать.

Для работы с большими шаговиками (типа Nema 17) нужно использовать специализированные драйверы, ниже вы найдёте описания и схемы подключения для A4988, DRV8825 и TMC2208, драйверы такого формата подключаются и работают практически одинаково, т.к. разработаны для CNC шилдов и взаимозаменяемы. У этих драйверов нужно настроить ток при помощи крутилки на плате. Это можно сделать “на глаз”, заставив мотор вращаться и регулируя крутилку. Мотор должен вращаться, но не вибрировать как перфоратор и сильно не нагреваться. Лучше настроить ток по опорному напряжению Vref, у каждого драйвера оно считается по своей формуле (см. картинки ниже). Берём ток своего мотора из описания, подставляем в формулу вместо current, считаем, и накручиваем полученное напряжение крутилкой. Для измерения опорного напряжения нужно подключить щупы вольтметра к самой крутилке и пину GND.

Главное преимущество дорогущих драйверов TMC – отсутствие шума/свиста/вибраций при работе, так как драйвер своими силами интерполирует сигнал до микрошага 1/256.

Как управлять шаговым двигателем с помощью джойстика. Смотреть фото Как управлять шаговым двигателем с помощью джойстика. Смотреть картинку Как управлять шаговым двигателем с помощью джойстика. Картинка про Как управлять шаговым двигателем с помощью джойстика. Фото Как управлять шаговым двигателем с помощью джойстика

Как управлять шаговым двигателем с помощью джойстика. Смотреть фото Как управлять шаговым двигателем с помощью джойстика. Смотреть картинку Как управлять шаговым двигателем с помощью джойстика. Картинка про Как управлять шаговым двигателем с помощью джойстика. Фото Как управлять шаговым двигателем с помощью джойстика

Как управлять шаговым двигателем с помощью джойстика. Смотреть фото Как управлять шаговым двигателем с помощью джойстика. Смотреть картинку Как управлять шаговым двигателем с помощью джойстика. Картинка про Как управлять шаговым двигателем с помощью джойстика. Фото Как управлять шаговым двигателем с помощью джойстика

Как управлять шаговым двигателем с помощью джойстика. Смотреть фото Как управлять шаговым двигателем с помощью джойстика. Смотреть картинку Как управлять шаговым двигателем с помощью джойстика. Картинка про Как управлять шаговым двигателем с помощью джойстика. Фото Как управлять шаговым двигателем с помощью джойстика

Как управлять шаговым двигателем с помощью джойстика. Смотреть фото Как управлять шаговым двигателем с помощью джойстика. Смотреть картинку Как управлять шаговым двигателем с помощью джойстика. Картинка про Как управлять шаговым двигателем с помощью джойстика. Фото Как управлять шаговым двигателем с помощью джойстика

БИБЛИОТЕКА GYVERSTEPPER

GyverStepper v1.8

GyverStepper – производительная библиотека для управления шаговыми моторами

Поддерживаемые платформы: все Arduino (используются стандартные Wiring-функции)

Версия 1.1: добавлена возможность плавно менять скорость в режиме KEEP_SPEED. Добавлены примеры multiStepper и accelDeccelButton
v1.2 – добавлена поддержка ESP8266
v1.3 – изменена логика работы setTarget(, RELATIVE)
v1.4 – добавлена задержка для STEP, настроить можно дефайном DRIVER_STEP_TIME
v1.5 – пофикшен баг для плат есп
v1.6 – Исправлена остановка для STEPPER4WIRE_HALF, скорость можно задавать во float (для медленных скоростей)

ДОКУМЕНТАЦИЯ

Документация

Инициализация

Библиотека поддерживает два типа драйверов:

При инициализации указывается тип драйвера, количество шагов на оборот и пины:

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

Время шага [NEW!]

Для драйверов STEP-DIR сделана задержка между переключением состояния пина STEP, эта задержка является минимальной, т.е. она может быть больше, чем нужно, но если будет меньше – возможна нестабильная работа драйвера. По умолчанию она составляет 4 микросекунды, но разным драйверам она нужна разная (для других драйверов см. даташит):

Также увеличение задержки может повысить стабильность работы при использовании длинных неэкранированных проводов от микроконтроллера к драйверу (к пину STEP).

Для изменения величины задержки сделай дефайн DRIVER_STEP_TIME перед подключением библиотеки:

Медленные скорости (new!)

Тик и тайминги

Смена направления

Режимы работы

Режим FOLLOW_POS

В этом режиме мотор следует на указанную позицию в шагах или градусах. Для её установки есть следующие методы:

Примечание: абсолютная позиция – говоришь мотору повернуться на 300 шагов, он повернётся на позицию 300. При повторном вызове ничего не произойдёт. Относительная – говоришь повернуться на 300 – он повернётся на 300 относительно текущей позиции. Если вызвать ещё раз через некоторое время – цель сместится относительно текущей позиции вала.

Установленную целевую позицию можно прочитать:

Дополнительно можно настроить максимальную скорость и ускорение при движении к целевой позиции:

Также можно вручную установить текущую позицию мотора в шагах и градусах при помощи:

Режим KEEP_SPEED

В этом режиме мотор просто крутится с заданной скоростью. Скорость задаётся при помощи

(New!) Вторым аргументом можно передать включение плавного изменения скорости, по умолчанию стоит false ( NO_SMOOTH ). Смотри пример accelDeccelButton

Установленную скорость можно прочитать:

Алгоритм планировщика скорости

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

Остановка и сброс

Управление питанием

Источник

Arduino.ru

Управление одним джойстиком двумя шаговиками.

Здравствуйте жители форума.

Пытаюсь создать управление одним джойстиком двумя шаговыми моторами.

Моторы 28BYJ-48 5в с драйверами ULN2003 по две штуки, джойстик самый обычный из набора Ардуино.

Как управлять шаговым двигателем с помощью джойстика. Смотреть фото Как управлять шаговым двигателем с помощью джойстика. Смотреть картинку Как управлять шаговым двигателем с помощью джойстика. Картинка про Как управлять шаговым двигателем с помощью джойстика. Фото Как управлять шаговым двигателем с помощью джойстика

У меня получается восемь блоков проверяющих последовательно каждое направление джойстика. Все построено на функциях If else. При совпадении выдается 32 строки кода (4х8 (четыре обмотки, восемь шагов)) которые задают состояния выводов и соответственное состояние обмоток мотора.

И эта конструкция получается очень громоздкая,

и я думаю работать будет очень медленно,

Что заставляет Вас так думать? Оно, конечно, «как напишете», но объективных причин для медленности не вижу.

а скорее всего работать вообще не будет 🙂

товарищи программисты пока не увидели правильно вставленного отформатированного кода,

над картинкой не ржал.

товарищи программисты пока не увидели правильно вставленного отформатированного кода,

над картинкой не ржал.

Да кода как такового нет.

Вот такой пока набросок.

//выполняется блок команд «движение назад и в право» >>

else if (data [0] >510)<<

// выполняется блок команд «движение вперед»>

// выполняется блок команд «движение вперед и в право» >>

Блоки команд я с планшета устану писать, дома оформлю в ИДЕ выложу в нормальном варианте.

в нормальном виде посмотрим

Как управлять шаговым двигателем с помощью джойстика. Смотреть фото Как управлять шаговым двигателем с помощью джойстика. Смотреть картинку Как управлять шаговым двигателем с помощью джойстика. Картинка про Как управлять шаговым двигателем с помощью джойстика. Фото Как управлять шаговым двигателем с помощью джойстика

Вот такой пока набросок.

Вам же как человеку написали » правильно вставленного отформатированного кода«, А Вы что выложили?

Вот такой пока набросок.

Вам же как человеку написали » правильно вставленного отформатированного кода«, А Вы что выложили?

🙂 да умею я код вставлять, я на работе пишу на планшете, и очень не удобно на нем писать. Дома на ноуте сделаю и выложу нормально, кнопкой «вставка кода».

Ну вот так.
В IDE выдает ошибки.

Как управлять шаговым двигателем с помощью джойстика. Смотреть фото Как управлять шаговым двигателем с помощью джойстика. Смотреть картинку Как управлять шаговым двигателем с помощью джойстика. Картинка про Как управлять шаговым двигателем с помощью джойстика. Фото Как управлять шаговым двигателем с помощью джойстика

правильно выдает, где определение data[]

Как управлять шаговым двигателем с помощью джойстика. Смотреть фото Как управлять шаговым двигателем с помощью джойстика. Смотреть картинку Как управлять шаговым двигателем с помощью джойстика. Картинка про Как управлять шаговым двигателем с помощью джойстика. Фото Как управлять шаговым двигателем с помощью джойстика

правильно выдает, где определение data[]

вот оно.
Вопрос не в нем, мне само управление не нравится.

Можно все If else заменить на что-то более «красивое»?

ну да, с определением IDE ошибку не выдает.

Как управлять шаговым двигателем с помощью джойстика. Смотреть фото Как управлять шаговым двигателем с помощью джойстика. Смотреть картинку Как управлять шаговым двигателем с помощью джойстика. Картинка про Как управлять шаговым двигателем с помощью джойстика. Фото Как управлять шаговым двигателем с помощью джойстика

можно, читаем про массивы.

Как управлять шаговым двигателем с помощью джойстика. Смотреть фото Как управлять шаговым двигателем с помощью джойстика. Смотреть картинку Как управлять шаговым двигателем с помощью джойстика. Картинка про Как управлять шаговым двигателем с помощью джойстика. Фото Как управлять шаговым двигателем с помощью джойстика

Вы убили детскую мечту :(((

можно, читаем про массивы.

Что-то я не догоняю, можно чуть подробнее.

С самим массивом понятно, а что в него прятать?

Как управлять шаговым двигателем с помощью джойстика. Смотреть фото Как управлять шаговым двигателем с помощью джойстика. Смотреть картинку Как управлять шаговым двигателем с помощью джойстика. Картинка про Как управлять шаговым двигателем с помощью джойстика. Фото Как управлять шаговым двигателем с помощью джойстика

можно и еще оптимизировать, но не хочется вам голову забивать.

Спасибо, пошел читать.

Вот такая программа у меня получилась.

Вы писали что нужно создать еще по три функции для каждого мотора, видимо имелось ввиду ВЛЕВО, ВПРАВО и ВПЕРЕД. НАЗАД вы сделали. Но поворот осуществляется комбинацией ВПЕРЕД, НАЗАД на двух моторах, по этому сделал по одной.

Как управлять шаговым двигателем с помощью джойстика. Смотреть фото Как управлять шаговым двигателем с помощью джойстика. Смотреть картинку Как управлять шаговым двигателем с помощью джойстика. Картинка про Как управлять шаговым двигателем с помощью джойстика. Фото Как управлять шаговым двигателем с помощью джойстика

еще чуток «оптимизации»

ну и для левого мотора анологично.

Как управлять шаговым двигателем с помощью джойстика. Смотреть фото Как управлять шаговым двигателем с помощью джойстика. Смотреть картинку Как управлять шаговым двигателем с помощью джойстика. Картинка про Как управлять шаговым двигателем с помощью джойстика. Фото Как управлять шаговым двигателем с помощью джойстика

Если оптимизировать, то как минимум так

Как управлять шаговым двигателем с помощью джойстика. Смотреть фото Как управлять шаговым двигателем с помощью джойстика. Смотреть картинку Как управлять шаговым двигателем с помощью джойстика. Картинка про Как управлять шаговым двигателем с помощью джойстика. Фото Как управлять шаговым двигателем с помощью джойстика

Как управлять шаговым двигателем с помощью джойстика. Смотреть фото Как управлять шаговым двигателем с помощью джойстика. Смотреть картинку Как управлять шаговым двигателем с помощью джойстика. Картинка про Как управлять шаговым двигателем с помощью джойстика. Фото Как управлять шаговым двигателем с помощью джойстика

Как управлять шаговым двигателем с помощью джойстика. Смотреть фото Как управлять шаговым двигателем с помощью джойстика. Смотреть картинку Как управлять шаговым двигателем с помощью джойстика. Картинка про Как управлять шаговым двигателем с помощью джойстика. Фото Как управлять шаговым двигателем с помощью джойстика

Чет я тебя не понимаю, ветку про обучению «правильному» программированию открыл, сюда влез, доведи дело ко конца. Человек вменяемый, в теме, может даже на замечания свои замечания, ну не кривой он и не заказчик не разу, и задумки одекватные.

ну сделай правильно, ТЗ тут как на ладоне, он все написал, просил укажите что можно «оптимизировать» подчистить, кривых задумок тоже не вижу.

а твой move, я бы «оптимизировал» в качестве последнего параметра задав четкое направление, вперед,назад,вперед-лево, вперед-право и т.д

xDriver, огромное Вам спасибо за помошь.

Я не то чтобы «в теме», но изучаю по маленьку:)

Я понимаю каждую строку кода и могу объяснить ее назначение (может не по научному, но по лузерски объяснить смогу), а вот целиком, с нуля скетч написать не могу.

У меня к вам еще одна прозьба, посоветуйте что почитать по теме. По структуре программ, по последовательности действий. Только не сильно заумное, написаное доступным языком. Еще раз большое спасибо.

Дайте пожалуйста ссыль на вашу ветку о «Правильном программировании».

Еще пару слов хотелось бы сказать про задумку.

Как управлять шаговым двигателем с помощью джойстика. Смотреть фото Как управлять шаговым двигателем с помощью джойстика. Смотреть картинку Как управлять шаговым двигателем с помощью джойстика. Картинка про Как управлять шаговым двигателем с помощью джойстика. Фото Как управлять шаговым двигателем с помощью джойстика

КонстатинБ,тема она вот. Я не скрываю ее. Разумеется ее надо было прикрепить. Но..

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

Как управлять шаговым двигателем с помощью джойстика. Смотреть фото Как управлять шаговым двигателем с помощью джойстика. Смотреть картинку Как управлять шаговым двигателем с помощью джойстика. Картинка про Как управлять шаговым двигателем с помощью джойстика. Фото Как управлять шаговым двигателем с помощью джойстика

ПС: Вот каркас по моему стилю. И что? Вам там будет сложно понять что-то. А значить изменить и поставить под вашие текущие задачи. Вот и выходит что мой скетч «бессысленен»

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

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

Да, еще важное замечание.

Шаговики я использую потому, что они есть. Точность шага не критична.

Как управлять шаговым двигателем с помощью джойстика. Смотреть фото Как управлять шаговым двигателем с помощью джойстика. Смотреть картинку Как управлять шаговым двигателем с помощью джойстика. Картинка про Как управлять шаговым двигателем с помощью джойстика. Фото Как управлять шаговым двигателем с помощью джойстика

ПС: Вот еще немного дописал. Но там есть еще косяки.

Источник

Ардуино шаговый двигатель: управляем с помощью микроконтроллера

Управляем шаговым двигателем с помощью Arduino и контроллера Easy Driver

Как управлять шаговым двигателем с помощью джойстика. Смотреть фото Как управлять шаговым двигателем с помощью джойстика. Смотреть картинку Как управлять шаговым двигателем с помощью джойстика. Картинка про Как управлять шаговым двигателем с помощью джойстика. Фото Как управлять шаговым двигателем с помощью джойстика

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

В этой статье мы детально обсудим один из типов двигателей – шаговый двигатель. Разберемся, в каких случаях уместно его использование. Рассмотрим пример подключения с использованием драйвера Easy Driver.

Необходимые элементы

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

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

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

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

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

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

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

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

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

Сборка драйвера

Самый простой метод использования драйвера EasyDriver – установить на нем коннекторы для последующей установки на макетной плате. Теоретически, можно закрепить коннекторы и на макетной плате.

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

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

После этого сверху поставьте драйвер запаяйте все коннекторы.

Схема подключения

После распайки пришло время подключить драйвер к Arduino. Схема подключения несложная и приведена на рисунке ниже.

Примечание. Маленький шаговый двигатель выглядит не так, как он изображен на схеме подключения. У него должен быть коннектор с четырьмя разъемами на конце.

Этот коннектор можно напрямую подключить к разъему с четырьмя коннекторами на драйвере (см. Рисунок после распайки выше). Только обратите внимание на даташит вашего двигателя.

Бывает такое, что разводка кабелей не соответсвует пинам на драйвере.

Важно! Шаговые двигатели потребляют больше тока, чем может предоставить Arduino. В связи с этим мы будем питать Arduino от 12 В. При этом вход для питания (М+) на EasyDriver подключен к пину Vin на Arduino. Благодаря этому, можно запитывать Arduino и двигатель от одного источника.

Программа Arduino для вращения шагового двигателя

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

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

digitalWrite(dirpin, LOW); // Устанавливаем направление

Опыт изучения Arduino. Подключение шагового двигателя. Часть программная и наладочная. — DRIVE2

Как управлять шаговым двигателем с помощью джойстика. Смотреть фото Как управлять шаговым двигателем с помощью джойстика. Смотреть картинку Как управлять шаговым двигателем с помощью джойстика. Картинка про Как управлять шаговым двигателем с помощью джойстика. Фото Как управлять шаговым двигателем с помощью джойстика

В прошлой части своего повествования о подключении ШД к ардуино я остановился на том, что собрал на макетной плате стабилизатор напряжения на 5 В, установил плату управления (ПУ) и подготовил выводы ШД. Настройка самой платы заключается в установке тока двигателя и выбора значения микрошага.

Начнём с тока двигателя. На ПУ надо подать только питание логической части, т.е. 5 В. Плюс подается на вывод VDD (может быть обозначен VCC, VLOG), минус на GND. ШД и его питание пока не подаю. Сам процесс регулировки сводится к установке Vref.

Формула Vref для A4988 изменяется от номинала токочувствительных резисторов. Это два чёрных прямоугольника на плате драйвера. Обычно подписаны R050 или R100.

Vref = Current Limit * 8 * (RS)

RS = 0,100
Vref = Current Limit * 8 * 0,100 = Current Limit / 1,25

RS = 0,050
Vref = Current Limit * 8 * 0,050 = Current Limit / 2,5

гдеVref – напряжение на пине, который задаёт ток двигателя.Current Limit – ток шагового двигателя.

RS — сопротивление резистора — датчика тока.

Измерять Vref проще всего на подвижном выводе подстроечного резистора. Минус мультиметра (в режиме измерения напряжения постоянного тока соединяется с выводом GND, а плюс цепляется за жало отвёрточки, которой кручу подстроечный резистор. Ток своего двигателя я не знал и подобрал опытным путём.

Если пересчитать по формуле, то получу ток:

Vref = Current Limit * 8 * 0,100 = Current Limit / 1,25

отсюда
Current Limit = 1,25 * Vref = 1,25 * 0,28 = 0,35 А или 350 мА

С током разобрался. Теперь микрошаг.

За микрошаг отвечают выводы MS (micro step) MS1, MS2, MS3.Теперь пару слов о том, что такое микрошаг. Из таблицы видно, что это дробное число. Допустим ШД совершает полный оборот за 200 шагов.

Если будет выбран микрошаг 1/4, то полный оборот будет совершаться уже за 800 шагов, а при микрошаге 1/16 — за 3200 шагов. Для чего это нужно? При полном шаге получается больший момент, меньшая точность и больше шумность.

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

Забегая вперёд, скажу что поигрался с разными значениями, но остановился на 1/16, соединив выводы MS1, MS2, MS3 с выводом VDD.ПУ настроена — можно подключать двигатель и его питание.

Напомню, что одна из обмоток у меня это синий и зелёный провод, вторая — белый и оранжевый.

Схематически подключение ШД к ПУ выглядит у меня так:

После подачи напряжений питания на плату ШД стал произвольно двигаться. Виной тому наводки на выводах STEP (шаг) и DIR (direction — направление) — эти выводы отвечают за управление вращением ШД.Если соединить вывод DIR с выводом VDD, ШД будет двигаться в одну сторону, а если с GND, то в другую.

При переходе напряжения от низкого к высокому уровню на выводе STEP ШД совершает 1 микрошаг. Т.е. для вращения двигателя на этот вывод нужно подавать прямоугольные импульсы с низким уровнем около нуля и высоким около 5 В, так называемые TTL-уровни. Генератором таких импульсов у меня будет плата ардуино.

Я загрузил в неё скетч из примеров под названием Blink. В оригинале он формирует на 13 выводе платы (в моём случае Arduino Nano) импульсы с частотой 1/2 Гц (1 с подается высокий уровень, затем 1 с низкий уровень).

При такой частоте ШД совершил бы один оборот (при микрошаге 1/16) за 6400 с! Так долго я ждать не хотел))) и стал повышать частоту двигателя. Устойчивой работы мне удалось добиться на частотах вплоть до 10 кГц. Т.е. длительность импульса и паузы у меня составляют по 50 мкс.

Операторы delay в скетче пришлось заменить на delayMicroseconds, потому что delay умеет работать только со временами от 1 мс. В итоге скетч стал выглядеть так:

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

Пробный запуск показал полную работоспособность схемы. Двигатель не перегревается и шаги не пропускает. Цель достигнута.

Для тех, кто осилил весь материал, видео устройства в работе.

Это первое моё видео предназначенное для публичного просмотра. И первое виде в блоге, снятое мной.

Напишите в комментариях имеет ли смысл снимать видео или достаточно ограничиться статичными изображениями?

Всем Мира!
До свидания!

Шаговые двигатели и моторы Ардуино

Как управлять шаговым двигателем с помощью джойстика. Смотреть фото Как управлять шаговым двигателем с помощью джойстика. Смотреть картинку Как управлять шаговым двигателем с помощью джойстика. Картинка про Как управлять шаговым двигателем с помощью джойстика. Фото Как управлять шаговым двигателем с помощью джойстика

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

Их можно найти во многих устройствах рядом: от CD-привода до 3D-принтера или робота-манипулятора.

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

Шаговый двигатель в Ардуино

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

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

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

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

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

Такие параметры как угол поворота (шаги), направление движения задаются в программе для микроконтроллера.

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

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

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

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

Для такой коммутации используется схема-мост с четырьмя ключами. Самым распространенным драйвером является микросхема L298N. Этот мостовой драйвер управляет двигателем с током до 2 А и питанием до 46В.

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

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

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

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

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

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

Схема подключения изображена на рисунке ниже. Управляющие выходы с драйвера IN1-IN4 подключаются к любым цифровым контактам на Ардуино. В данном случае используются цифровые контакты 8-11. Питание подключается к 5В. Также для двигателя желательно использовать отдельный источник питания, чтобы не перегрелась плата Ардуино.

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

Подключение биполярного двигателя через драйвер L298 выглядит похожим образом. В качестве шагового двигателя используется Nema 17.

Для работы в программе Arduino IDE используется встроенная библиотека Stepper.

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

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

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

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

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

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

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

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

Заключение

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

Мы также рассмотрели пример написания скетча, использующего встроенную библиотеку Stepper.

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

Управление двигателем постоянного тока с помощью Arduino и ИМС L298

Как управлять шаговым двигателем с помощью джойстика. Смотреть фото Как управлять шаговым двигателем с помощью джойстика. Смотреть картинку Как управлять шаговым двигателем с помощью джойстика. Картинка про Как управлять шаговым двигателем с помощью джойстика. Фото Как управлять шаговым двигателем с помощью джойстика

Подключив к Arduino микросхему моста L298, вы сможете управлять двигателем постоянного тока.

Двигатель постоянного тока (DC) является наиболее распространенным типом электродвигателей. Двигатели постоянного тока обычно имеют только два вывода, один положительный и один отрицательный. Если вы подключите эти два вывода напрямую к аккумулятору, двигатель начнет крутиться. Если же поменять полярность подаваемого напряжения, двигатель будет вращаться в противоположном направлении.

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

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

Эта схема называется Н-мостом потому, что она использует четыре транзистора, подключенных таким образом, что схема выглядит как буква “Н”.

Для сборки данной схемы вы можете использовать дискретные транзисторы, но в этом руководстве мы будем использовать микросхему Н-моста L298.

L298 может управлять скоростью и направлением вращения двигателей постоянного тока и шаговых двигателей и может управлять двумя двигателями одновременно.

Допустимый ток для каждого из двигателей составляет 2 ампера. Однако при таких токах вам будет необходимо использовать радиаторы.

Распиновка микросхемы L298 показана на рисунке ниже. Техническое описание L298 можно скачать здесь.

Распиновка микросхемы L298 (вид сверху)

Распиновка микросхемы L298

Необходимые комплектующие

Комплектующие для эксперимента управления двигателем постоянного тока с помощью ArduinoСхема включения микросхемы L298 для управления двумя электродвигателями

Схема выше показывает, как подключить микросхему L298 для управления двумя электродвигателями. Для управления каждым двигателем у микросхемы есть по три вывода: вход 1 (IN1), вход 2 (IN2) и включение A (EN A) для двигателя 1, и вход 3 (IN3), вход 4 (IN4) и включение B (EN B) для двигателя 2.

Поскольку в данном руководстве мы будем управлять только одним электродвигателем, то мы подключим Arduino к выводам IN1 (вывод 5), IN2 (вывод 7) и EN A (вывод 6) микросхемы L298.

Выводы 5 и 7 цифровые, то есть для вращения двигателя в заданную сторону на эти выводы необходимо подавать неизменяющиеся в времени сигналы логического нуля или единицы.

В то время, как на вывод 6 необходимо подавать широтно-импульсно-модулированный (ШИМ) сигнал, который управляет скоростью вращения двигателя.

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

Выбор направления вращения двигателя при работе с микросхемой L298

IN1IN2Двигатель
остановлен
1вращение вперед
1вращение назад
11остановлен

В таблице ниже приведено описание подключения микросхемы L298 к нашей плате Arduino Mega 2560.

Подключение микросхемы L298 к плате Arduino

Выводы L298Выводы ArduinoНазначение
IN1вывод 8выбор направления вращения двигателя
IN2вывод 9
EN AШИМ вывод 2управление скоростью вращения двигателя

Для установки значений на выводах 8 и 9 платы Arduino мы будем использовать функцию digitalWrite(), а для установки занчений на выводе 2 – функцию analogWrite().

Ниже показана фотография стенда, собранного для проведения эксперимента.

Стенд для проведения эксперимента по управлению двигателем постоянного тока с помощью Arduino и микросхемы Н-моста L298

Сборка

Теперь двигатель должен сначала вращаться по часовой стрелке в течение 3 секунд, а затем против часовой стрелки так же в течение 3 секунд.

Видео

Отладочная плата Arduino Mega 2560 построена на микроконтроллере ATmega2560.

Она имеет 54 цифровых входных/выходных выводов (15 из которых могут использоваться в качестве ШИМ выходов), 16 аналоговых входов, 4 порта UART (аппаратных последовательных порта), кварцевый резонатор 16 МГц, подключение USB, разъем питания, разъем ICSP и кнопку перезагрузки. Она содержит всё необходимое для работы с микроконтроллером;…

Набор перемычек (папа-папа)

Набор перемычек папа-папа. 40 штук по 15 см.

L298 – сдвоенный Н-мостовой драйвер для управления двунаправленными нагрузками с токами до 2А и напряжениями от 4,5 до 46 вольт. Микросхема разработана для управления реле, соленоидами, двигателями постоянного тока и шаговыми двигателями.

Подключение шагового двигателя к Arduino через драйвер L298

Как управлять шаговым двигателем с помощью джойстика. Смотреть фото Как управлять шаговым двигателем с помощью джойстика. Смотреть картинку Как управлять шаговым двигателем с помощью джойстика. Картинка про Как управлять шаговым двигателем с помощью джойстика. Фото Как управлять шаговым двигателем с помощью джойстика

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

Кроме шагового двигателя (ШД) и Arduino нам потребуется ещё плата драйвера L298, которую можно приобрести у нас в магазине.

Шаговый двигатель позволяет точно спозиционировать вал, поворачивая его на небольшой угол. Один такой поворот зовётся шаг. Соответственно, одной из важных характеристик привода является количество шагов на оборот, то есть «разрешение» поворота.

ШД способен удерживать свою позицию даже в случае внешнего крутящего момента! Шаговые двигатели делятся на униполярные и биполярные.

Мы будем использовать униполярный ШД, так как биполярный требует специальный драйвер для управления, тогда как униполярным можно легко управлять даже при помощи сборки транзисторов.

Обратите внимание – биполярные ШД имеют 4 провода на выходе, униполярные – не 4 (5 или более).

Количество выводов зависит от количества обмоток в двигателе, чаще всего их 4 –поэтому 5 проводов (4 обмотки и общий). Управление униполярным двигателем, в теории, сводится к перебору обмоток (подачи поочерёдно логической единицы). Задержка между переключением обмотки определяет скорость и ускорение двигателя.

Для управления шаговым двигателем сгодится любой контроллер Arduino, мы же используем Arduino UNO. От шаговика отходят две пары проводов и общий(GND). A, A+ подключаются к MA, MA+, также и B, B+ к MB, MB+.

Питание 12В подаётся на первый контакт разъёма питания, 5В – на второй, GND – на третий (см. фото ниже). Выводы IN1-IN4 подключаются по порядку к цифровым пинам с 8 по 11 – по ним передаются управляющие импульсы.

После подключения надо загрузить в контроллер программу-пример stepper_oneRevolution из библиотеки Stepper (включена в комплект поставки). Можете добавить ее либо с этой страницы, либо найти в Файл Примеры Stepper stepper_oneRevolution

Подключение шагового двигателя к Arduino через драйвер L298

const int stepsPerRevolution = 200; // steps per revolution of your motor// initialize the stepper library on pins 8 through 11:Stepper myStepper(stepsPerRevolution, 8,9,10,11); // set the speed at 60 rpm: // initialize the serial port: // step one revolution in one direction: Serial.println(“clockwise”); myStepper.step(stepsPerRevolution); // step one revolution in the other direction: Serial.println(“counterclockwise”); myStepper.step(-stepsPerRevolution);

Шаговый двигатель 28BYJ-48 с драйвером ULN2003 и Arduino UNO | РОБОТОША

Как управлять шаговым двигателем с помощью джойстика. Смотреть фото Как управлять шаговым двигателем с помощью джойстика. Смотреть картинку Как управлять шаговым двигателем с помощью джойстика. Картинка про Как управлять шаговым двигателем с помощью джойстика. Фото Как управлять шаговым двигателем с помощью джойстика

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

Обычно, сервоприводы ограничены углом поворота в диапазоне от 0 до 180°, шаговый же двигатель может вращаться непрерывно, подобно двигателю постоянного тока. Преимуществом шаговых двигателей является то, что можно достичь гораздо большей степени контроля над движением.

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

28BYJ-48 — это маленький, дешевый, 5 вольтовый шаговый моторчик с редуктором. Передаточное число редуктора у него примерно 64:1, что позволяет получить вполне достойный крутящий момент для моторчика такого размера и скорость порядка 15 об/мин.

С некоторыми программными хитростями для постепенного ускорения можно достичь более 25 об/мин. Эти маленькие шаговики вместе с небольшой платкой-драйвером на базе м/сх ULN2003 для использования совместно c Arduino UNO можно приобрести здесь за сущие копейки.

Достаточно выгодное приобретение, если сравнивать с редукторным двигателем постоянного тока, контроллером двигателя и колесным энкодером!

Размеры шагового двигателя 28BYJ-48

Дешевизна и миниатюрность делает 28BYJ идеальным вариантом для небольших робототехнических приложений, а также для знакомства с управлением шаговыми двигателями, используя Arduino. Ниже представлена детальная спецификация шагового двигателя 28BYJ-48.

Тип мотораУниполярный шаговый двигатель
Число фаз4
Подключение5-выводов (к контроллеру двигателя)
Рабочее напряжение5-12 вольт
Частота100 Гц
Сопротивление по постоянному току50 Ом ± 7%(25°C)
Частота под нагрузкой> 600 Гц
Частота на холостом ходу> 1000 Гц
Крутящий момент> 34.3 мН*м (120 Гц)
Момент самопозиционирования> 34.3 мН*м
Стопорящий момент600-1200 г*см
Тяга300 г*см
Сопротивление изоляции> 10 МОм (500 В)
Класс изоляцииA
Шумhttp://robotosha.ru/arduino/stepper-motor-28byj-uln2003-arduino.html

Управление двигателями и сервоприводами с помощью Ардуино

Как управлять шаговым двигателем с помощью джойстика. Смотреть фото Как управлять шаговым двигателем с помощью джойстика. Смотреть картинку Как управлять шаговым двигателем с помощью джойстика. Картинка про Как управлять шаговым двигателем с помощью джойстика. Фото Как управлять шаговым двигателем с помощью джойстика

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

Самый простой и популярный вариант – это двигатель постоянного тока. Он завоевал любовь любителей своей доступностью, простотой регулировки оборотов.

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

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

Двигатель постоянного тока

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

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

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

Управление скоростью вращения

При подключении к питающей сети двигатель постоянного тока начинает вращаться с номинальной скоростью. Чтобы понизить частоту вращения нужно ограничить ток. Для этого вводят балластные сопротивления, но это снижает КПД установки в целом и появляется лишний источник тепла. Для более эффективного регулирования напряжения и тока используют другой метод – ШИМ-регулирование.

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

То есть период делится на две части:

Отношение времени импульса к общему времени периода называют коэффициентом заполнения:

обратная величина называется “скважность”:

Для описания режима работы ШИМ-контроллера используют оба понятия: и коэффициент заполнения, и скважность.

Ток потребления двигателя зависит от его мощности. Число оборотов, как было сказано, зависит от тока. Ток можно регулировать, изменяя величину приложенного к обмоткам напряжения.

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

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

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

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

Подключаем к ардуино

У меня лежал маленький моторчик, кажется от кассетного плеера, значит, его номинальное напряжение будет ниже 5 вольт, тогда выходного питания ардуины будет достаточно. Я запитаю его от пина «5V», т.е. от выхода линейного стабилизатора расположенного на плате. По схеме, которую вы видите ниже.

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

Для регулировки оборотов я добавил переменный резистор в схему, подключив его к аналоговому входу А0. Для быстрого соединения я использовал беспаечную макетную плату, как её еще называют «breadboard».

В обвязку транзистора я установил токоограничивающий резистор (для снижения тока заряда затворной ёмкости, это убережет порт от сгорания и питание микроконтроллера от просадок и его зависания) на 240 Ом, и притянул его к земле резистором на 12 кОм, это нужно делать, чтобы он стабильнее работал и быстрее разряжалась затворная ёмкость.

Подробно о полевых транзисторах описано в статье на нашем сайте. Я использовал мощный, распространённый и не слишком дорогой mosfet с n-каналом и встроенным обратным диодом IRF840.

Вот так выглядит мой лабораторный стенд в сборе:

Функция ШИМ-регулирования вызывается при записи в соответствующий выход (3, 5, 6, 9, 10, 11) значения от 0 до 255 командой AnalogWrite(pin, значение). Логика её работы изображена на графиках ниже.

Такой сигнал подаётся на затвор транзистора:

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

int sensorPin = A0; // вход с потенциометра

int motorPin = 3; // выход ШИМ на затвор тр-ра

analogWrite(motorPin, map (analogRead(sensorPin), 0, 1023, 0, 256));

В функции analogWrite я присваиваю значение на ШИМ-выход, через команду map, её использование позволяет убрать несколько строчек кода и одну переменную.

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

При этом вместо 5В на нагрузку можно подавать любое напряжение, например 12В, не забудьте соединить минус питания с контактом, например 12В, не забудьте соединить минус питания с контактом GND на плате микроконтроллера.

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

Сервоприводы

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

Сервопривод, это двигатель управляемый отрицательной обратной связью.

Обычно с сервопривода выходит три провода:

Сервопривод состоит из:

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

Основные характеристики сервоприводов:

Обычно период сигнала равен 20 мс, а длительность управляющего импульса:

В редких случаях длина импульсов может отличаться, например 760 и 1520 мкс соответственно, эту информацию можно уточнить в технической документации на привод. Одним из популярнейших сервоприводов для хобби является Tower Pro SG90 и подобные модели. Стоит недорого – порядка 4 долларов.

Он удерживает на валу 1.8 кг/см, и в комплекте с ним идут крепежные винты и рычаги со шлицами под вал. На деле этот малыш довольно сильный, и в движении одним пальцем его остановить весьма проблематично – начинает выпадать из пальцев сам привод – такая его сила.

Управление сервоприводом и Ардуино

Как уже было сказано, управление осуществляется изменением длительности импульса, но не стоит путать этот метод с ШИМ(PWM), его правильное назвать PDM (Pulse Duration Modulation). Незначительные отклонения по частоте сигнала (20 мс – длительность, частота 50 Гц) особой роли не играют. Но не стоит отклоняться от частоты более чем на 10 Гц, двигатель может работать рывками или сгореть.

Схема подключение к ардуино довольно проста, можно и запитать привод от 5v –пина, но не желательно. Дело в том, что при старте происходит небольшой скачок тока, это может вызвать просадку по питанию и ложные состояния выходов микроконтроллера. Хотя 1 маленький привод (типа SG90) можно, но не более.

Для управления такими сервоприводами с ардуино в вашем распоряжении есть встроенная в IDE библиотека Servo, у неё небольшой набор команд:

Эта библиотека позволяет управлять 12-ю сервоприводами с плат UNO, Nano и подобных (mega368 и 168) при этом исчезает возможность использовать ШИМ на 9 и 10 пине. Если у вас MEGA – вы можете управлять 48-ю сервами, но на пинах 11 и 12 исчезнет ШИМ, если вы используете до 12 серв, то функционирование ШИМ остается полноценным на всех контактах.

Если вы подключили эту библиотеку – вы не сможете работать с 433 МГц приёмниками/передатчиками. Для этого есть библиотека Servo2, которая в остальном идентична.

Вот пример кода, который я использовал для экспериментов с сервоприводом, он есть в стандартном наборе примеров:

#include // подключаем библиотеку

Servo myservo; // объявили имя переменной для сервопривода myservo

int potpin = 0; // пин для подключения задающего потенциометра

int val; // переменная для сохранения результатов чтения сигнала с потенциометра

myservo.attach(9); // устанавливаем 9 пин, как управляющий выход для сервы

val = analogRead(potpin); // результаты чтения потенциометра сохр в пер. val, они будут в диапазоне от 0 до 1023

val = map(val, 0, 1023, 0, 180); // переводим диапазон измерений с аналогового входа 0-1023

// в диапазон заданий для сервы 0-180 градусов

myservo.write(val); // передаем преобр. сигнал с пот-ра на упр. вход сервы

delay(15); // задержка нужна для стабильной работы системы

Заключение

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

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

Пример использования сервоприводов в альтернативной энергетике: отслеживание угла падения солнечных лучей и корректирование положения солнечных панелей в электростанциях.

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

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

Как управлять шаговым двигателем с помощью джойстика. Смотреть фото Как управлять шаговым двигателем с помощью джойстика. Смотреть картинку Как управлять шаговым двигателем с помощью джойстика. Картинка про Как управлять шаговым двигателем с помощью джойстика. Фото Как управлять шаговым двигателем с помощью джойстика

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

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

В следующий момент, подаем на начало обмотки минус, на конец плюс. Условимся, что по правилу правой руки (буравчика

Источник

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *