Управление мотор редуктором ардуино

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

В этой статье мы будем подключать двигатель постоянного тока к Arduino Uno и управлять скоростью его вращения. Делать мы это будем с помощью ШИМ (широтно-импульсной модуляции, в англ. языке PWM — Pulse Width Modulation) – эта функция реализована в Arduino чтобы на основе постоянного напряжения иметь возможность получения изменяющегося напряжения.

Управление мотор редуктором ардуино

Видео:Тест ардуино мотор-редукторовСкачать

Тест ардуино мотор-редукторов

Общие принципы ШИМ

Метод осуществления ШИМ показан на следующем рисунке.

Если на представленном рисунке кнопка нажата, то двигатель начнет вращение и он будет вращаться до тех пор пока кнопка не будет отжата. Эта ситуация происходит если кнопка будет нажата постоянно – верхний график на представленном рисунке. Если же мы будем нажимать кнопку только в течение 8 мс из всего цикла в 10 мс, то в этом случае двигатель уже не будет в полной мере получать все напряжение батареи 9 В – в этом случае среднеквадратичная величина напряжения, получаемого двигателем, будет около 7 В. Соответственно, двигатель по сравнению с первым случаем (когда кнопка нажата постоянно) будет вращаться с меньшей скоростью. Поэтому цикл занятости (который еще называют коэффициентом заполнения ШИМ) в этом случае составит время включенного состояния/(время включенного состояния + время выключенного состояния) = 8/(8+2)=80%.

В следующих рассмотренных на рисунке случаях кнопка будет находиться в нажатом состоянии еще меньше чем в рассмотренном случае (80%). Соответственно, среднеквадратичная величина напряжения, получаемого двигателем, будет составлять еще меньшую величину, поэтому и скорость вращения двигателя также уменьшится. Это уменьшение скорости вращения двигателя вследствие уменьшения среднеквадратичной величины напряжения будет происходить до тех пор, пока получаемое двигателем напряжение не станет не достаточным для его вращения. То есть, изменяя величину цикла занятости (коэффициент заполнения ШИМ), можно управлять скоростью вращения двигателя постоянного тока.

Видео:Управление моторами с ArduinoСкачать

Управление моторами с Arduino

Принцип работы H-моста

Перед тем, как переходить непосредственно к управлению двигателем, обсудим что такое H-BRIDGE (H-мост). Собранная нами далее схема будет осуществлять две функции: управлять двигателем постоянного тока с помощью управляющих сигналов малой мощности и изменять направление вращения двигателя.

Нам известно, что для изменения направления вращения двигателя постоянного тока необходимо изменить полярность приложенного к нему питающего напряжения. И как раз для смены полярности напряжения хорошо подходит устройство, называемое H-мостом. На представленном выше рисунке мы имеем 4 выключателя. Как показано на рисунке 2 если выключатели A1 и A2 замкнуты, то ток через двигатель течет справа налево как показано на второй части рисунка 2 – то есть в этом случае двигатель будет вращаться по часовой стрелке. А если выключатели A1 и A2 разомкнуты, а B1 и B2 – замкнуты, то ток через двигатель в этом случае будет протекать слева направо как показано на второй части рисунка, то есть двигатель будет вращаться против часовой стрелки. В этом и заключается принцип работы H-моста.

Мы в качестве H-моста будем использовать специализированную микросхему L293D, которую еще называют драйвером двигателей. Эта микросхема предназначена для управления двигателями постоянного тока малой мощности (см. рисунок) и содержит в своем составе два H-моста, то есть с ее помощью можно управлять двумя двигателями. Эта микросхема часто используется для управления двигателями в различных роботах.

В следующей таблице указаны необходимые значения напряжений на выводах INPUT1 и INPUT2 микросхемы L293D для смены направления вращения двигателя.

Enable PinInput Pin 1Input Pin 2Motor Direction
HighLowHighвправо
HighHighLowвлево
HighLowLowстоп
HighHighHighстоп

То есть, чтобы двигатель вращался по часовой стрелке необходимо чтобы на 2A было напряжение высокого уровня (high), а на контакте 1A – напряжение низкого уровня (low). Аналогично для вращения двигателя против часовой стрелки необходимо обеспечить на 1A напряжение высокого уровня, а на 2A – низкого.

Как показано на следующем рисунке Arduino UNO имеет 6 ШИМ каналов (обозначенных на плате специальным знаком – тильдой), любой из которых мы можем использовать для получения изменяющего напряжения (на основе ШИМ). В данном проекте мы будем использовать в качестве ШИМ выхода контакт PIN3 Arduino UNO.

Управление мотор редуктором ардуино

Видео:Уроки Arduino. Управление моторами с библиотекой GyverMotorСкачать

Уроки Arduino. Управление моторами с библиотекой GyverMotor

Необходимые компоненты

  1. Плата Arduino UNO (купить на AliExpress).
  2. Драйвер двигателей L293D (купить на AliExpress).
  3. Электродвигатель постоянного тока.
  4. Светодиод (купить на AliExpress).
  5. Резистор 10 кОм (2 шт.) (купить на AliExpress).
  6. Кнопка (2 шт.).
  7. Конденсатор 100 пФ (купить на AliExpress).
  8. Переключатель.
  9. Источник питания с напряжением 5 В.

Видео:Самодельное колёсное шасси 4х4 с ардуино мотор-редукторами.Скачать

Самодельное колёсное шасси 4х4 с ардуино мотор-редукторами.

Работа схемы

Схема устройства (на макетной плате) представлена на следующем рисунке.

В рассматриваемой схеме мы имеем две кнопки, у каждой из которых, естественно, будет присутствовать эффект, называемый «дребезгом контактов». Но в данном случае для нас он не будет нести никакого негативного эффекта и не будет вызывать ошибок в работе схемы.

Читайте также: Червячный редуктор 5000 нм

На нашем сайте мы уже рассматривали управление ШИМ с помощью микроконтроллера 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. В обзоре размещены схемы подключения и коды программ для всех перечисленных вариантов.

Видео:Уроки Arduino - управление бесколлекторным моторомСкачать

Уроки Arduino - управление бесколлекторным мотором

Управление двигателем на Ардуино

Коллекторный моторчик может быть рассчитан на разное напряжения питания. Если двигатель работает от 3-5 Вольт, то можно моторчик подключать напрямую к плате Ардуино. Моторы для машинки с блютуз управлением, которые идут в комплекте с редукторами и колесами рассчитаны уже на 6 Вольт и более, поэтому ими следует управлять через полевой (биполярный) транзистор или через драйвер L298N.

Принцип работы и устройство мотора постоянного тока

На схеме показано устройство моторчика постоянного тока и принцип его работы. Как видите, для того, чтобы ротор двигателя начал крутиться к нему необходимо подключить питание. При смене полярности питания, ротор начнет крутиться в обратную сторону. Драйвер двигателей L298N позволяет инвертировать направление вращения мотора fa 130, поэтому его удобнее использовать в своих проектах.

Видео:ПОДКЛЮЧАЕМ ШАГОВЫЙ ДВИГАТЕЛЬ К ARDUINO [Уроки Ардуино #14]Скачать

ПОДКЛЮЧАЕМ ШАГОВЫЙ ДВИГАТЕЛЬ К ARDUINO [Уроки Ардуино #14]

Как подключить моторчик к Arduino

Для этого занятия нам потребуется:

  • плата Arduino Uno / Arduino Nano / Arduino Mega;
  • мотор постоянного тока (Motor DC);
  • транзистор полевой/биполярный;
  • драйвер двигателей L298N;
  • провода «папа-папа», «папа-мама».

Перед выбором способа управления двигателем от Arduino Uno r3, уточните на какое напряжение рассчитан ваш моторчик. Если питание требуется более 5 Вольт, то следует использовать транзистор или драйвер. Распиновка транзисторов может отличаться от приведенного примера (следует уточнить распиновку для своего типа). Драйвер L298N позволит не только включать мотор, но и изменять направление вращения.

Скетч. Подключение мотора через транзистор

Подключение мотора через транзистор к Ардуино потребуется, если двигатель никак не хочет включаться от платы напрямую, то следует использовать порт 5 Вольт на микроконтроллере или внешний источник питания. Транзистор будет играть роль ключа, замыкая/размыкая электрическую цепь. Сам транзистор управляется цифровым портом. Соберите схему, как на картинке и загрузите программу.

Подключение FA-130 мотора постоянного тока — Motor DC Arduino

Пояснения к коду:

  1. при необходимости можно подключить два мотора FA-130 к Ардуино;
  2. в зависимости от характеристик, двигатель подключается к 3,3 или 5 Вольтам.

Читайте также: Редуктор для электротриммера sterwins 1200

Скетч. Подключение мотора через драйвер

Подключение мотора к Ардуино через драйвер L298N или Motor Shield L293D позволит менять направление вращения ротора. Но для использования данных модулей потребуется установить соответствующие библиотеки для Ардуино. В примере мы использовали схему подключения двигателя с помощью модуля L298N. Соберите схему, как на картинке ниже и загрузите следующий скетч с использованием.

Видео:Управление ШИМ мотор-редуктором на ArduinoСкачать

Управление ШИМ мотор-редуктором на Arduino

Мотор с редуктором 1:48

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

Чтобы привести в движение шасси робота, разработчики, как правило, применяют моторы-редукторы. Они способны при небольших размерах обеспечивать достаточную силу тяги для реализации уверенного движения. Среди любительских легковесных роботов, фаворитом в этом направлении является мотор постоянного тока с редуктором 1:48, внешний вид которого показан на рисунке №1.

Управление мотор редуктором ардуино

Рисунок №1 – мотор постоянного тока с редуктором 1:48

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

Данный класс моторов с редуктором выпускается 4-х типов, а именно:

Прямой одноосевой мотор-редуктор;

Прямой двухосевой мотор-редуктор;

Угловой одноосевой мотор-редуктор;

Угловой двухосевой мотор-редуктор.

Рисунок №2 наглядно демонстрирует разницу их конструктивного исполнения. Вне зависимости от внешнего вида, все моторы имеют одинаковые характеристики.

Управление мотор редуктором ардуино

Рисунок №2 – разновидности моторов с редуктором

Видео:Самодельный танк с ардуино мотор-редукторами.Скачать

Самодельный танк с ардуино мотор-редукторами.

Технические характеристики

Применительно к данным моторам-редукторам, можно выделить следующие технические характеристики:

Диапазон напряжений питания: 3В – 8В;

Номинальный ток потребления при напряжении 3,6В: 240 мА;

Передаточное число редуктора: 1/48;

Скорость вращения при напряжении 3,6В без нагрузки: 170 об/мин.

Крутящий момент при напряжении 6В: 800 г/см;

Габариты (для прямой модификации): 64мм х 20мм х 20мм;

Видео:Коллекторные моторы 12 мм. Железки АмперкиСкачать

Коллекторные моторы 12 мм. Железки Амперки

Подключение к плате Arduino

Как упоминалось в разделе технических характеристик, потребление данного мотора составляет 250 мА (при напряжении 3,6В). Это означает, что прямое управление с выводов Arduino здесь неуместно. А если учесть, что в большинстве проектов необходимо минимум два таких мотора, то задача становиться ещё интереснее. Первое что приходит в голову, это включение и отключение моторов с помощью полевого транзистора с логическим уровнем управления затвором, например IRL540N (рисунок №3).

Управление мотор редуктором ардуино

Рисунок №3 – схема управления мотором при помощи полевого транзистора

Такое подключение даёт возможность включать и отключать двигатель логическим уровнем. Кроме того, можно управлять скоростью его вращения, изменяя уровень ШИМ на выводе D9 Arduino. Резистор 220 Ом ограничивает ток затвора транзистора, а резистор 100 кОм разряжает затвор, когда на выводе D9 установлен низкий логический уровень. Если его не использовать, то существует вероятность, что двигатель продолжит работать при его отключении. Диод 1N4007 защищает управляющую цепь от выброса высоковольтных импульсов самоиндукции, которые может создавать двигатель во время своей работы. Ниже приведён листинг программы, которая демонстрирует плавный разгон и торможение двигателя согласно вышеприведенной схемы.

Использование транзистора – это хорошо, но в рабочих роботизированных платформах каждый двигатель должен крутиться как вперёд, так и назад независимо друг от друга, да ещё и с разной скоростью. Поэтому данный вариант подходит только для простых проектов. Чтобы управлять двигателем полноценно, необходим мостовой драйвер. На данный момент большой популярностью пользуется драйвер L298N, который может обеспечить полноценное управление сразу двумя двигателями постоянного тока с возможностью реверса и регулировки скорости. Для того, чтобы напрямую не связываться с микросхемой драйвера, удобнее всего использовать готовый модуль с необходимой обвязкой на борту. Выглядит он так, как показано на рисунке №4.

Управление мотор редуктором ардуино

Рисунок №4 – модуль драйвера L298N

Ниже приведён перечень выводов модуля L298N с кратким описанием каждого из них:

IN1, IN2 – эти контакты предназначены для управления Мотором №1 (А). В зависимости от логических уровней, установленных на этих контактах, двигатель будет вращаться в ту или иную сторону. Для получения вращения, логические уровни на этих контактах должны быть противоположны друг другу. Например: IN1=1, IN2=0 → двигатель вращается по часовой стрелке; IN1=0, IN2=1 → двигатель вращается против часовой стрелки.

IN2, IN3 – функционал контактов аналогичен IN1 и IN2, но только для Мотора №2 (В).

Читайте также: Редуктор 520 от 525

ENA – логическая «1» на этом выводе разрешает вращение Мотора №1 (А). Также на этот контакт можно подавать ШИМ-сигнал, что позволит управлять скоростью вращения двигателя.

ENB – функционал контакта аналогичен ENA, но только для Мотора №2 (В).

OUT1, OUT2 – колодка для подключения Мотора №1 (А).

OUT3, OUT4 – колодка для подключения Мотора №2 (В).

На рисунке №5 приведена схема включение двух двигателей при использовании модуля L298N и Arduino Nano.

Управление мотор редуктором ардуино

Рисунок №5 – подключение моторов к Arduino через драйвер L298N

Согласно вышеприведенной схемы, драйвер L298N и Arduino Nano питаются от напряжения 7В. Этого будет достаточно, чтобы крутить два мотор-редуктора. Для возможности регулировки скорости, выводы ENA и ENB модуля L298N подключены к пинам Arduino, которые способны генерировать ШИМ-сигнал.

Ниже приведён тестовый скетч, который продемонстрирует все возможности драйвера, а именно: плавный разгон, торможение и реверс.

Видео:Умный мотор-редуктор с энкодером и управляющим контроллером, FLASH-I2C для Arduino, Raspberry PiСкачать

Умный мотор-редуктор с энкодером и управляющим контроллером, FLASH-I2C для Arduino, Raspberry Pi

Пример использования

Опираясь на полученные в разделе №3 знания, можно собрать небольшой проект радиоуправляемой роботизированной платформы, которою будут приводить в движение два мотор-редуктора.

Так как управление платформой планируется вести по радиоканалу, необходимо иметь передатчик с пультом управления и приёмник, который будет интегрирован в робота. Наилучшим вариантом для осуществления задуманного будет использование пары радио-модулей NRF24L01. Условно, проект можно разделить на две части: создание пульта управления с передатчиком и создание шасси робота.

Создание пульта управления с передатчиком

Для передатчика актуальными командами будут следующие:

изменение скорости движения от 0 до 100%

Первые 4 пункта можно выполнить при помощи тактовых кнопок, а регулировку скорости осуществлять потенциометром. Исходя из вышеизложенного, получаем схему радиопульта, показанную на рисунке №6.

Управление мотор редуктором ардуино

Рисунок №6 – схема радиопульта для роботизированной платформы

Ниже приведён листинг программы с подробными комментариями, который будет обрабатывать команды пользователя, отсылая их в радиоэфир. В качестве дополнения, потребуется установить библиотеку RF24. Следует заметить, что данный пульт управления довольно универсален и может быть использован в других проектах.

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

Создание и программирование шасси робота

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

Arduino Nano – как основной мозг робота;

Модуль NRF24L01 – как приёмник сигналов с пульта управления;

Два мотор-редуктора для приведения робота в движение;

Модуль L298N для полноценного управления моторами;

Держатель для аккумуляторов или батареек;

Ну и конечно-же основание, на котором всё это необходимо закрепить.

На рисунке №7 показана электрическая схема будущего робота.

Управление мотор редуктором ардуино

При монтаже электросхемы следует смотреть за тем, чтобы все выводы GND были соединены между собой. Также вывод GND модуля L298N желательно пустить отдельным проводом прямо к источнику питания, чтобы не пропускать большие токи через плату Arduino. Вместо 4-х пальчиковых батареек можно использовать два Li-Ion аккумулятора, соединённых последовательно. Такое соединение обеспечит достаточное напряжение для уверенного вращения мотор-редукторов.

Электролитический конденсатор, ёмкостью 100 мкФ в цепи питания радиомодуля обязателен. Без него NRF24L01 будет нестабильно работать или вообще не инициализируется.

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

Ниже приведён скетч управления роботом с подробными комментариями.

Когда готовы схемы и программное обеспечение, можно уделить время практической сборке узлов. Чтобы легче было ориентироваться, на рисунке №8 представлен один из вариантов крепления моторов и некоторых компонентов проекта. В реальности компонентов будет больше, но здесь важна сама идея, следуя которой можно создать своего уникального робота.

Управление мотор редуктором ардуино

Рисунок №8 – один из вариантов крепления моторов

Часто задаваемые вопросы

Что делать, если моторы при работе дают помехи, которые сказываются на нормальной работе радиомодуля NRF24L01

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

Какое сопротивление у обмотки мотор-редуктора?

В продаже могут попадаться двигатели с разным диапазоном сопротивлений в пределах 3-6 Ом.

Какое количество оборотов в минуту может развить мотор-редуктор?

Количество оборотов в минуту зависит от напряжения питания и от сопротивления обмотки двигателя. В таблице ниже приведены некоторые практические данные, полученные опытным путём:

  • Свежие записи
    • Чем отличается двухтактный мотор от четырехтактного
    • Сколько масла заливать в редуктор мотоблока
    • Какие моторы бывают у стиральных машин
    • Какие валы отсутствуют в двухвальной кпп
    • Как снять стопорную шайбу с вала


    🎬 Видео

    Редуктор своими руками для машинки, танка, робота, ардуино.Скачать

    Редуктор своими руками для машинки, танка, робота, ардуино.

    Как подключить шаговый двигатель к ArduinoСкачать

    Как подключить шаговый двигатель к Arduino

    Мотор-редуктор для робота Ардуино . ВИДЕО ОБЗОР.Скачать

    Мотор-редуктор для робота Ардуино . ВИДЕО ОБЗОР.

    Уроки Ардуино. Управление нагрузкой в сети переменного токаСкачать

    Уроки Ардуино. Управление нагрузкой в сети переменного тока

    NEMA17 Управление шаговым двигателем - Stepper motor with ArduinoСкачать

    NEMA17 Управление шаговым двигателем  - Stepper motor with Arduino

    Улучшаем мотор-редукторы N20Скачать

    Улучшаем мотор-редукторы N20

    Как сделать НАСТОЯЩИЙ сервопривод из любого мотора. Подчиненное регулирование. Робособаке быть? ЗС№5Скачать

    Как сделать НАСТОЯЩИЙ сервопривод из любого мотора. Подчиненное регулирование. Робособаке быть? ЗС№5

    Набор самодельных креплений для ардуино мотор-редуктора.Скачать

    Набор самодельных креплений для ардуино мотор-редуктора.
Поделиться или сохранить к себе:
Технарь знаток