Как легко и просто запрограммировать мотор в Arduino? Пошаговое руководство

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

Реле

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

Мосфет

Полевой транзистор, он же мосфет, позволяет управлять скорость вращения мотора при помощи ШИМ сигнала. При использовании мосфета обязательно нужно ставить диод, иначе индуктивный выброс с мотора очень быстро убьёт транзистор. Скорость мотора можно задавать при помощи ардуиновской analogWrite(пин, скорость).

Реле и мосфет

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

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

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

Драйвер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рКупить

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

Пины направления управляются при помощи 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, системы охлаждения, клеммных колодок, разъемов для подключения сигналов, стабилизатора напряжения и защитных диодов.

Драйвер шагового двигателя 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); }

Рейтинг
( 2 оценки, среднее 4.5 из 5 )
Понравилась статья? Поделиться с друзьями:
Для любых предложений по сайту: [email protected]