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

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

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

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

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

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

Общий принцип использования ШИМ

Управляя скоростью модуляции ШИМ (Pulse Width Modulation, PWM) можно регулировать, к примеру, силу свечения светодиода – данный принцип пояснен на следующем рисунке. Аналогичный механизм используется и для управления скоростью вращения двигателя.

Если на представленном рисунке выключатель будет замкнут на протяжении некоторого времени, то на протяжении этого же времени лампочка будет гореть. Если переключатель будет замкнут в течение 8ms и будет разомкнут 2ms в течение интервала 10ms, тогда лампочка будет гореть только в течение интервала 8ms. В рассмотренном примере можно сказать, что среднее выходное напряжение (на лампочке) будет составлять 80% от напряжения батареи.

В другом случае выключатель замыкается на 5ms и размыкается на эти же самые 5ms в течение интервала 10ms, таким образом среднее напряжение на лампочке будет составлять 50% от напряжения батареи. Принято говорить, что если напряжение батареи 5В и цикл занятости составляет 50%, то среднее напряжение на оконечном устройстве (лампочке) будет составлять 2.5В.

В третьем рассмотренном на рисунке случае цикл занятости составляет 20% и поэтому среднее напряжение на оконечном устройстве (лампочке) будет составлять 20% от напряжения батареи.

Применяя все сказанное к рассматриваемому нами примеру управления скоростью вращения двигателем можно сказать, что чем больше будет коэффициент заполнения ШИМ (отношение длительности ON состояния к периоду), тем выше будет скорость вращения двигателя.

Видео:Управление двигателем постоянного тока, линейным приводом. АрдуиноСкачать

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

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

  1. Плата Arduino UNO (купить на AliExpress).
  2. Двигатель постоянного тока.
  3. Транзистор 2N2222 (купить на AliExpress).
  4. Потенциометр 100 кОм (купить на AliExpress).
  5. Конденсатор 0.1 нФ (купить на AliExpress).
  6. Макетная плата.
  7. Соединительные провода.

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

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

Схема устройства

Представлена на следующем рисунке.

Видео:Управление двигателем постоянного тока. Схема управления мотором Ардуино проекты.Скачать

Управление двигателем постоянного тока. Схема управления мотором Ардуино проекты.

Управление направлением вращения мотора ардуиноОбъяснение работы программы

Полный текст программы приведен в конце статьи, в этом разделе объяснено назначение ключевых элементов кода.

В ниже представленных строчках кода мы инициализируем переменные c1 и c2 и назначаем аналоговый контакт A0 выходу потенциометра, а 12-й контакт будем использовать для ШИМ.

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

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

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

В этом проекте мы рассмотрим управление направлением и скоростью вращения электродвигателя постоянного тока (24v) с помощью платы Arduino, двух реле и MOSFET транзистора. Никаких переключателей питания для этого проекта не потребуется, будут нужны две обычные кнопки и потенциометр для управления направлением и скоростью вращения двигателя. При нажатии одной из кнопок двигатель будет вращаться по часовой стрелке, а при нажатии другой – против часовой стрелки. MOSFET транзистор с каналом n-типа необходим для управления скоростью вращения двигателя. Реле используются для переключения направления вращения двигателя. В данном случае они похожи на мост H-типа.

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

Видео:Как настроить ШАГОВЫЙ ДВИГАТЕЛЬ 28BYJ-48 Arduino?! ОбзорСкачать

Как настроить ШАГОВЫЙ ДВИГАТЕЛЬ 28BYJ-48 Arduino?! Обзор

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

  1. Плата Arduino Uno (купить на AliExpress).
  2. Два реле на 12v (реле на 5v тоже могут быть использованы).
  3. Два транзистора BC547 (купить на AliExpress).
  4. Две кнопки.
  5. IRF540N (купить на AliExpress).
  6. Резистор 10 кОм (купить на AliExpress).
  7. Источник питания на 24 В.
  8. Потенциометр 10 кОм (купить на AliExpress).
  9. Три диода 1N4007 (купить на AliExpress).
  10. Соединительные провода.

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

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

Работа схемы

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

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

В схеме необходимо сделать следующие соединения:

  • подсоединить нормально замкнутые выводы обоих реле к положительному выводу батареи;
  • подсоединить нормально разомкнутые выводы обоих реле к стоку MOSFET транзистора;
  • подсоединить исток MOSFET транзистора к отрицательному выводу батареи и к земле платы Arduino UNO;
  • затвор MOSFET транзистора подключить к контакту 6 платы Arduino (на этом контакте возможно формирование ШИМ сигнала);
  • подсоединить резистор 10 кОм между затвором и истоком MOSFET транзистора, а также подсоединить диод 1N4007 между истоком и стоком MOSFET транзистора;
  • подсоединить двигатель между средними выводами реле;
  • один из оставшихся выводов реле (для каждого реле) подключить к контакту Vin платы Arduino, а другой – к коллектору транзистора;
  • подсоединить эмиттеры обоих транзисторов к контакту GND (земля) платы Arduino;
  • контакты 2 и 3 платы Arduino подключить к кнопкам, вторые концы кнопок подключить к базе транзисторов;
  • подключить диоды параллельно выводам реле как показано на схеме;
  • оконечные контакты потенциометра подсоединить к контактам 5v и Gnd платы Arduino, а средний контакт потенциометра – к контакту A0.

Читайте также: Как сделать маховик с мотором

Если батареи на 24 В у вас нет, то можно последовательно соединить две батареи на 12 В.

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

Функции транзисторов

Цифровые контакты платы Arduino не могут обеспечить достаточный ток для срабатывания реле на 5v. К тому же мы используем реле на 12v. Контакт Vin платы Arduino не может обеспечить достаточный ток для обоих реле. Поэтому транзисторы используются для «доставки» тока от контакта Vin платы Arduino к реле. Транзисторы управляются с помощью кнопок, один вывод которых подключен к их базе, а другой – к цифровому контакту платы Arduino

Функции платы Arduino

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

Функции MOSFET

MOSFET транзистор используется для управления скоростью вращения двигателя. Он включается и выключается (открывается и закрывается) с высокой частотой, поэтому и двигатель, соединённый последовательно со стоком MOSFET, управляется данной ШИМ (широтно-импульсной модуляцией). Чем больше коэффициент заполнения ШИМ, тем выше скорость вращения двигателя. Более подробно о подобном механизме управления с помощью ШИМ и MOSFET транзистора можно прочитать в статье про понижающий преобразователь напряжения постоянного тока на Arduino.

Расчеты тока

  • сопротивление катушки реле, измеренное нами с помощью мультиметра, составило примерно 400 Ом;
  • контакт Vin платы Arduino обеспечивает 12v;
  • поэтому получаем ток, необходимый для переключения реле равный 12/400 = 30 mA;
  • если энергия подается на оба реле, то получаем ток 30*2=60 mA;
  • контакт Vin платы Arduino рассчитан на максимальный ток 200mA, поэтому проблем с обеспечением тока возникнуть не должно.

Видео:Подключение шагового двигателяСкачать

Подключение шагового двигателя

Работа проекта

На контакты 2 и 3 платы Arduino постоянно подается напряжение высокого уровня.

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

Когда ни одна из кнопок не нажата

В этом случае на базы транзисторов не подается открывающего напряжения, следовательно транзисторы закрыты – поэтому на катушки реле не подается ток от контакта Vin платы Arduino.

Когда одна кнопка нажата

В этом случае на базу транзистора с цифрового контакта платы Arduino поступает открывающее напряжение и транзистор открывается. Теперь ток от контакта Vin поступает на катушку реле, что приводит к переключению реле (RELAY A) в положение NO (нормально разомкнуто). В это время другое реле (RELAY B) остается в положении NC (нормально замкнуто). Поэтому ток начинает протекать от положительного вывода батареи к ее отрицательному выводу через двигатель, то есть ток течет от relay A к relay B. Это приводит к вращению двигателя по часовой стрелке.

Когда другая кнопка нажата

Теперь ток подается уже на другое реле — RELAY B. Этот ток переключает реле в положение NO. В это время другое реле (RELAY A) находится в положении NC. Поэтому ток начинает протекать от положительного вывода батареи к ее отрицательному выводу через двигатель. Но в этой ситуации ток течет уже от relay B к relay A, что приводит к вращению двигателя против часовой стрелки.

Когда обе кнопки нажаты

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

Читайте также: Прошивка лодочного мотора yamaha

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

Затвор MOSFET транзистора подключен к ШИМ контакту 6 платы Arduino UNO. Под действием ШИМ на этом контакте Mosfet транзистор включается и выключается (открывается и закрывается) с высокой частотой, а поскольку двигатель соединен последовательно со стоком mosfet, значение коэффициента заполнения ШИМ оказывает непосредственное влияние на скорость вращения двигателя. А значение коэффициента заполнения ШИМ управляется с помощью потенциометра – вращение его оси приводит к изменению напряжения на контакте A0, следовательно изменяется значение на выходе АЦП (аналогово-цифрового преобразователя) данного контакта (более подробно об АЦП в Arduino). Arduino считывает значение с выхода этого АЦП и в соответствии с ним изменяет коэффициент заполнения ШИМ на контакте 6.

Видео:Драйвер двигателей L298N - Обзор, Тест, Подключение к ArduinoСкачать

Драйвер двигателей L298N - Обзор, Тест, Подключение к Arduino

Исходный код программы

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

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

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

Управление двигателем постоянного тока с помощью 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.

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

Видео:Управление шаговым двигателем. Драйвер A4988, подключение и настройкаСкачать

Управление шаговым двигателем. Драйвер A4988, подключение и настройка

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

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

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

А теперь непосредственно сам код программы с комментариями.

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


    💡 Видео

    САМ В ШОКЕ! НО ЭТА СХЕМА РАБОТАЕТ. Простой реверс шагового мотора.Скачать

    САМ В ШОКЕ! НО ЭТА СХЕМА РАБОТАЕТ. Простой реверс шагового мотора.

    Уроки Ардуино #11 - плавное управление нагрузкой, ШИМ сигналСкачать

    Уроки Ардуино #11 - плавное управление нагрузкой, ШИМ сигнал

    Регулятор скорости вращения для биполярного шагового двигателя на базе Arduino Nano.Скачать

    Регулятор скорости вращения для биполярного шагового двигателя на базе Arduino Nano.

    Подключение двигателя без электроники и Ардуино!Скачать

    Подключение двигателя без электроники и Ардуино!

    Урок №9 Электромотор (управляем скоростью вращения) | iarduino.ruСкачать

    Урок №9 Электромотор (управляем скоростью вращения) | iarduino.ru
Поделиться или сохранить к себе:
Технарь знаток