Как вы знаете, никакую нагрузку мощнее светодиода нельзя подключать к Ардуино напрямую, особенно моторчики. Ардуино, да и вообще любой микроконтроллер – логическое устройство, которое может давать только логические сигналы другим железкам, а те уже могут управлять нагрузкой. Кстати, урок по управлению мощной нагрузкой постоянного и переменного тока у меня тоже есть. “Драйвером” мотора могут быть разные железки, рассмотрим некоторые из них.
Реле
При помощи обычного реле можно просто включать и выключать мотор по команде digitalWrite(пин, состояние), прямо как светодиод:
При помощи двойного модуля реле (или просто двух реле) можно включать мотор в одну или другую сторону, а также выключать:
Купить модуль реле можно Реле aliexpress, aliexpress, искать
Мосфет
Полевой транзистор, он же мосфет, позволяет управлять скорость вращения мотора при помощи ШИМ сигнала. При использовании мосфета обязательно нужно ставить диод, иначе индуктивный выброс с мотора очень быстро убьёт транзистор. Скорость мотора можно задавать при помощи ардуиновской analogWrite(пин, скорость).
Вместо “голого” мосфета можно использовать готовый китайский модуль:
Купить мосфет модуль можно на Aliexpress: Мосфет модуль aliexpress, 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 — значение!
Помехи и защита от них
Индуктивный выброс напряжения
Мотор – это индуктивная нагрузка, которая в момент отключения создаёт индуктивные выбросы. У мотора есть щетки, которые являются источником искр и помех за счёт той же самой индуктивности катушки. Сам мотор потребляет энергию не очень равномерно, что может стать причиной помех по линии питания, а пусковой ток мотора так вообще сильно больше рабочего тока, что гарантированно просадит слабое питание при запуске. Все четыре источника помех могут приводить к различным глюкам в работе устройства вплоть до срабатывания кнопок на цифровых пинах, наведения помех на аналоговых пинах, внезапного зависания и даже перезагрузки микроконтроллера или других железок в сборе устройства. Отсечь индуктивный выброс с мотора можно при помощи самого обычного диода, чем мощнее мотор, тем мощнее нужен диод, то есть на более высокое напряжение и ток. Диод ставится встречно параллельно мотору, и чем ближе к корпусу, тем лучше. Точно таким же образом рекомендуется поступать с электромагнитными клапанами, соленоидами, электромагнитами и вообще любыми другими катушками. Логично, что диод нужно ставить только в том случае, если мотор или катушка управляется в одну сторону. Важные моменты:
- При работе с драйвером и управлением в обе стороны диод ставить не нужно и даже нельзя!
- При управлении ШИМ сигналом рекомендуется ставить быстродействующие диоды (например серии 1N49xx) или диоды Шоттки (например серии 1N58xx).
- Максимальный ток диода должен быть больше или равен максимальному току мотора.
- Защитный диод, принимающий на себя обратный выброс ЭДС самоиндукции, также называется шунтирующим диодом, снаббером, flyback диодом.
- В природе существуют мосфеты со встроенным защитным диодом. Этот диод является отдельным элементом и такой мосфет обычно имеет нестандартный корпус, читайте документацию на конкретный транзистор.
- Диод, который показан на схематическом изображении мосфета, не является защитным диодом: это слабый и медленный “паразитный” диод, образованный при производстве транзистора. Он не защитит мосфет от выброса, нужно обязательно ставить внешний!
Помехи от щёток
Искрящиеся щетки мотора, особенно старого и разбитого, являются сильным источником электромагнитных помех, и здесь проблема решается установкой керамических конденсаторов с ёмкостью 0.1-1 мкФ на выводы мотора. Такие же конденсаторы можно поставить между каждым выводом и металлическим корпусом, это ещё сильнее погасит помехи. Для пайки к корпусу нужно использовать мощный паяльник и активный флюс, чтобы залудиться и припаяться как можно быстрее, не перегревая мотор.
Помехи по питанию, просадка
Мотор потребляет ток не очень равномерно, особенно во время разгона или в условиях переменной нагрузки на вал, что проявляется в виде просадок напряжения по питанию всей схемы. Беды с питанием решаются установкой ёмких электролитических конденсаторов по питанию, логично что ставить их нужно максимально близко к драйверу, то есть до драйвера. Напряжение должно быть выше чем напряжение питания, а ёмкость уже подбирается по факту. Начать можно с 470 мкф и повышать, пока не станет хорошо.
Разделение питания
Если описанные выше способы не помогают – остаётся только одно: разделение питания. Отдельный малошумящий хороший источник на МК и сенсоры/модули, и отдельный – для силовой части, в том числе мотора. Иногда ради стабильности работы приходится вводить отдельный БП или отдельный аккумулятор для надёжности функционирования устройства.
Экранирование
В отдельных случаях критичными являются даже наводки от питающих проводов моторов, особенно при управлении ШИМ мощными моторами и управлении мощными шаговиками в станках. Такие наводки могут создавать сильные помехи для работающих рядом чувствительных электронных компонентов, на аналоговые цепи, наводить помехи на линии измерения АЦП и конечно же на радиосвязь. Защититься от таких помех можно при помощи экранирования силовых проводов: экранированные силовые провода не всегда удаётся купить, поэтому достаточно обмотать обычные провода фольгой и подключить экран на GND питания силовой части. Этот трюк часто используют RC моделисты, летающие по FPV.
Типы двигателей для использования в Arduino Что есть вообще?
вы можете выберите следующие движки для своих проектов использовать на Плата Arduino.
Познакомьтесь с каждым из них по их контактным данным:
моторный врач
Это двигатель постоянного тока , также называемый DC, потому что это постоянный ток. Его основная характеристика — преобразование электрической энергии в механическую благодаря магнитное поле . Это означает, что двигатель постоянно вращается в обоих направлениях, если полярность тока меняется.
Он состоит из статора ; который используется для создания полюсов и обычно состоит из магнитов или медных проводов; и ротором . Этот последний компонент принимает постоянный ток и имеет цилиндрическую форму из графита или других сплавов. Его основное применение — линейные двигатели, шаговые двигатели и серводвигатели. Их очень часто можно найти в игрушках. потому что их скорость можно контролировать.
Серводвигатель
Серводвигатель это особый тип двигателя, который используется для удержания оси в одном месте Таким образом, их можно повернуть на 180 ° или сделать полный оборот. Характеризуется большим крутящим моментом. генерируется его потенциометром , который работает с двигателем постоянного тока и используется для перемещения шестерен.
Пар Последовательные, Серводвигатель — это коробка, состоящая из платы Arduino , потенциометр, двигатель постоянного тока и шестерни. Он в основном используется в робототехнике, поэтому его можно увидеть на фабриках, в игрушках и даже в лифтах.
Драйвер L293D
Работа этого устройства заключается в управлять другими двигателями , что делает его идеальным для проектов Ардуино. Он может работать с 4-мя двигателями постоянного тока или с 2-мя шаговыми двигателями или, если хотите, с 2-мя серводвигателями. . Это означает, что их может быть комбинация, если это позволяют ваши клеммные колодки. В том числе Схемы 4 индивидуальный , вы можете контролировать, какую нагрузку получит каждый двигатель.
Его можно использовать на плате Arduino UNO в соответствии со следующими контактами:
- Цифровой 3 — PWM_Motor2
- Цифровой 4 — DIR_CLK
- Цифровой 5 — PWM_Motor4
- Цифровой 6 — PWM_Motor3
- Цифровой 7 — DIR_EN
- Цифровой 8 — DIR_SER
- Цифровой 9 — Серво_1
- Цифровой 10 — Серво_2
- Цифровой 11 — PWM_Motor1
- Цифровой 12 — DIR_LATCH
Пилот L298
Этот компонент отвечает за управление скоростью и направлением вращения двигателей при вращении. Он характеризуется совместимостью с широким температурным диапазоном fonctionnement, От 20 ° C до + 135 ° С . Выходной ток, генерируемый на канал, может достигать 2 ампера .
Штыревое соединение выглядит следующим образом:
- Контакт IN1 — ДВИГАТЕЛЬ А
- Контакт IN2 — ДВИГАТЕЛЬ А
- Контакт IN3 — ДВИГАТЕЛЬ B
- Контакт IN4 — ДВИГАТЕЛЬ B
- Шпиндель ENA — ШИМ
- Контакт ENB — ШИМ
Бесщеточный двигатель постоянного тока
Он также известен как бесщеточный двигатель, потому что не требует контактных колец. произвести изменение полярность. Он характеризуется своим свет, не требуя много entretien и быть менее дорогим по стоимости производства .
La сложность обращения с ним снизился в последнее время, что сделало его широко используемым инструментом в технологиях. Чтобы найти правильная полярность, Обнаружение магнитного поля используется с помощью ротора. Его механизм находится в лотках DVD-плееров и охладителей дисков.report this ad
Важные страницы
- Набор GyverKIT – большой стартовый набор Arduino моей разработки, продаётся в России
- Каталог ссылок на дешёвые Ардуины, датчики, модули и прочие железки с AliExpress у проверенных продавцов
- Подборка библиотек для Arduino, самых интересных и полезных, официальных и не очень
- Полная документация по языку Ардуино, все встроенные функции и макросы, все доступные типы данных
- Сборник полезных алгоритмов для написания скетчей: структура кода, таймеры, фильтры, парсинг данных
- Видео уроки по программированию Arduino с канала “Заметки Ардуинщика” – одни из самых подробных в рунете
- Поддержать автора за работу над уроками
- Обратная связь – сообщить об ошибке в уроке или предложить дополнение по тексту ([email protected])
4.5 / 5 ( 11 голосов )
Подключение драйвера L298N к Ардуино Уно
Чтобы попробовать драйвер в деле, подключим его к контроллеру Ардуино Уно и к любому, попавшему под руку, небольшому мотору постоянного тока. В данном уроке мы используем самый простой мотор с напряжением питания 1,5-3 Вольта. Для питания этого мотора нам будет достаточно двух пальчиковых батареек. В такой схеме просто невозможно запитать микросхему драйвера от встроенного стабилизатора, поэтому питание +5В будем брать от Ардуино.
Также отметим, что при данной схеме подключения с внешним питанием +5 В, нам нужно убрать соответствующую перемычку, о которой мы говорили выше (перемычка питания от стабилизатора)!
Ну и раз уж мы планируем управлять скоростью вращения, уберем перемычку с контакта ENA.
Принципиальная схема
Внешний вид макета
Лучшие моторизованные проекты Arduino, которые вы можете сделать с нуля
Лучшие моторизованные проекты Arduino можно найти в этом списке:
Бесщеточный привод двигателя постоянного тока
Вам понадобится Плата Arduino Nano типа R3 , потом бесщеточный двигатель постоянного тока и спиралей чтобы добраться до привода.
Коды передатчика:
# включает Серво esc; Программное обеспечение серии HC12 (2, 3); // прием, передача int th, чеснок, эле, красноперка; пустой параметр () { галстук (10); pinMode (A0, ВХОД); Серийный. начало (9600); начало (9600); } пустой цикл () { th = map (analogRead (A0), 0, 1023, 0, 180); печать (th); Серийный. печать (th); задержка (100); }
Вам нужно будет использовать следующие программные коды для приемника:
# включает Серво esc; Строковая запись; int ускоритель, th; пустой параметр () { галстук (10); Серийный. начало (9600); начало (9600); написать (170); задержка (2000); написать (90); задержка (2000); написать (140); задержка (2000); написать (90); задержка (2000); } пустой цикл () { да (String. available ()) { бабочка = Серия. readStringUntil (‘\ п’); если (вход. длина ()> 0) { написать (ускоритель); задержка (10); } } }
Двигатель с потенциометром
Чтобы в этом проекте Arduino нужно’ Arduino UNO, от un двигатель un поворотный потенциометр, один вставить пластину , сопротивление 10 кОм, LED и кабели.
После подключения всех компонентов вам нужно будет ввести эти коды:
# определить MOF_PIN 6 #define POT_PIN A1 горшок int = 0; пустой параметр () { pinMode (MOF_PIN, ВЫХОД); pinMode (POT_PIN, ВХОД); Серийный. начало (9600); } empty loop () { горшок = аналоговое чтение (POT_PIN); Серийный. println (лодка); AnalogWrite (MOF_PIN, горшок / 4); }
Драйвер для управления шаговым двигателем
Драйвер – это устройство, которое связывает контроллер и шаговый двигатель. Для управления биполярным шаговым двигателем чаще всего используется драйверы L298N и ULN2003.
Работа двигателя в биполярном режиме имеет несколько преимуществ:
- Увеличение крутящего момента на 40% по сравнению с униполярными двигателями;
- Возможность применения двигателей с любой конфигурацией фазной обмотки.
Но существенным минусов в биполярном режиме является сложность самого драйвера. Драйвер униполярного привода требует всего 4 транзисторных ключа, для обеспечения работы драйвера биполярного привода требуется более сложная схема. С каждой обмоткой отдельно нужно проводить различные действия – подключение к источнику питания, отключение. Для такой коммутации используется схема-мост с четырьмя ключами.
Драйвер шагового двигателя на базе L298N
Этот мостовой драйвер управляет двигателем с током до 2 А и питанием до 46В. Модуль на основе драйвера L298N состоит из микросхемы L298N, системы охлаждения, клеммных колодок, разъемов для подключения сигналов, стабилизатора напряжения и защитных диодов.
Драйвер двигателя L298N
Драйвер шагового двигателя ULN2003
Описание драйвера шаговых двигателей UNL2003
Шаговые двигателями с модулями драйверов на базе ULN2003 – частые гости в мастерских Ардуино благодаря своей дешевизне и доступности. Как правило, за это приходится платить не очень высокой надежностью и точностью.
Другие драйвера
Существует другой вид драйверов – STEP/DIR драйверы. Это аппаратные модули, которые работают по протоколу STEP/DIR для связи с микроконтроллером. STEP/DIR драйверы расширяют возможности:
- Они позволяют стабилизировать фазные токи;
- Возможность установки микрошагового режима;
- Обеспечение защиты ключа от замыкания;
- Защита от перегрева;
- Оптоизоляция сигнала управления, высокая защищенность от помех.
В STEP/DIR драйверах используется 3 сигнала:
- STEP – импульс, который инициирует поворот на шаг/часть шага в зависимости от режима. От частоты следования импульсов будет определяться скорость вращения двигателя.
- DIR – сигнал, который задает направление вращения. Обычно при подаче высокого сигнала производится вращение по часовой стрелке. Этот тип сигнала формируется перед импульсом STEP.
- ENABLE – разрешение/запрет работы драйвера. С помощью этого сигнала можно остановить работу двигателя в режиме без тока удержания.
Одним из самых недорогих STEP/DIR драйверов является модуль TB6560-V2. Этот драйвер обеспечивает все необходимые функции и режимы.
Что мне следует иметь в виду при выборе идеального двигателя для моего проекта Arduino?
Перед тем, как выбрать двигатель для вашего проекта Arduino, вы должны учесть следующие факторы:
- Скорость отжима время. Другими словами, вам нужно будет понять, какая оптимальная скорость нужна двигателю для вашего проекта.
- Сила, приложенная к массе , также называемый пара в роторных двигателях. Вам необходимо принять во внимание, будет ли вес объекта, который вы хотите переместить, больше или меньше, чем мощность двигателя, необходимая для его перемещения.
- Возможность подачи электрического заряда. Другими словами, вы должны учитывать количество энергии, которое двигатель способен отдать в данный момент времени.
- Максимальные возможности работы. Это связано с нагрузкой, с которой двигатель должен работать, не ломаясь из-за прилагаемого усилия.
- Уровень точности — еще один фактор, который следует учитывать, поскольку движения, которые вам понадобятся в вашем проекте, могут требовать разной степени точности.
- Напряжение питания. Что касается электроники, важно, чтобы вы знали, что двигатель работает при разных напряжениях, поэтому плата Arduino должна обеспечивать одинаковое номинальное напряжение.
- Номинальный ток. Этот пункт относится к величине тока, который требуется двигателю для работы. Для определения рабочих логических значений необходимо учитывать сопротивление и номинальное напряжение.
- Энергия, поглощаемая двигателем в любой момент времени. Это называется электрической энергией и измеряет общую производительность двигателя на плате Arduino.
Помимо значений, упомянутых выше, вам нужно будет принять во внимание размеры двигатель, чтобы узнать, подходит ли он для этого места, монтажные кронштейны , вес и продолжительность жизни, среди других факторов. Под этим мы подразумеваем, что для выбора идеального двигателя в вашем проекте Arduino, нужно учитывать множество факторов , потому что ты можно найти актуатор, который имеет более высокое значение, чем другой, что не означает, что он лучший или тот, который вам нужен.
Пример скетча для управления
В наборе примеров библиотеки Stepper.h существует программа stepper_oneRevolution, в которой задаются все параметры для шагового двигателя – количество шагов, скорость, поворот.
#include const int stepsPerRevolution = 200; Stepper myStepper(stepsPerRevolution, 8,9,10,11); //подключение к пинам 8…11 на Ардуино void setup() { myStepper.setSpeed(60); //установка скорости вращения ротора Serial.begin(9600); } void loop() { //Функция ожидает, пока поступит команда, преобразовывает текст и подает сигнал на двигатель для его вращения на указанное число шагов. Serial.println(«Move right»); //по часовой стрелке myStepper.step(stepsPerRevolution); delay(1000); Serial.println(«Move left»); //против часовой стрелки myStepper.step(-stepsPerRevolution); delay(1000); }