Двигатель постоянного тока – это наиболее часто используемый тип двигателя в робототехнике и электронных устройствах. Для управления скоростью вращения такого двигателя можно использовать различные методы, но в этом проекте мы будем использовать для этой цели широтно-импульсную модуляцию (ШИМ). Управлять скоростью вращения двигателя постоянного тока мы будем с помощью потенциометра, поворачивая его ручку.
- Общий принцип использования ШИМ
- Необходимые компоненты
- Схема устройства
- Объяснение работы программы
- Управление скоростью и направлением вращения электродвигателя с помощью Arduino, реле и MOSFET
- Необходимые компоненты
- Работа схемы
- Функции транзисторов
- Функции платы Arduino
- Функции MOSFET
- Расчеты тока
- Работа проекта
- Когда ни одна из кнопок не нажата
- Когда одна кнопка нажата
- Когда другая кнопка нажата
- Когда обе кнопки нажаты
- Управление скоростью вращения двигателя
- Исходный код программы
- Управление двигателем постоянного тока с помощью Arduino Uno
- Общие принципы ШИМ
- Принцип работы H-моста
- Необходимые компоненты
- Работа схемы
- Исходный код программы
- 💡 Видео
Видео:Управление моторами с ArduinoСкачать
Общий принцип использования ШИМ
Управляя скоростью модуляции ШИМ (Pulse Width Modulation, PWM) можно регулировать, к примеру, силу свечения светодиода – данный принцип пояснен на следующем рисунке. Аналогичный механизм используется и для управления скоростью вращения двигателя.
Если на представленном рисунке выключатель будет замкнут на протяжении некоторого времени, то на протяжении этого же времени лампочка будет гореть. Если переключатель будет замкнут в течение 8ms и будет разомкнут 2ms в течение интервала 10ms, тогда лампочка будет гореть только в течение интервала 8ms. В рассмотренном примере можно сказать, что среднее выходное напряжение (на лампочке) будет составлять 80% от напряжения батареи.
В другом случае выключатель замыкается на 5ms и размыкается на эти же самые 5ms в течение интервала 10ms, таким образом среднее напряжение на лампочке будет составлять 50% от напряжения батареи. Принято говорить, что если напряжение батареи 5В и цикл занятости составляет 50%, то среднее напряжение на оконечном устройстве (лампочке) будет составлять 2.5В.
В третьем рассмотренном на рисунке случае цикл занятости составляет 20% и поэтому среднее напряжение на оконечном устройстве (лампочке) будет составлять 20% от напряжения батареи.
Применяя все сказанное к рассматриваемому нами примеру управления скоростью вращения двигателем можно сказать, что чем больше будет коэффициент заполнения ШИМ (отношение длительности ON состояния к периоду), тем выше будет скорость вращения двигателя.
Видео:Управление двигателем постоянного тока, линейным приводом. АрдуиноСкачать
Необходимые компоненты
- Плата Arduino UNO (купить на AliExpress).
- Двигатель постоянного тока.
- Транзистор 2N2222 (купить на AliExpress).
- Потенциометр 100 кОм (купить на AliExpress).
- Конденсатор 0.1 нФ (купить на AliExpress).
- Макетная плата.
- Соединительные провода.
Видео:Уроки Arduino. Управление моторами с библиотекой GyverMotorСкачать
Схема устройства
Представлена на следующем рисунке.
Видео:Управление двигателем постоянного тока. Схема управления мотором Ардуино проекты.Скачать
Объяснение работы программы
Полный текст программы приведен в конце статьи, в этом разделе объяснено назначение ключевых элементов кода.
В ниже представленных строчках кода мы инициализируем переменные c1 и c2 и назначаем аналоговый контакт A0 выходу потенциометра, а 12-й контакт будем использовать для ШИМ.
Видео:ПОДКЛЮЧАЕМ ШАГОВЫЙ ДВИГАТЕЛЬ К ARDUINO [Уроки Ардуино #14]Скачать
Управление скоростью и направлением вращения электродвигателя с помощью Arduino, реле и MOSFET
В этом проекте мы рассмотрим управление направлением и скоростью вращения электродвигателя постоянного тока (24v) с помощью платы Arduino, двух реле и MOSFET транзистора. Никаких переключателей питания для этого проекта не потребуется, будут нужны две обычные кнопки и потенциометр для управления направлением и скоростью вращения двигателя. При нажатии одной из кнопок двигатель будет вращаться по часовой стрелке, а при нажатии другой – против часовой стрелки. MOSFET транзистор с каналом n-типа необходим для управления скоростью вращения двигателя. Реле используются для переключения направления вращения двигателя. В данном случае они похожи на мост H-типа.
Видео:Как настроить ШАГОВЫЙ ДВИГАТЕЛЬ 28BYJ-48 Arduino?! ОбзорСкачать
Необходимые компоненты
- Плата Arduino Uno (купить на AliExpress).
- Два реле на 12v (реле на 5v тоже могут быть использованы).
- Два транзистора BC547 (купить на AliExpress).
- Две кнопки.
- IRF540N (купить на AliExpress).
- Резистор 10 кОм (купить на AliExpress).
- Источник питания на 24 В.
- Потенциометр 10 кОм (купить на AliExpress).
- Три диода 1N4007 (купить на AliExpress).
- Соединительные провода.
Видео:Уроки 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Скачать
Исходный код программы
Код программы для рассмотренного двунаправленного двигателя постоянного тока с изменяемой скоростью вращения достаточно простой. Я думаю, он не вызовет у вас никаких затруднений.
Видео:Как подключить шаговый двигатель к ArduinoСкачать
Управление двигателем постоянного тока с помощью Arduino Uno
В этой статье мы будем подключать двигатель постоянного тока к Arduino Uno и управлять скоростью его вращения. Делать мы это будем с помощью ШИМ (широтно-импульсной модуляции, в англ. языке PWM — Pulse Width Modulation) – эта функция реализована в Arduino чтобы на основе постоянного напряжения иметь возможность получения изменяющегося напряжения.
Видео:Простое управление оборотами шагового двигателя.Скачать
Общие принципы ШИМ
Метод осуществления ШИМ показан на следующем рисунке.
Если на представленном рисунке кнопка нажата, то двигатель начнет вращение и он будет вращаться до тех пор пока кнопка не будет отжата. Эта ситуация происходит если кнопка будет нажата постоянно – верхний график на представленном рисунке. Если же мы будем нажимать кнопку только в течение 8 мс из всего цикла в 10 мс, то в этом случае двигатель уже не будет в полной мере получать все напряжение батареи 9 В – в этом случае среднеквадратичная величина напряжения, получаемого двигателем, будет около 7 В. Соответственно, двигатель по сравнению с первым случаем (когда кнопка нажата постоянно) будет вращаться с меньшей скоростью. Поэтому цикл занятости (который еще называют коэффициентом заполнения ШИМ) в этом случае составит время включенного состояния/(время включенного состояния + время выключенного состояния) = 8/(8+2)=80%.
В следующих рассмотренных на рисунке случаях кнопка будет находиться в нажатом состоянии еще меньше чем в рассмотренном случае (80%). Соответственно, среднеквадратичная величина напряжения, получаемого двигателем, будет составлять еще меньшую величину, поэтому и скорость вращения двигателя также уменьшится. Это уменьшение скорости вращения двигателя вследствие уменьшения среднеквадратичной величины напряжения будет происходить до тех пор, пока получаемое двигателем напряжение не станет не достаточным для его вращения. То есть, изменяя величину цикла занятости (коэффициент заполнения ШИМ), можно управлять скоростью вращения двигателя постоянного тока.
Видео:Вращение шагового двигателя вправо влево от двух кнопок от Arduino с ускорениемСкачать
Принцип работы H-моста
Перед тем, как переходить непосредственно к управлению двигателем, обсудим что такое H-BRIDGE (H-мост). Собранная нами далее схема будет осуществлять две функции: управлять двигателем постоянного тока с помощью управляющих сигналов малой мощности и изменять направление вращения двигателя.
Нам известно, что для изменения направления вращения двигателя постоянного тока необходимо изменить полярность приложенного к нему питающего напряжения. И как раз для смены полярности напряжения хорошо подходит устройство, называемое H-мостом. На представленном выше рисунке мы имеем 4 выключателя. Как показано на рисунке 2 если выключатели A1 и A2 замкнуты, то ток через двигатель течет справа налево как показано на второй части рисунка 2 – то есть в этом случае двигатель будет вращаться по часовой стрелке. А если выключатели A1 и A2 разомкнуты, а B1 и B2 – замкнуты, то ток через двигатель в этом случае будет протекать слева направо как показано на второй части рисунка, то есть двигатель будет вращаться против часовой стрелки. В этом и заключается принцип работы H-моста.
Читайте также: Мотор сич название в ссср
Мы в качестве 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.
Видео:Управление шаговым двигателем. Драйвер A4988, подключение и настройкаСкачать
Необходимые компоненты
- Плата 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.
Переключатель на схеме служит для изменения направления вращения двигателя.
А теперь непосредственно сам код программы с комментариями.
- Свежие записи
- Чем отличается двухтактный мотор от четырехтактного
- Сколько масла заливать в редуктор мотоблока
- Какие моторы бывают у стиральных машин
- Какие валы отсутствуют в двухвальной кпп
- Как снять стопорную шайбу с вала
💡 Видео
САМ В ШОКЕ! НО ЭТА СХЕМА РАБОТАЕТ. Простой реверс шагового мотора.Скачать
Уроки Ардуино #11 - плавное управление нагрузкой, ШИМ сигналСкачать
Регулятор скорости вращения для биполярного шагового двигателя на базе Arduino Nano.Скачать
Подключение двигателя без электроники и Ардуино!Скачать
Урок №9 Электромотор (управляем скоростью вращения) | iarduino.ruСкачать