Управление коллекторным двигателем через шим на ардуино
Скетч. Подключение мотора напрямую
Читайте также: Как защитить провода от кота. Что делать, если кошка грызет провода? Кот погрыз провода — что делать
Пояснения к коду:
- для подключения мотора без драйвера можно использовать любой порт;
- если двигатель не включается, то, возможно, не хватает силы тока на цифровом выходе, подключите двигатель через транзистор к порту 3,3V или 5V.
Скетч. Подключение мотора через транзистор
Подключение мотора через транзистор к Ардуино потребуется, если двигатель никак не хочет включаться от платы напрямую, то следует использовать порт 5 Вольт на микроконтроллере или внешний источник питания. Транзистор будет играть роль ключа, замыкая/размыкая электрическую цепь. Сам транзистор управляется цифровым портом. Соберите схему, как на картинке и загрузите программу.
Скетч. Подключение мотора через драйвер
Схема подключения двух моторов через драйвер l298n
Подключение мотора к Ардуино через драйвер L298N или Motor Shield L293D позволит менять направление вращения ротора. Но для использования данных модулей потребуется установить соответствующие библиотеки для Ардуино. В примере мы использовали схему подключения двигателя с помощью модуля L298N. Соберите схему, как на картинке ниже и загрузите следующий скетч с использованием.
- драйвер двигателей позволяет управлять скоростью и направлением вращения мотора, подробнее читайте в обзоре — Подключение драйвера L298N к Arduino;
- если моторчики не крутятся, подключите к драйверу источник питания 6-12В.

На этом уроке мы разберем, как управлять двигателем постоянного тока (DC Motor). Двигатели этого типа части применяются в роботах на колесных и гусеничных платформах. И начнем мы с самого простого способа управления.

Ардуино реле — подключение нагрузки к платам ардуино
- Собрать драйвер на основе одного NPN транзистора, и вращать с помощью него мотор.
- Управлять сразу двумя моторами при помощи L293D, передавая на них разную мощность.
- Собрать колесного робота, и заставить его двигаться по окружности.
- Заставить колесного робота двигаться по спирали.
Транзистор

Продолжение разработки ПИД-регулятора скорости вращения двигателя постоянного тока. В уроке запустим двигатель без обратной связи. Научимся измерять временные параметры импульсов дискретного сигнала.
Попробуем управлять двигателем только с помощью ШИМ, не используя датчик оборотов.
Регулировка скорости вращения двигателя без обратной связи.
Я написал простую программу, которая формирует ШИМ пропорциональный напряжению на входе A0.
- Измеряет напряжение сигнала на входе A0.
- Усредняет его для защиты от помех.
- Формирует ШИМ с коэффициентом заполнения пропорциональным среднему напряжению на выводе A0.
- При формировании ШИМ учитывает “мертвое время”.
- Выводит значение ШИМ в последовательный порт для контроля.
Зарегистрируйтесь и оплатите. Всего 40 руб. в месяц за доступ ко всем ресурсам сайта!
Поэтому необходимо искусственно ограничивать импульсы минимальной длины. Если значение 1 транзистор не способен отработать, значит, вместо него необходимо формировать 0. Тоже самое в конце диапазона ШИМ. Например, значение 254 необходимо заменить на 255.
Отработку ”мертвого времени» производит следующий блок программы.
Если значение ШИМ меньше заданного, оно заменяется на 0. Если больше, то оно равно максимальному значению ШИМ.
В программе в определенных пределах можно изменять частоту периода ШИМ.
TCCR2B= 1; // 62 500 Гц //TCCR2B= 2; // 7 812 Гц // TCCR2B= 3; // 1 953 Гц // TCCR2B= 4; // 977 Гц // TCCR2B= 5; // 488 Гц // TCCR2B= 6; // 244 Гц // TCCR2B= 7; // 61 Гц
Для формирования ШИМ используется таймер 2 и вывод 11.
Можно переключиться на вывод 3. Изменения коснутся только строки.
Загружаем скетч в контроллер, открываем монитор последовательного порта.
Вращаю переменный резистор, подключенный к входу A0. Монитор показывает изменение ШИМ. В положении резистора от 0 до максимума ШИМ равен 0, затем скачком меняется до 10. Дальше плавное изменение до 245 и скачок до 255. Т.е. заданное ”мертвое время” 10 отрабатывается правильно.
Дальше подключаем к схеме питание 12 В и проверяем работу ключа с мотором-вентилятором. Я проверил для разных частот ШИМ. Как не странно, лучше всего работает на низких частотах 244 и 61 Гц. Мотор начинает вращаться с ШИМ равным 30. На частоте 62,5 кГц вентилятор начинает вращаться при значении ШИМ 60. На средних частотах он еще противно пищит.
Когда Игорь проводил эти испытания на мощном двигателе 500 Вт, он категорично выбрал высокую частоту 62,5 кГц. На высоких частотах его двигатель вращается равномерно, без вибраций. Тише работает, начинает крутиться с меньшего значения ШИМ. Т.е. для каждого двигателя лучше выбирать частоту ШИМ экспериментально.
Рассмотрим урок ReadAnalogVoltage из меню File | Examples | 01.Basics. Он практически идентичен примеру AnalogReadSerial, только мы будем конвертировать значения от аналогового вывода (0. 1023) в значения напряжения (0. 5). Для примера нам понадобится потенциометр. Цель урока — плавно изменять напряжение и подавать его на аналоговый вывод, чтобы получить текущее значение напряжения.
Схема прежняя, ничего не меняем. Соединяем парные ножки с выводами на плате 5V и GND. Среднюю ножку необходимо соединить с аналоговым выводом на плате, помеченную как A0.

Схема готова. Вращая регулятором потенциометра, мы можем менять сопротивление от 5 Вольт до 0. Arduino позволяет считывать текущее напряжение, которое подаётся на среднюю ножку при помощи аналогового вывода. Результаты могут колебаться от 0 до 1023.
Полученный результат будем выводить в окно последовательного монитора.
Запустите программу, а также откройте окно последовательного монитора. Вращая регулятором потенциометра, вы можете наблюдать, как в окне будут меняться значения от 0.00 до 5.00.

Arduino: Аналоговые выводы
Analog: AnalogInOutSerial
Считываем данные с потенциометра и распределяем их в интервале от 0 до 255 с помощью функции map(). Данный интервал удобно использовать для выводов с PWM (ШИМ). Применим получаемые значения для управления яркостью светодиода, а также будем выводить информацию в Serial Monitor.

Схема без изменений (см. рисунки выше). Среднюю ножку потенциометра соединяем с аналоговым выводом A0, остальные две ножки соединяем с питанием 5В и землёй. При желании установите внешний светодиод на цифровой вывод 13 (можно обойтись встроенным светодиодом).
