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

Как подключить двигатель постоянного тока к Arduino. Какие схемы использовать для управления скоростью и направлением вращения. Как реализовать ШИМ-управление двигателем на Arduino. Какие компоненты нужны для создания H-моста.

Содержание

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

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

  • Двигатель потребляет значительный ток, поэтому нельзя подключать его напрямую к выводам Arduino
  • Для изменения направления вращения нужно менять полярность питания двигателя
  • Скорость вращения регулируется изменением напряжения или с помощью широтно-импульсной модуляции (ШИМ)
  • Необходима защита от обратного выброса ЭДС при отключении двигателя

Рассмотрим основные схемы подключения двигателя постоянного тока к Arduino и способы управления им.


Простейшая схема включения/выключения двигателя

Самая простая схема позволяет только включать и выключать двигатель. Для этого используется транзистор, управляемый с цифрового выхода Arduino:

  • Коллектор транзистора подключается к минусу двигателя
  • Эмиттер — к земле
  • База — через резистор 1-2 кОм к выводу Arduino
  • Плюс двигателя — к источнику питания

При подаче высокого уровня на вывод Arduino транзистор открывается и двигатель начинает вращаться. Для защиты от ЭДС параллельно двигателю ставится диод.

Управление скоростью с помощью ШИМ

Для плавной регулировки скорости двигателя используется широтно-импульсная модуляция (ШИМ). Arduino имеет встроенные аппаратные ШИМ-выходы, которые можно использовать для этой цели.

Схема подключения аналогична предыдущей, но транзистор управляется ШИМ-сигналом. Изменяя скважность импульсов от 0 до 100%, можно регулировать среднее напряжение на двигателе и, соответственно, его скорость.

Пример кода для управления скоростью:


int motorPin = 9; // ШИМ-выход Arduino

void setup() {
  pinMode(motorPin, OUTPUT);
}

void loop() {
  // Плавное увеличение скорости
  for (int speed = 0; speed <= 255; speed++) {
    analogWrite(motorPin, speed);
    delay(20);
  }
  
  // Плавное уменьшение скорости  
  for (int speed = 255; speed >= 0; speed--) {
    analogWrite(motorPin, speed);
    delay(20);
  }
}

Схема H-моста для управления направлением вращения

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


H-мост позволяет:

  • Вращать двигатель в обоих направлениях
  • Останавливать двигатель
  • Применять динамическое торможение

H-мост можно собрать на дискретных транзисторах или использовать готовые микросхемы драйверов двигателей, например L293D или L298N.

Использование готовых модулей драйверов двигателей

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

  • L298N Dual H-Bridge Motor Driver
  • DRV8833 Dual Motor Driver Carrier
  • TB6612FNG Dual Motor Driver Carrier

Такие модули содержат всю необходимую обвязку и позволяют легко подключать двигатели к Arduino. Они обеспечивают:

  • Управление 1-2 двигателями
  • Защиту от перегрузки по току
  • Регулировку скорости с помощью ШИМ
  • Изменение направления вращения

Обратная связь и контроль скорости вращения

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

  • Оптический энкодер — измеряет угол поворота вала
  • Датчик Холла — определяет число оборотов
  • Тахогенератор — выдает напряжение, пропорциональное скорости

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


Защита двигателя и схемы управления

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

  • Диоды для защиты от обратного выброса ЭДС
  • Ограничение пускового тока
  • Гальваническая развязка цепей управления и силовой части
  • Защита от перегрузки по току
  • Температурная защита

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

Примеры проектов с двигателями постоянного тока и Arduino

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

  • Робот-автомобиль с дифференциальным приводом
  • Система позиционирования солнечных панелей
  • Автоматизированная кормушка для животных
  • ЧПУ-станок или 3D-принтер
  • Управляемые жалюзи или рольставни

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


Универсальный Motor Shield 4-канальный L293D H-Bridge Управление двигателем постоянного тока для Arduino

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

Войдите, чтобы управлять адресами


ИЛИ

Страна АвстралияАвстрияАзербайджанАландские острова́АлбанияАлжирАмериканское СамоаАнгильяАнголаАндорраАнтарктидаАнтигуа и БарбудаАргентинаАрменияАрубаАфганистанБагамыБангладешБарбадосБахрейнБеларусьБелизБельгияБенинБермудыБолгарияБоливияБонайреБосния и ГерцеговинаБотсванаБразилияБританская территория Индийского океанаБританские Виргинские островаБрунейБуркина-ФасоБурундиБутанВануатуВатиканВенгрияВенесуэлаВиргинские острова СШАВосточный ТиморВьетнамГабонГаитиГайанаГамбияГанаГваделупаГватемалаГвинеяГвинея-БисауГерманияГернсиГибралтарГондурасГонконг, КитайГренадаГренландияГрецияГрузияГуамДанияДемократическая Республика КонгоДжерсиДжибутиДоминикаДоминиканская РеспбликаЕгипетЗамбияЗападная СахараЗимбабвеИдтиИзраильИндияИндонезияИорданияИрландияИсландияИспанияИталияКабо-ВердеКазахстанКаймановы островаКамбоджаКамерунКанадаКанарские острова,КатарКенияКипрКирибатиКитайКокосовые острова [Килинг]КолумбияКоморыКосовоКоста-РикаКот-дИвуарКубаКувейтКыргызстанКюрасаоЛаосЛатвияЛесотоЛиберияЛиванЛитваЛихтенштейнЛюксембургМаврикийМавританияМадагаскарМайоттаМакао, КитайМакедонияМалавиМалайзияМалые отдаленные острова СШАМальдивыМальтаМароккоМартиникаМаршалловы островаМексикаМикронезияМозамбикМолдоваМонакоМонголияМонтсерратМьянма [Бирма]НамибияНауруНевисНепалНигерНигерияНидерландыНикарагуаНиуэНовая ЗеландияНовая КаледонияНорвегияОбъединенные Арабские ЭмиратыОманОстров БувеОстров МэнОстров НорфолкОстров РождестваОстров Херд и острова МакдональдсОстрова КукаОстрова ПиткэрнОстрова Теркс и КайкосПакистанПалауПалестинаПанамаПапуа — Новая ГвинеяПарагвайПеруПольшаПортугалияПуэрто-РикоРеспублика КонгоРеюньонРоссияРуандаРумынияСамоаСан-МариноСан-Томе и ПринсипиСаудовская АравияСвазилендСвятая ЕленаСвятой Винсент и ГренадиныСеверные Марианские островаСейшелыСен-БартельмиСен-БартельмиСен-МартенСен-Пьер и МикелонСенегалСент-Китс и НевисСент-ЛюсияСент-ЭстатиусСербияСингапурСинт-МартенСирияСловакияСловенияСоединенное КоролевствоСоединенные ШтатыСоломоновы островаСуданСуринамСьерра-ЛеонеТаджикистанТаиландТайвань, КитайТанзанияТокелауТонгаТринидад и ТобагоТувалуТунисТуркменистанТурцияУгандаУзбекистанУкраинаУоллис и ФутунаУругвайФарерские островаФиджиФилиппиныФинляндияФолклендские островаФранцияФранцузская ГвианаФранцузская ПолинезияХорватияЧадЧерногорияЧешская РеспубликаЧилиШвейцарияШвецияШпицберген и Ян-МайенШри-ЛанкаЭквадорЭкваториальная ГвинеяЭль СальвадорЭритреяЭстонияЭфиопияЮжная АфрикаЮжная Георгия и Южные Сандвичевы островаЮжная КореяЮжные Французские ТерриторииЯмайкаЯпония

Город BerlinAach B TrierAach, HegauAachenAalenAarbergenAasbuettelAbbenrodeAbenbergAbensbergAbentheuerAbrahamAbsbergAbstattAbtsbessingenAbtsgmuendAbtsteinachAbtswindAbtweilerAchbergAchernAchimAchslachAchstettenAchtAchtelsbachAchterwehrAchtrupAckendorfAddebuellAdelbergAdelebsenAdelheidsdorfAdelmannsfeldenAdelschlagAdelsdorfAdelsheimAdelshofen, Kr FuerstenfeldbruckAdelshofen, MittelfrAdelsriedAdelzhausenAdenauAdenbachAdenbuettelAdendorfAderstedtAdlersteigeAdligstadtAdlkofenAdmannshagen-BargeshagenAdorf/Vogtl.

AebtissinwischAerzenAffalterbachAffingAffinghausenAfflerAgathenburgAgethorstAglasterhausenAhamAhausAhausenAhlbeckAhlden (Aller)Ahlefeld-BistenseeAhlenAhlerstedtAhlsdorfAhlstaedtAhnatalAhnebyAhnsbeckAhnsenAholfingAholmingAhorn, BadenAhorn, Kr CoburgAhorntalAhrbrueckAhrensboekAhrensburgAhrensfeldeAhrenshagen-DaskowAhrenshoeftAhrenstedtAhrenvioelAhrenvioelfeldAicha Vorm WaldAichachAichelbergAichenAichhaldenAichstettenAichtalAichwaldAidenbachAidhausenAidlingenAiglsbachAilertchenAindling

Управление скоростью, направлением и остановкой двигателя с использованием NRF24L01 — совместимость с Arduino

в Ардуино 0 1,331 Просмотров

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

Тестер транзисторов / ESR-метр / генератор

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

..

Подробнее

Проект основан на микроконтроллере Atmega328, микросхеме драйвера двигателя постоянного тока (H-мост) LM18201, радиочастотном модуле NRF24L01, стабилизаторе напряжения 5 В и других компонентах.

Эта плата может приводить в действие двигатель с напряжением до 24 В постоянного тока с током нагрузки до 3 А. Подробная информация о конфигурации выводов Arduino представлена ​​ниже, пользователь может написать свой собственный код и использовать это оборудование. Данный проект совместим с дистанционным управлением с одним джойстиком.

Микроконтроллер Atmega328 является сердцем проекта, чип LMD18201 управляет двигателем, стабилизатор LM317-ADJ обеспечивает микроконтроллер напряжением 5 В, стабилизатор LM1117 выдает 3,3 В для радиомодуля NRF24L01.

Примечание. Контроллер управляет двигателем постоянного тока с напряжением от 12 до 24 вольт. Однако чип LMD18201 может управлять двигателем с более высоким напряжением (до 48В). Поэтому при питания 48 В снимите перемычку VCC J2, подайте 48 В на разъем CN3 для двигателя и отдельно подайте 5 В на разъем CN1 для питания микроконтроллера.

Для эффективного охлаждения LMD18201 рекомендуется использовать радиатор большого размера.

Блок питания 0…30 В / 3A

Набор для сборки регулируемого блока питания…

Подробнее

Контакты Arduino

  • LMD18201 : Arduino
  • PWM-Pin5 : Pin D5
  • Direction-Pin3 : Pin D6
  • Brake-Pin4 : Pin 7

 

  • NRF24L01 : Arduino
  • CE : Pin D9
  • CSN : Pin D10
  • MOSI : Pin D11
  • MISO : Pin D12
  • CSK : Pin D13

Скетч

Скетч для Arduino доступен для скачивания в конце статьи. Код «TESTED CODE RX» предназначен для Atmega328, а код «TESTED CODE TX» предназначен для передатчика.

Тестирование устройства

Подключите двигатель постоянного тока от 12 В до 24 В к MG1 (разъем двигателя), подключите источник питания от 12 В до 24 В к CN3. Установите перемычку J2 и перемычку J1. Включите питание, включите передатчик NRF24L01 с джойстиком, двигатель должен работать с джойстиком.

Скачать файлы проекта (75,8 KiB, скачано: 93)

Портативный паяльник TS80P

TS80P- это обновленная версия паяльника TS80 Smart, работающий от USB…

Подробнее

Двигатель 2021-09-09

С тегами: Двигатель

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

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


мощные светодиоды, нагреватели, реле и соленоиды или внешние цепи.

1: Однонаправленное управление Вкл./Выкл.

2: Пропорциональное управление скоростью без обратной связи

3: Использование широтно-импульсной модуляции (ШИМ)

4: Переключение на стороне высокого напряжения

5: Двунаправленное управление — прямое и обратное (только для двигателей с пост. )

6: Управление с обратной связью

1: Однонаправленное управление ВКЛ/ВЫКЛ

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

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

Если вы не устраните эту проблему, либо в переключателе возникнет дуга (или, если это полупроводник, он сгорит), либо изоляция обмотки выйдет из строя. Энергия ДОЛЖНА иметь, куда деваться.

 

Это может быть обеспечено, как показано здесь (слева), путем:

  • добавления последовательно конденсатора C1 и резистора R1 на клеммы (подавитель помех) ИЛИ
  • , включая ОГРАНИЧИТЕЛЬНЫЙ ДИОД. Он подключен так, что смещается в обратном направлении, когда двигатель работает, но проводит ток, когда начинается отрицательный всплеск, и «коротко замыкает».

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

Здесь ток двигателя переключается транзистором. Транзистор открывается положительным напряжением, приложенным к R1. Когда этот ток прекращается, двигатель останавливается. Как и прежде, диод D1 предотвращает скачок напряжения, который может повредить транзистор.

 

У поставщиков часто есть селекторы, позволяющие выбрать нужные параметры. Для этой схемы я выбрал силовой трансформатор типа Дарлингтона BDX33C (показан СПРАВА), который имеет Icmax=10A, Vcemax=100В, Pt=70Вт (на радиаторе) и Hfe > 750.

Нам нужен базовый ток 2 А / 750 = 3 мА, поэтому R1 = (5 В — 1,4 В) / 3 мА = 1,2 К

R2 предназначен для удаления базового тока, когда TR1 выключен — 10 кОм в порядке.

2: Пропорциональное регулирование скорости без обратной связи

Скорость двигателя постоянного тока с постоянными магнитами зависит от нагрузки и напряжения питания, как показано здесь.

Если скорость холостого хода составляет 10 000 об/мин при питании 10 В, то при питании 6 В оно будет работать со скоростью 6 000 об/мин.

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

Вернемся к этому графику.

Предположим, у нас есть источник питания 12 В. При отсутствии напряжения V1 транзистор Дарлингтона TR1 (снова BDX33C) закрыт, и ток не течет. R1=10k обеспечивает отсутствие тока базы. R2 может быть довольно маленьким — например. 470 Ом. Теперь, если мы подадим на вход напряжение, скажем, 5 В, напряжение на эмиттере возрастет до 5 — 2 * 0,75 = 3,5 В, и двигатель будет вращаться. Увеличивайте Vin, напряжение двигателя увеличивается.

Подключите Vin к положительному источнику питания 12 В, и вы получите 12 — 1,5 = 10,5 В на двигателе.

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

Этот подход прекрасно работает, но есть… способ получше.

3: Использование широтно-импульсной модуляции (ШИМ)

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

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

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

На этом рисунке вы можете видеть мощный полевой МОП-транзистор, который можно использовать для включения и выключения двигателя.
При управлении от цифровой схемы, такой как Arduino, вам нужно будет выбрать МОП-транзистор с логическим уровнем!

IRLZ44NPBF рассчитан на 40 А и 55 В — цена 0,77 пенса Mouser. R1=330 Ом, R2=10 кОм

Sparkfun (и другие поставщики) предлагают FQP30N06L (корпус TO220 60 В 30 А) по цене около 0,80 фунтов стерлингов

Зачем нужны резисторы?

R1 (обычно 220 Ом) с емкостью затвора гасит острые края, которые могут вызывать колебания.

R2 (обычно 10 кОм) гарантирует, что если управляющий сигнал станет разомкнутой цепью, полевой МОП-транзистор все равно отключится.

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

На этой диаграмме показаны некоторые примеры различных соотношений меток и пробелов.
«Отметка» — это когда сигнал высокий, т.е. полное напряжение; и «пробел», когда он равен нулю.
Двигатель получает импульсы через равные промежутки времени, поэтому, когда отношение метки к пространству очень низкое (как показано слева, 10%), можно увидеть, что двигатель «пульсирует» или вибрирует. Вы можете улучшить это, используя более быстрые и короткие импульсы. Однако каждый раз, когда транзистор переключается, некоторая мощность теряется — так что это компромисс, зависящий от инерции нагрузки на двигатель.

4: Переключение на стороне высокого напряжения

Для многих приложений переключение шины заземления не подходит. Например, в автомобилях заземление шасси используется в качестве общей шины, и все устройства включаются или выключаются путем переключения положительного источника питания. МОП-транзисторы с каналом P хорошо подходят для этого приложения, но требуют напряжения затвора, установленного с положительной шины. Мы можем очень легко создать это, используя один транзистор, как показано здесь. Транзистор также защищает контроллер, такой как Arduino, от более высоких напряжений, используемых для управления нагрузкой.

Как это работает:

Здесь BC108 — или любой другой маломощный NPN-транзистор — управляется с выхода Arduino. С логической 1 на выходном контакте он включается, и затвор полевого транзистора опускается, включая полевой транзистор и двигатель (или другую нагрузку)

FQP27P06 недорог и общедоступен. В этой конфигурации он подходит для напряжений от 8 до 40 В; для других напряжений вам может потребоваться отрегулировать значения R1 и R2, чтобы поддерживать Vgss в безопасном диапазоне.

1N5408 защищает МОП-транзистор от противоЭДС, когда двигатель выключен.

ШИМ: как и предыдущая схема, ее также можно использовать для ШИМ-управления; однако затвор MOSFET действует как конденсатор; для быстрой ШИМ лучше использовать специальную микросхему драйвера, чтобы обеспечить ток, необходимый для зарядки и разрядки емкости затвора.

5: Двунаправленное управление — прямое и обратное

Только двигатели с постоянным током можно заставить вращаться в обратном направлении путем изменения полярности питания. Для этого нам нужно больше коммутаторов в виде «H-моста». Диаграмма и таблица истинности показывают результат различных положений переключателя.

С4 С3 С2 С1 Результат
0 0 0 х обрыв цепи: свободный ход двигателя
0 0 1 0 обрыв цепи: свободный ход двигателя
Х х 1 1 короткое замыкание!
0 1 0 0 обрыв цепи: свободный ход двигателя
0 1 0 1 динамическое торможение
0 1 1 0 привод заднего хода
1 0 0 0 обрыв цепи: свободный ход двигателя
1 0 0 1 привод вперед
1 0 1 0 динамическое торможение
1 1 х х короткое замыкание!

 

Здесь вы видите переключатели, настроенные на вращение вперед. Ток протекает через S1, двигатель и на землю через S4.
Если S1 и S2 (или S3, S4) оба замкнуты, возникает состояние короткого замыкания. Этого следует избегать.
Когда S1 и S3 (или S2 и S4) оба замкнуты, двигатель фактически «закорочен». Затем двигатель тормозится до полной остановки (рекуперативное торможение). При больших двигателях и нагрузках, а также электронных переключателях (транзисторах любой формы) этого условия также следует избегать, поскольку чрезмерные токи могут разрушить Н-мост.

ИС H-моста Semiconductor обеспечивают дополнительную схему для предотвращения нежелательных и разрушительных условий. Для «маломощных» приложений микросхема L298 может обеспечивать ток до 4 А при напряжении 40 В. Для более требовательных приложений H-мост дискретных МОП-транзисторов может управляться от ИС драйвера H-моста, такой как HIP 4081. H-мосты

лучше всего подходят для использования в системах ШИМ, как описано выше.

6: Управление с обратной связью

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

Контроллер двигателя постоянного тока с использованием реле и МОП-транзистора — интерфейс Arduino

Представленный здесь проект представляет собой недорогое решение для управления скоростью и направлением коллекторного двигателя постоянного тока высокой мощности . Традиционные контроллеры двигателей постоянного тока основаны на полупроводниковой схеме, известной как H-мост. Здесь мы сделали конфигурацию H-моста, используя 2 сильноточных реле, которые могут работать как с высоким напряжением, так и с высоким током. Дополнительные МОП-транзисторы используются для управления скоростью двигателя. Эти полевые МОП-транзисторы могут быть удалены в случае, если требуется только управление направлением, замкните контакты стока и истока полевых МОП-транзисторов. Проект требует 3 управляющих входных сигнала, все входы оптически изолированы, чтобы предотвратить попадание шума и высокого напряжения в логическую схему. Большой размер 9Радиатор 0076 является обязательным для MOSFET.

Для проекта требуется 3 входных сигнала, 2 x TTL 3 В до 5 В для управления направлением и один ШИМ Рабочий цикл от 0 до 100% для управления скоростью. Рабочее питание 12 В постоянного тока для логической схемы и реле, питание двигателя от 12 до 90 В постоянного тока , нагрузка до 20 А .

Код Arduino

Пример кода Arduino для тестирования платы. Arduino Uno или Nano — правильный выбор, подробнее об интерфейсе см.

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

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