Одно из самых интересных в хобби-электронике – это использование двигателей для «оживления» ваших проектов.
Однако добавление мотора в ваш проект может оказаться непростой задачей, особенно, если вы до этого с приводами не работали.
Данная статья даст вам понимание принципов работы двигателей различных типов и пояснит многие необходимые нюансы и их особенности.
Принцип работы двигателей
Перед тем как разбираться, как именно моторы работаю, давайте сосредоточимся на том, для чего они используются. Моторы используют электромагнитные силы для обеспечения движения, преобразования электроэнергии в механическую.
Магнитные поля создают силу, которая может перемещать объекты. Каждый магнит имеет магнитное поле с северным и южным полюсом. Если вы попробуете приблизить два северных полюса двух магнитов, они будут отталкиваться. То же самое произойдет, если вы попытаетесь приблизить два южных полюса. Если полюса одинаковые, они будут отталкиваться друг от друга.
Уроки Arduino. Управление моторами с библиотекой GyverMotor
Если же вы приблизите северный полюс одного с южному полюсу другого магнита, они притянутся с определенным усилием. То есть, противоположные полюса притягиваются друг к другу.
Электродвигатель использует свойства магнитов отталкиваться и притягиваться для генерации движения. В обычном электродвигателе два магнита: постоянный и переменный. Переменный магнит называется электромагнитом. Электромагнит создается с помощью пропускания электрического тока через проводник.
Постоянный магнит постоянно имеет магнитное поле (северный и южный полюса), а электромагнит генерирует магнитное поле только, когда через него пропускают электрический ток. Сила магнитного поля электромагнита может быть увеличена с помощью повышения тока, проходящего через проводник или методом формирования нескольких обмоток проводника.
В электродвигателе электромагнит устанавливается на ось таким образом, что он может свободно вращаться внутри магнитного поля постоянного магнита. В момент, когда через проводник проходит электрический ток, переменное магнитное поле взаимодействует со статическим магнитным полем магнита, возникают силы отталкивания и притяжения. Это заставляет электромагнит вращаться, возникает движение.
Основные узлы электродвигателя:
— Постоянный магнит (магниты), в случае, когда он установлен неподвижно, называется статором;
— внутри статора есть катушка, которая установлена на оси и вращается, называется ротором.
Двигатели постоянного тока
Двигатели постоянного тока (DC motor) во многом являются самыми простыми электродвигателями. Большинство «щеточных» двигателей работают одинаково. Есть ротор и статор. Есть магниты на статоре и катушка на роторе с магнитным полем, которое генерируется с помощью подачи на нее силы тока. Есть щетки внутри мотора, которые заставляют двигаться ротор.
При использовании источника постоянного тока, для управления подобным двигателем практически ничего не надо. Скорость его вращения зависит от силы тока, которая поступает на катушки от источника питания к коммутатору.
Для вращения оси двигателя в противоположном направлении, достаточно подключить контакты от источника питания к двигателю наоборот.
Шаговые двигатели
Как и двигатели постоянного тока, шаговые двигатели состоят из ротора и статора. Но, в отличие от других двигателей, ротор шагового двигателя представляет из себя постоянный магнит, который вращается внутри полей, создаваемых электромагнитами. Статор состоит из нескольких катушек, которые расположены в корпусе мотора. Когда ток проходит через катушки, подвижный вал двигателя (который является, по сути, постоянным магнитом) располагается в соответствии с генерируемым электромагнитной катушкой полем. Когда катушки заряжаются в определенной последовательности, вал двигателя выбирает новые положения и, соответственно, начинает вращаться.
Ротор приводится в движение последовательной подачей напряжения на катушки. Шаговый двигатель имеет возможность проворачивать ротор на определенный шаг в зависимости от разрешения импульса.
Шаговые двигатели являются отличным выбором для проектов на Arduino (и не только) по нескольким причинам. Они стоят относительно недорого, у них маленькая погрешность, следовательно – это идеальный выбор для управления с разомкнутой системой управления (без дополнительных датчиков положения рабочего органа). Шаговые двигатели будут обеспечивать заданное положение ротора исключительно в зависимости от поданной силы тока.
Эти двигатели предназначены для вращения в одном и противоположном направлении. Если вы подключите источник питания к контактам шагового двигателя, вал начнет вращаться. Если вы подключите проводники наоборот, он будет вращаться в противоположном направлении. Правда, стоит учесть, что в некоторых шаговых двигателях вращение в противоположную сторону невозможно. Перед его запуском, уточняйте этот момент.
Серводвигатели
Обычные серводвигатели для моделистов используются для поворота и удерживания определенной позиции в диапазоне от 0 до 180 градусов. Благодаря этому они находят широкое применение в робототехнике, приводах позиционирования. В производстве серводвигатели используются в модулях рулевого управления автомобилями, лодками, в механизмах фокусировки современных видеокамер.
В большинстве случаем серводвигатели имеют три провода: питание, земля и сигнал. Обычно провод питания красного цвета, земля – черного или коричневого. Сигнал – желтый, оранжевый или белый.
В серводвигателях, которые, например, используются в системах управления радиоуправляемых машин, электродвигатель подключен к потенциометру. Стандартный приемник/передатчик посылает ШИМ-сигналы на серву. Электроника (небольшая плата-контроллер) внутри серводвигателя, переводит ширину импульса в положение. Когда на серву поступает сигнал к повороту, питание будет подаваться на мотор до тех пор, пока потенциометр не достигнет положения, которое будет соответствовать заданному предварительно через приемник/передатчик.
Сигнал управления является цифровым ШИМ сигналом с частотой 50 Гц. Каждые 20 миллисекунд подается цифровой импульс управления. Продолжительность (ширина) импульса находится в диапазоне от 1.0 миллисекунды до 2.0 миллисекунд. 1.5 – середина диапазона. Большая ширина импульса может использоваться для дополнительного хода, который выходит за нормальный рабочий диапазон.
ШИМ (широтно-импульсная модуляция) сигнал иногда называют ШПМ (широтно-позиционная модуляция), хотя это не корректно.
Импульс шириной 1.5 миллисекунды обычно устанавливает серводвигатель в «нейтральное» положение или 90 градусов. Импульс шириной 1.25 миллисекунд может установить его в 0 градусов, а импульс 1.75 миллисекунды в 180 градусов. Физические ограничения и время для различных серводвигателей могут отличаться, но его нейтральное положение всегда соответствует 1.5 миллисекундам.
Вибрационные двигатели
Вибрационные двигатели часто используются в мобильных устройствах для регистрации наличия движения.
Вибрационные моторы по конструктивному исполнению похожи на большинство шаговых двигателей и двигателей постоянного тока. Отличием является то, что на конце ротора установлен эксцентрик. При движении ротора, эксцентрик заставляет механизм внутри корпуса двигателя вибрировать. Интенсивность вибрации зависит как от размеров двигателя, так и от размеров эксцентрика.
На видео сверху показан мотор, установленный на металлической основе. Обратите внимание, как лист металла совершает волновые движения под действием вибрации вибрационного мотора.
Как выбрать двигатель для проекта
Выбор типа двигателя для вашего проекта зависит от того, что именно вы собираетесь автоматизировать. Если вы хотите установить камеру и обеспесить ее поворот влево-вправо, идеальным выбором будет серводвигатель. Если вы передаете движение на зубчатые колеса с необходимостью обеспечения реверса, лучшим выбором станет шаговый двигатель.
Естественно, отличным выбором для управления вашим двигателем станет плата Arduino или ее клоны. Отличительной позитивной чертой данных плат является то, что их пины могут быть использованы для комплексных проектов, включая дополнительное подключение к двигателям датчиков, систем контроля и т.п.
Дальше в статье приведена информация о том, как можно быстро «оживить» выбранный вами предварительно двигатель с использованием платы Arduino.
Использование шагового двигателя с Arduino
Стоит отметить, что «оживлять» свои проекты с помощью плат Arduino и оболочки Arduino IDE для их программирования очень легко из-за наличия большого количества уже готовых библиотек. Подключение шагового двигателя к плате Arduino отличается от подключения двигателя постоянного тока. Существует специальная библиотека и функция, встроенные в Arduino IDE. Более детально об этом вы можете почитать здесь.
После открытия Arduino IDE, перейдите в меню во вкладку
File -> Examples -> Stepper -> stepper_oneRevolution
Данная программа дает возможность управлять уни- или биполярным шаговым двигателем после его подключения к цифровым пинам 8-11 на плате Arduino. После загрузки скетча на плату Arduino, шаговый двигатель должен сделать один оборот по часовой стрелке, после этого – один поворот против часовой стрелки.
Ардуино: драйвер L298N для мотора постоянного тока
Чтобы управлять вращением мотора, любому контроллеру необходимо специальное устройство, которое часто называют драйвером (от англ. driver — водитель). В уроке «управление двигателем постоянного тока» мы уже пробовали запускать и вращать в разные стороны мотор двумя способами: с помощью одного транзистора и с помощью микросхемы драйвера L293D.
На этот раз, попробуем использовать более мощный двухканальный драйвер L298N, который часто можно встретить в виде модуля красного цвета (хотя встречаются зеленые и синие модели).
Как и в случае L293N, драйвер представляет собой полный H-мост, главная функция которого — менять полярность на нагрузке. А если в качестве нагрузки будет мотор постоянного тока, то смена полярности приведет к смене направления его вращения. Это то, что нам нужно.
Спецификация модуля L298N:
- напряжение питания двигателей: до 35 В;
- рабочий ток (на каждый канал): 2 А;
- периодический ток (80% — вкл, 20% — выкл): 2,5 А;
- кратковременный ток: 3 А;
- вес: 33 г.
Драйвер L298N работает с более высоким током, чем L293D. С помощью L298N мы можем управлять и слабыми моторчиками типа n20 и мощными моторами, такими как JGA25 или даже JGA37 с крутящим моментом до 20-25 кг/см. Хватит для большинства DIY проектов!
Компоненты для урока «Ардуино: драйвер L298N для мотора постоянного тока» на shop.robotclass.ru
Назначение элементов и контактов на плате драйвера L298N
Посмотрим внимательнее на модуль и разберемся с его контактами.
Логика микросхемы L298N питается напряжением 5 Вольт. Для этого на модуле предусмотрен стабилизатор напряжения 78M05. На вход этого стабилизатора можно подавать напряжение до 35 В, а на выходе всегда получается 5 В. Рабочий ток у 78M05 небольшой — до 500 мА. Однако, при желании, от него можно питать и саму плату Ардуино Уно, к которой мы будем подключать драйвер.
Тройная клемма снизу отвечает за питание модуля. Самый левый контакт — питание моторов. Сюда можно подавать до 35 В. Средний контакт — земля, которая должна быть общей для модуля и контроллера. Правый контакт имеет двоякую функцию. Если на модуле стоит перемычка питания стабилизатора, то на этом контакте будет +5В и к нему можно ничего не подключать, либо питать от него контроллер.
Но если перемычку убрать, то к этому контакту нужно будет непременно подключить +5В от контроллера, чтобы питать драйвер. В нашем примере мы будем ориентироваться именно на вариант без перемычки.
Две другие винтовые клеммы (OUT1/2 и OUT 3/4) служат для подключения моторов. Надо отметить, что моторы постоянного тока неполярные, но от того на какой контакт мотора подается плюс, а на какой минус, зависит направление их вращения.
Наконец, осталось разобраться с контактами управления. Их по три штуки на каждый мотор. Контакты ENA и ENB позволяют управлять моторами с помощью ШИМ сигнала. Если ENA и ENB подключить строго к +5 В, то моторы будут всегда вращаться с максимальной возможной скоростью. Именно для этого режима на модуле предусмотрены две перемычки рядом с ENA и ENB.
С помощью контактов IN1,IN2,IN3,IN4 задаётся режим работы моторов. Таблица режимов для двигателя A имеет вид:
Режим | IN1 | IN2 |
Вращение в одну сторону | 1 | |
Вращение в обратную сторону | 1 | |
Блокировка мотора | 1 | 1 |
Отключение мотора |
Тут следует пояснить последние два режима. Если нам необходимо резко остановить мотор, то выбираем режим блокировки. Для плавной остановки — выбираем «отключение мотора»
Подключение драйвера L298N к Ардуино Уно
Чтобы попробовать драйвер в деле, подключим его к контроллеру Ардуино Уно и к любому, попавшему под руку, небольшому мотору постоянного тока. В данном уроке мы используем самый простой мотор с напряжением питания 1,5-3 Вольта. Для питания этого мотора нам будет достаточно двух пальчиковых батареек. В такой схеме просто невозможно запитать микросхему драйвера от встроенного стабилизатора, поэтому питание +5В будем брать от Ардуино.
Также отметим, что при данной схеме подключения с внешним питанием +5 В, нам нужно убрать соответствующую перемычку, о которой мы говорили выше (перемычка питания от стабилизатора)!
Ну и раз уж мы планируем управлять скоростью вращения, уберем перемычку с контакта ENA.
Принципиальная схема
Внешний вид макета
Программа для драйвера мотора L298N
Напишем простую программу, которая будет вращать мотор в одну сторону 3 секунды с максимальной скоростью, и затем 3 секунды в обратную сторону с более медленной скоростью.
byte ena = 3; byte in1 = 4; byte in2 = 5; void setup() < pinMode( ena, OUTPUT ); pinMode( in1, OUTPUT ); pinMode( in2, OUTPUT ); >void loop() < // выставляем 100% мощность на моторе А — 255 из 255 analogWrite( ena, 255 ); // выставляем режим мотора — вращение по часовой digitalWrite( in1, HIGH ); digitalWrite( in2, LOW ); delay(3000); // пауза 3сек // выставляем мощность на мотора А — 150 из 255 analogWrite( ena, 150 ); // режим мотора — вращение против часовой digitalWrite( in1, LOW ); digitalWrite( in2, HIGH ); delay(3000); // пауза 3сек >
Загружаем программу на Ардуино, затем подключаем к драйверу элементы питания и смотрим как ведёт себя моторчик.
Следует отметить, что данная программа не гарантирует вращение мотора с какой-то конкретной скоростью. Мы лишь можем менять мощность, передаваемую на мотор, с помощью изменения коэффициента заполнения ШИМ сигнала (duty cycle). Подробнее о ШИМ сигнале можно узнать в одном из наших уроков.
Заключение
Итак, модуль драйвера L298N оказался не таким сложным, как могло показаться. Все драйверы имеют практически схожие контакты управления: EN,IN1,IN2. Бывает, что отдельный вход EN отсутствует, и тогда ШИМ сигнал подается на IN1,IN2. Разобравшись с одним драйвером, мы можем с легкостью применять в своих проектах и другие модели.
Как уже было написано, L298N является достаточно мощным чтобы потянуть большинство моторов, применяемых в DIY проектах. Это и популярные пластиковые желтые моторы с редуктором и более мощные металлические JGA25 и JGA37.
Отдельно следует отметить и ещё одно распространенное применение L298N. С помощью этого драйвера можно управлять биполярными шаговыми двигателями, хотя и не настолько эффективно, как это делают специализированные драйвера типа A4988.
Источник: robotclass.ru
Управление щёточными моторами
Как вы знаете, никакую нагрузку мощнее светодиода нельзя подключать к Ардуино напрямую, особенно моторчики. Ардуино, да и вообще любой микроконтроллер – логическое устройство, которое может давать только логические сигналы другим железкам, а те уже могут управлять нагрузкой. Кстати, урок по управлению мощной нагрузкой постоянного и переменного тока у меня тоже есть. “Драйвером” мотора могут быть разные железки, рассмотрим некоторые из них.
Реле
При помощи обычного реле можно просто включать и выключать мотор по команде digitalWrite(пин, состояние) , прямо как светодиод: При помощи двойного модуля реле (или просто двух реле) можно включать мотор в одну или другую сторону, а также выключать:
Купить модуль реле можно на Али:
Мосфет
Полевой транзистор, он же мосфет, позволяет управлять скорость вращения мотора при помощи ШИМ сигнала. При использовании мосфета обязательно нужно ставить диод, иначе индуктивный выброс с мотора очень быстро убьёт транзистор. Скорость мотора можно задавать при помощи ардуиновской analogWrite(пин, скорость) . Вместо “голого” мосфета можно использовать готовый китайский модуль:
Купить мосфет модуль можно на Aliexpress:
Реле и мосфет
Если объединить реле и мосфет – получим весьма колхозную, но рабочую схему управления скоростью и направлением мотора:
Специальный драйвер
Лучше всего управлять мотором при помощи специального драйвера, они бывают разных форм и размеров и рассчитаны на разное напряжение и ток, но управляются практически одинаково. Рассмотрим основные драйверы с китайского рынка:
Драйвер | Vmot | Ток (пик) | ~Стоимость | Aliexpress |
L298N | 4-50V | 1A (2A) | 100р | Купить |
MX1508 | 2-9.6V | 1.5A (2.5A) | 20р | Купить |
TA6586 | 3-14V | 5A (7A) | 100р (чип 30р) | Купить |
L9110S | 2.5-12V | 0.8A (1.5A) | 50р | Купить |
TB6612 | 4.5-13.5V | 1.2A (3A) | 80р | Купить |
BTS7960 | 5.5-27V | 10A (43A) | 300р | Купить |
Большой | 3-36V | 10A (30A) | 700р | Купить |
Остальные драйверы смотри у меня вот тут. Схемы подключения и таблицы управления:
Пины направления управляются при помощи digitalWrite(pin, value) , а PWM – analogWrite(pin, value) . Управление драйвером по двум пинам может быть двух вариантов:
// === первый тип, встречается чаще всего === // вперёд digitalWrite(pinA, 0); analogWrite(pinB, value); // value 0.. 255 // назад digitalWrite(pinA, 1); analogWrite(pinB, 255 — value); // value 0.. 255 // === второй тип, например большой драйвер === // вперёд digitalWrite(pinA, 0); analogWrite(pinB, value); // value 0.. 255 // назад digitalWrite(pinA, 1); analogWrite(pinB, value); // value 0.. 255 // разница в том, что ШИМ не нужно инвертировать как 255 — значение!
Моторы переменного тока
Мотором переменного тока (220V от розетки) можно управлять при помощи диммера на симисторе, как в уроке про управление нагрузкой.
Библиотеки
У меня есть удобная библиотека для управления мотором – GyverMotor, документацию можно почитать вот здесь. Особенности библиотеки:
- Контроль скорости и направления вращения
- Работа с ШИМ любого разрешения
- Программный deadtime
- Отрицательные скорости
- Поддержка всех типов драйверов
- Плавный пуск и изменение скорости
- Режим “минимальная скважность”
Помехи и защита от них
Индуктивный выброс напряжения
Мотор – это индуктивная нагрузка, которая в момент отключения создаёт индуктивные выбросы. У мотора есть щетки, которые являются источником искр и помех за счёт той же самой индуктивности катушки.
Сам мотор потребляет энергию не очень равномерно, что может стать причиной помех по линии питания, а пусковой ток мотора так вообще сильно больше рабочего тока, что гарантированно просадит слабое питание при запуске. Все четыре источника помех могут приводить к различным глюкам в работе устройства вплоть до срабатывания кнопок на цифровых пинах, наведения помех на аналоговых пинах, внезапного зависания и даже перезагрузки микроконтроллера или других железок в сборе устройства.
Отсечь индуктивный выброс с мотора можно при помощи самого обычного диода, чем мощнее мотор, тем мощнее нужен диод, то есть на более высокое напряжение и ток. Диод ставится встречно параллельно мотору, и чем ближе к корпусу, тем лучше. Точно таким же образом рекомендуется поступать с электромагнитными клапанами, соленоидами, электромагнитами и вообще любыми другими катушками. Логично, что диод нужно ставить только в том случае, если мотор или катушка управляется в одну сторону. Важные моменты:
- При работе с драйвером и управлением в обе стороны диод ставить не нужно и даже нельзя!
- При управлении ШИМ сигналом рекомендуется ставить быстродействующие диоды (например серии 1N49xx ) или диоды Шоттки (например серии 1N58xx).
- Максимальный ток диода должен быть больше или равен максимальному току мотора.
- Защитный диод, принимающий на себя обратный выброс ЭДС самоиндукции, также называется шунтирующим диодом, снаббером, flyback диодом.
- В природе существуют мосфеты со встроенным защитным диодом. Этот диод является отдельным элементом и такой мосфет обычно имеет нестандартный корпус, читайте документацию на конкретный транзистор.
- Диод, который показан на схематическом изображении мосфета, не является защитным диодом: это слабый и медленный “паразитный” диод, образованный при производстве транзистора. Он не защитит мосфет от выброса, нужно обязательно ставить внешний!
Помехи от щёток
Искрящиеся щетки мотора, особенно старого и разбитого, являются сильным источником электромагнитных помех, и здесь проблема решается установкой керамических конденсаторов с ёмкостью 0.1-1 мкФ на выводы мотора. Такие же конденсаторы можно поставить между каждым выводом и металлическим корпусом, это ещё сильнее погасит помехи. Для пайки к корпусу нужно использовать мощный паяльник и активный флюс, чтобы залудиться и припаяться как можно быстрее, не перегревая мотор.
Помехи по питанию, просадка
Мотор потребляет ток не очень равномерно, особенно во время разгона или в условиях переменной нагрузки на вал, что проявляется в виде просадок напряжения по питанию всей схемы. Беды с питанием решаются установкой ёмких электролитических конденсаторов по питанию, логично что ставить их нужно максимально близко к драйверу, то есть до драйвера. Напряжение должно быть выше чем напряжение питания, а ёмкость уже подбирается по факту. Начать можно с 470 мкф и повышать, пока не станет хорошо.
Разделение питания
Если описанные выше способы не помогают – остаётся только одно: разделение питания. Отдельный малошумящий хороший источник на МК и сенсоры/модули, и отдельный – для силовой части, в том числе мотора. Иногда ради стабильности работы приходится вводить отдельный БП или отдельный аккумулятор для надёжности функционирования устройства.
Экранирование
В отдельных случаях критичными являются даже наводки от питающих проводов моторов, особенно при управлении ШИМ мощными моторами и управлении мощными шаговиками в станках. Такие наводки могут создавать сильные помехи для работающих рядом чувствительных электронных компонентов, на аналоговые цепи, наводить помехи на линии измерения АЦП и конечно же на радиосвязь. Защититься от таких помех можно при помощи экранирования силовых проводов: экранированные силовые провода не всегда удаётся купить, поэтому достаточно обмотать обычные провода фольгой и подключить экран на GND питания силовой части. Этот трюк часто используют RC моделисты, летающие по FPV.
Видео
Полезные страницы
- Набор GyverKIT – большой стартовый набор Arduino моей разработки, продаётся в России
- Каталог ссылок на дешёвые Ардуины, датчики, модули и прочие железки с Aliexpress у проверенных продавцов
- Подборка библиотек для Arduino, самых интересных и полезных, официальных и не очень
- Полная документация по языку Ардуино, все встроенные функции и макросы, все доступные типы данных
- Сборник полезных алгоритмов для написания скетчей: структура кода, таймеры, фильтры, парсинг данных
- Видео уроки по программированию Arduino с канала “Заметки Ардуинщика” – одни из самых подробных в рунете
- Поддержать автора за работу над уроками
- Обратная связь – сообщить об ошибке в уроке или предложить дополнение по тексту ([email protected])
Источник: alexgyver.ru