- Управление мотором постоянного тока с помощью одного транзистора
- Введение
- Необходимые компоненты
- Схема подключения
- Программинг
- Результаты
- Использование ШИМ для регулировки скорости мотора
- Схема подключения
- Результат
- Управление щёточными моторами с Arduino
- Мосфет
- Реле и мосфет
- Специальный драйвер
- Моторы переменного тока
- Библиотеки
- Помехи и защита от них
- Индуктивный выброс напряжения
- Помехи от щёток
- Помехи по питанию, просадка
- Разделение питания
- Экранирование
- Видео
- Управление двигателем постоянного тока с помощью Arduino Uno
- Общие принципы ШИМ
- Принцип работы H-моста
- Необходимые компоненты
- Работа схемы
- Исходный код программы
- Подключение моторчика к Ардуино
- Управление двигателем на Ардуино
- Как подключить моторчик к Arduino
- Скетч. Подключение мотора напрямую
- Пояснения к коду:
- Скетч. Подключение мотора через транзистор
- Пояснения к коду:
- Скетч. Подключение мотора через драйвер
Управление мотором постоянного тока с помощью одного транзистора
В данной статье рассматривается наиболее простой способ подключения мотора постоянного тока к Arduino.
Введение
Моторы постоянного тока нельзя подключать напрямую к Arduino. Это обусловлено тем, что пины не способны выдавать ток более 40 мА. Мотору же, в зависимости от нагрузки, необходимо несколько сотен миллиампер. Потому возникает потребность увеличения мощности. Делается это, как-правило, с помощью транзисторов.
В статье «Транзисторы: схема, принцип работы, чем отличаются биполярные и полевые» можно ознакомиться с основными типами транзисторов и их принципами работы.
Так же рекомендуется посмотреть: Видеоуроки по Arduino, 5-я серия — Моторы и транзисторы. В данном уроке Джереми Блюм рассказывает о подключении мотора постоянного тока к Arduino через биполярный транзистор.
Необходимые компоненты
Мы рассмотрим вариант взаимодействия с полевым транзистором. Принципы подключения мотора будут разобраны на конкретном железе: DC-мотор, плата Arduino, N-канальный полевой транзистор, резистор на 10 кОм (R1), резистор на 220 Ом (R2).
Вы же в своих экспериментах вольны использовать то, что есть в наличии. Важны лишь 3 условия:
Схема подключения
По-сути, обмотка мотора представляет собой катушку индуктивности. В момент подачи напряжения возникнет обратная электродвижущая сила, которая может вывести из строя транзистор. Flyback диод устанавливается в обратном направлении и предотвращает утечку тока с мотора на транзистор. Поэтому, если в транзисторе нет flyback диода, его необходимо установить дополнительно: анод на исток, катод на сток.
Транзистор IRF530N является мощным и поставляется в корпусе TO-220. Ниже приведена его распиновка.
В данной схеме транзистор будет работать в ключевом режиме: по одной команде (установка уровня HIGH на затворе) от Arduino транзистор будет подключать мотор к источнику питания (отпираться), по другой команде (установка уровня LOW на затворе) — отключать мотор от источника питания.
Резистор R1 подтягивает к земле затвор транзистора. Номинал не принципиален — можно использовать любые резисторы в диапазоне от 1 до 10 кОм. Резистор R2 служит для защиты пина микроконтроллера. Диапазон, примерно, от 10 до 500 Ом.
Чтобы запитать данную схему, можно подключить к Arduino внешний источник питания на 6-9 В, либо подать питание непосредственно на макетную плату ( синяя шина — минус, красная шина — плюс).
Программинг
Для наибольшей простоты воспользуемся, пожалуй, самым известным скетчем из готовых примеров — Blink.
Посмотрим, что получилось.
Цифровой пин 13 раз в секунду меняет своё состояние. Когда на выходе устанавливается значение HIGH — загорается светодиод и начинает вращаться мотор. Когда устанавливается LOW — светодиод гаснет, а мотор останавливается.
Результаты
Была получена возможность подключать к выводам Arduino мощные устройства, в частности, моторы постоянного тока.
Использование ШИМ для регулировки скорости мотора
Если мотором управлять ничуть не сложнее, чем светодиодом, то, наверное можно изменять яркость скорость вращения мотора точно так же, как при работе со светодиодами? Именно так! С точки зрения Arduino абсолютно не важно с чем мы имеем дело.
Как вы уже, наверно, могли догадаться, для изменения скорости вращения мотора нам понадобится скетч Fade.
Схема подключения
Чтобы использовать возможности функции analogWrite(..) , нам придётся перейти на один из пинов (3/5/6/9/10/11), поддерживающих аппаратный ШИМ. Поскольку, по умолчанию, в скетче Fade задействован 9-й пин, остановим свой выбор на нём.
Результат
Была получена возможность изменять скорость вращения мотора, используя аппаратный ШИМ Arduino.
На чём данная статья подходит к завершению. Теперь вы смело можете использовать моторы постоянного тока в своих проектах!
Источник
Управление щёточными моторами с Arduino
Как вы знаете, никакую нагрузку мощнее светодиода нельзя подключать к Ардуино напрямую, особенно моторчики. Ардуино, да и вообще любой микроконтроллер – логическое устройство, которое может давать только логические сигналы другим железкам, а те уже могут управлять нагрузкой. Кстати, урок по управлению мощной нагрузкой постоянного и переменного тока у меня тоже есть. “Драйвером” мотора могут быть разные железки, рассмотрим некоторые из них.
При помощи обычного реле можно просто включать и выключать мотор по команде digitalWrite(пин, состояние) , прямо как светодиод:
При помощи двойного модуля реле (или просто двух реле) можно включать мотор в одну или другую сторону, а также выключать:
Купить модуль реле можно на Aliexpress.
Мосфет
Полевой транзистор, он же мосфет, позволяет управлять скорость вращения мотора при помощи ШИМ сигнала. При использовании мосфета обязательно нужно ставить диод, иначе индуктивный выброс с мотора очень быстро убьёт транзистор. Скорость мотора можно задавать при помощи ардуиновской analogWrite(пин, скорость) .
Вместо “голого” мосфета можно использовать готовый китайский модуль:
Купить мосфет модуль можно на Aliexpress.
Реле и мосфет
Если объединить реле и мосфет – получим весьма колхозную, но рабочую схему управления скоростью и направлением мотора:
Специальный драйвер
Лучше всего управлять мотором при помощи специального драйвера, они бывают разных форм и размеров и рассчитаны на разное напряжение и ток, но управляются практически одинаково. Рассмотрим основные драйверы с китайского рынка:
Остальные драйверы смотри у меня вот тут. Схемы подключения и таблицы управления:
Пины направления управляются при помощи digitalWrite(pin, value) , а PWM – analogWrite(pin, value) . Управление драйвером по двум пинам может быть двух вариантов:
Моторы переменного тока
Мотором переменного тока (220V от розетки) можно управлять при помощи диммера на симисторе, как в уроке про управление нагрузкой.
Библиотеки
У меня есть удобная библиотека для управления мотором – GyverMotor, документацию можно почитать вот здесь. Особенности библиотеки:
- Контроль скорости и направления вращения
- Работа с ШИМ любого разрешения
- Программный deadtime
- Отрицательные скорости
- Поддержка всех типов драйверов
- Плавный пуск и изменение скорости
- Режим “минимальная скважность”
Помехи и защита от них
Индуктивный выброс напряжения
Мотор – это индуктивная нагрузка, которая в момент отключения создаёт индуктивные выбросы. У мотора есть щетки, которые являются источником искр и помех за счёт той же самой индуктивности катушки. Сам мотор потребляет энергию не очень равномерно, что может стать причиной помех по линии питания, а пусковой ток мотора так вообще сильно больше рабочего тока, что гарантированно просадит слабое питание при запуске. Все четыре источника помех могут приводить к различным глюкам в работе устройства вплоть до срабатывания кнопок на цифровых пинах, наведения помех на аналоговых пинах, внезапного зависания и даже перезагрузки микроконтроллера или других железок в сборе устройства.
Отсечь индуктивный выброс с мотора можно при помощи самого обычного диода, чем мощнее мотор, тем мощнее нужен диод, то есть на более высокое напряжение и ток. Диод ставится встречно параллельно мотору, и чем ближе к корпусу, тем лучше. Точно таким же образом рекомендуется поступать с электромагнитными клапанами, соленоидами, электромагнитами и вообще любыми другими катушками. Логично, что диод нужно ставить только в том случае, если мотор или катушка управляется в одну сторону. Важные моменты:
- При работе с драйвером и управлением в обе стороны диод ставить не нужно и даже нельзя!
- При управлении ШИМ сигналом рекомендуется ставить быстродействующие диоды (например серии 1N49xx ) или диоды Шоттки (например серии 1N58xx).
- Максимальный ток диода должен быть больше или равен максимальному току мотора.
- Защитный диод, принимающий на себя обратный выброс ЭДС самоиндукции, также называется шунтирующим диодом, снаббером, flyback диодом.
- В природе существуют мосфеты со встроенным защитным диодом. Этот диод является отдельным элементом и такой мосфет обычно имеет нестандартный корпус, читайте документацию на конкретный транзистор.
- Диод, который показан на схематическом изображении мосфета, не является защитным диодом: это слабый и медленный “паразитный” диод, образованный при производстве транзистора. Он не защитит мосфет от выброса, нужно обязательно ставить внешний!
Помехи от щёток
Искрящиеся щетки мотора, особенно старого и разбитого, являются сильным источником электромагнитных помех, и здесь проблема решается установкой керамических конденсаторов с ёмкостью 0.1-1 мкФ на выводы мотора. Такие же конденсаторы можно поставить между каждым выводом и металлическим корпусом, это ещё сильнее погасит помехи. Для пайки к корпусу нужно использовать мощный паяльник и активный флюс, чтобы залудиться и припаяться как можно быстрее, не перегревая мотор.
Помехи по питанию, просадка
Мотор потребляет ток не очень равномерно, особенно во время разгона или в условиях переменной нагрузки на вал, что проявляется в виде просадок напряжения по питанию всей схемы. Беды с питанием решаются установкой ёмких электролитических конденсаторов по питанию, логично что ставить их нужно максимально близко к драйверу, то есть до драйвера. Напряжение должно быть выше чем напряжение питания, а ёмкость уже подбирается по факту. Начать можно с 470 мкф и повышать, пока не станет хорошо.
Разделение питания
Если описанные выше способы не помогают – остаётся только одно: разделение питания. Отдельный малошумящий хороший источник на МК и сенсоры/модули, и отдельный – для силовой части, в том числе мотора. Иногда ради стабильности работы приходится вводить отдельный БП или отдельный аккумулятор для надёжности функционирования устройства.
Экранирование
В отдельных случаях критичными являются даже наводки от питающих проводов моторов, особенно при управлении ШИМ мощными моторами и управлении мощными шаговиками в станках. Такие наводки могут создавать сильные помехи для работающих рядом чувствительных электронных компонентов, на аналоговые цепи, наводить помехи на линии измерения АЦП и конечно же на радиосвязь. Защититься от таких помех можно при помощи экранирования силовых проводов: экранированные силовые провода не всегда удаётся купить, поэтому достаточно обмотать обычные провода фольгой и подключить экран на GND питания силовой части. Этот трюк часто используют RC моделисты, летающие по FPV.
Видео
Источник
Управление двигателем постоянного тока с помощью Arduino Uno
В этой статье мы будем подключать двигатель постоянного тока к Arduino Uno и управлять скоростью его вращения. Делать мы это будем с помощью ШИМ (широтно-импульсной модуляции, в англ. языке PWM — Pulse Width Modulation) – эта функция реализована в Arduino чтобы на основе постоянного напряжения иметь возможность получения изменяющегося напряжения.
Общие принципы ШИМ
Метод осуществления ШИМ показан на следующем рисунке.
Если на представленном рисунке кнопка нажата, то двигатель начнет вращение и он будет вращаться до тех пор пока кнопка не будет отжата. Эта ситуация происходит если кнопка будет нажата постоянно – верхний график на представленном рисунке. Если же мы будем нажимать кнопку только в течение 8 мс из всего цикла в 10 мс, то в этом случае двигатель уже не будет в полной мере получать все напряжение батареи 9 В – в этом случае среднеквадратичная величина напряжения, получаемого двигателем, будет около 7 В. Соответственно, двигатель по сравнению с первым случаем (когда кнопка нажата постоянно) будет вращаться с меньшей скоростью. Поэтому цикл занятости (который еще называют коэффициентом заполнения ШИМ) в этом случае составит время включенного состояния/(время включенного состояния + время выключенного состояния) = 8/(8+2)=80%.
В следующих рассмотренных на рисунке случаях кнопка будет находиться в нажатом состоянии еще меньше чем в рассмотренном случае (80%). Соответственно, среднеквадратичная величина напряжения, получаемого двигателем, будет составлять еще меньшую величину, поэтому и скорость вращения двигателя также уменьшится. Это уменьшение скорости вращения двигателя вследствие уменьшения среднеквадратичной величины напряжения будет происходить до тех пор, пока получаемое двигателем напряжение не станет не достаточным для его вращения. То есть, изменяя величину цикла занятости (коэффициент заполнения ШИМ), можно управлять скоростью вращения двигателя постоянного тока.
Принцип работы H-моста
Перед тем, как переходить непосредственно к управлению двигателем, обсудим что такое H-BRIDGE (H-мост). Собранная нами далее схема будет осуществлять две функции: управлять двигателем постоянного тока с помощью управляющих сигналов малой мощности и изменять направление вращения двигателя.
Нам известно, что для изменения направления вращения двигателя постоянного тока необходимо изменить полярность приложенного к нему питающего напряжения. И как раз для смены полярности напряжения хорошо подходит устройство, называемое H-мостом. На представленном выше рисунке мы имеем 4 выключателя. Как показано на рисунке 2 если выключатели A1 и A2 замкнуты, то ток через двигатель течет справа налево как показано на второй части рисунка 2 – то есть в этом случае двигатель будет вращаться по часовой стрелке. А если выключатели A1 и A2 разомкнуты, а B1 и B2 – замкнуты, то ток через двигатель в этом случае будет протекать слева направо как показано на второй части рисунка, то есть двигатель будет вращаться против часовой стрелки. В этом и заключается принцип работы H-моста.
Рисунок 2 (часть 1)
Рисунок 2 (часть 2)
Мы в качестве H-моста будем использовать специализированную микросхему L293D, которую еще называют драйвером двигателей. Эта микросхема предназначена для управления двигателями постоянного тока малой мощности (см. рисунок) и содержит в своем составе два H-моста, то есть с ее помощью можно управлять двумя двигателями. Эта микросхема часто используется для управления двигателями в различных роботах.
В следующей таблице указаны необходимые значения напряжений на выводах INPUT1 и INPUT2 микросхемы L293D для смены направления вращения двигателя.
Enable Pin | Input Pin 1 | Input Pin 2 | Motor Direction |
High | Low | High | вправо |
High | High | Low | влево |
High | Low | Low | стоп |
High | High | High | стоп |
То есть, чтобы двигатель вращался по часовой стрелке необходимо чтобы на 2A было напряжение высокого уровня (high), а на контакте 1A – напряжение низкого уровня (low). Аналогично для вращения двигателя против часовой стрелки необходимо обеспечить на 1A напряжение высокого уровня, а на 2A – низкого.
Как показано на следующем рисунке Arduino UNO имеет 6 ШИМ каналов (обозначенных на плате специальным знаком – тильдой), любой из которых мы можем использовать для получения изменяющего напряжения (на основе ШИМ). В данном проекте мы будем использовать в качестве ШИМ выхода контакт PIN3 Arduino UNO.
Необходимые компоненты
- Плата Arduino UNO (купить на AliExpress).
- Драйвер двигателей L293D (купить на AliExpress).
- Электродвигатель постоянного тока.
- Светодиод (купить на AliExpress).
- Резистор 10 кОм (2 шт.) (купить на AliExpress).
- Кнопка (2 шт.).
- Конденсатор 100 пФ (купить на AliExpress).
- Переключатель.
- Источник питания с напряжением 5 В.
Работа схемы
Схема устройства (на макетной плате) представлена на следующем рисунке.
В рассматриваемой схеме мы имеем две кнопки, у каждой из которых, естественно, будет присутствовать эффект, называемый «дребезгом контактов». Но в данном случае для нас он не будет нести никакого негативного эффекта и не будет вызывать ошибок в работе схемы.
На нашем сайте мы уже рассматривали управление ШИМ с помощью микроконтроллера AVR ATmega и это управление было не самым простым делом – необходимо было сконфигурировать различные регистры. В отличие от этого управление ШИМ в Arduino UNO является крайне простым занятием, не требующем всего этого.
Исходный код программы
По умолчанию все необходимые заголовочные файлы подключаются автоматически самой средой ARDUINO IDE, она же конфигурирует сама и все регистры, необходимые для работы ШИМ, поэтому нам в программе уже не нужно заботиться об этих вещах. Все что нам нужно будет сделать – это определить на каком контакте мы будем использовать ШИМ.
То есть для использования ШИМ на нужном контакте нам необходимо сделать следующие вещи:
pinMode(ledPin, OUTPUT)
analogWrite(pin, value)
analogWriteResolution(neededresolutionnumber)
Сначала мы должны выбрать один из доступных 6 выходов (контактов) ШИМ. Потом необходимо установить этот контакт в режим на вывод данных.
После этого мы должны задействовать функции ШИМ на этом выходе используя функцию “ analogWrite(pin, value) ”. Здесь ‘pin’ обозначает номер контакта, на котором мы будем использовать ШИМ, в нашем случае это будет 3-й контакт.
Value в этой функции представляет собой цикл занятости (коэффициент заполнения) ШИМ, оно может принимать значения от 0 (всегда выключено) до 255 (всегда включено). Мы будем увеличивать и уменьшать это значение с помощью кнопок, присутствующих на схеме.
Плата Arduino UNO имеет максимальное разрешение (разрешающую способность) ШИМ, равную 8, что означает что value в функции analogWrite(pin, value) может принимать значения от 0 до 255. Но если в этом есть необходимость, мы можем уменьшать разрешение ШИМ используя функцию “ analogWriteResolution() ”, в скобках которой мы можем записать число в диапазоне 4-8, которое и будет определять разрешающую способность ШИМ платы Arduino UNO.
Переключатель на схеме служит для изменения направления вращения двигателя.
А теперь непосредственно сам код программы с комментариями.
Источник
Подключение моторчика к Ардуино
Подключение мотора к Ардуино ► потребуется при сборке машинки или катера. Рассмотрим различные варианты подключения коллекторного двигателя к Arduino.
Подключение мотора постоянного тока к Ардуино (коллекторного двигателя) требуется при сборке машинки или катера на микроконтроллере Arduino. Рассмотрим различные варианты подключения двигателей постоянного тока: напрямую к плате, через биполярный транзистор, а также с использованием модуля L298N. В обзоре размещены схемы подключения и коды программ для всех перечисленных вариантов.
Управление двигателем на Ардуино
Коллекторный моторчик может быть рассчитан на разное напряжения питания. Если двигатель работает от 3-5 Вольт, то можно моторчик подключать напрямую к плате Ардуино. Моторы для машинки с блютуз управлением, которые идут в комплекте с редукторами и колесами рассчитаны уже на 6 Вольт и более, поэтому ими следует управлять через полевой (биполярный) транзистор или через драйвер L298N.
Принцип работы и устройство мотора постоянного тока
На схеме показано устройство моторчика постоянного тока и принцип его работы. Как видите, для того, чтобы ротор двигателя начал крутиться к нему необходимо подключить питание. При смене полярности питания, ротор начнет крутиться в обратную сторону. Драйвер двигателей L298N позволяет инвертировать направление вращения мотора fa 130, поэтому его удобнее использовать в своих проектах.
Как подключить моторчик к Arduino
Для этого занятия нам потребуется:
- плата Arduino Uno / Arduino Nano / Arduino Mega;
- мотор постоянного тока (Motor DC);
- транзистор полевой/биполярный;
- драйвер двигателей L298N;
- провода «папа-папа», «папа-мама».
Перед выбором способа управления двигателем от Arduino Uno r3, уточните на какое напряжение рассчитан ваш моторчик. Если питание требуется более 5 Вольт, то следует использовать транзистор или драйвер. Распиновка транзисторов может отличаться от приведенного примера (следует уточнить распиновку для своего типа). Драйвер L298N позволит не только включать мотор, но и изменять направление вращения.
Скетч. Подключение мотора напрямую
Схема. Управление моторчиком от Ардуино напрямую
Подключение мотора к Ардуино напрямую — самый простой вариант включения вентилятора на Arduino или машинки. Команда для включения двигателя не отличается, от команды при подключении светодиода к микроконтроллеру. Функция digitalWrite включает/выключает подачу напряжения на цифровой порт, к которому подключен двигатель постоянного тока. Соберите схему и загрузите программу.
Пояснения к коду:
- для подключения мотора без драйвера можно использовать любой порт;
- если двигатель не включается, то, возможно, не хватает силы тока на цифровом выходе, подключите двигатель через транзистор к порту 3,3V или 5V.
Скетч. Подключение мотора через транзистор
Подключение мотора через транзистор к Ардуино потребуется, если двигатель никак не хочет включаться от платы напрямую, то следует использовать порт 5 Вольт на микроконтроллере или внешний источник питания. Транзистор будет играть роль ключа, замыкая/размыкая электрическую цепь. Сам транзистор управляется цифровым портом. Соберите схему, как на картинке и загрузите программу.
Подключение FA-130 мотора постоянного тока — Motor DC Arduino
Пояснения к коду:
- при необходимости можно подключить два мотора FA-130 к Ардуино;
- в зависимости от характеристик, двигатель подключается к 3,3 или 5 Вольтам.
Скетч. Подключение мотора через драйвер
Схема подключения двух моторов через драйвер l298n
Подключение мотора к Ардуино через драйвер L298N или Motor Shield L293D позволит менять направление вращения ротора. Но для использования данных модулей потребуется установить соответствующие библиотеки для Ардуино. В примере мы использовали схему подключения двигателя с помощью модуля L298N. Соберите схему, как на картинке ниже и загрузите следующий скетч с использованием.
Источник