PWM-управление (ШИМ)

Мотору мобильного робота редко достаточно двух команд: «выключен» и «работает на полной мощности». Для плавного старта, поворота и удержания приемлемой скорости нужна промежуточная команда. Её удобно задавать последовательностью коротких включений и выключений — широтно-импульсной модуляцией, или PWM.
PWM не уменьшает напряжение источника непрерывно. Контроллер быстро переключает логический вход драйвера, а драйвер коммутирует ток мотора. Доля времени во включённом состоянии называется коэффициентом заполнения. Она влияет на среднее воздействие на мотор, но не задаёт точную скорость без обратной связи.
Зачем это нужно
Представим двухколёсного робота. На прямой оба мотора получают близкие команды. Перед поворотом контроллер уменьшает PWM слева, оставляя справа прежнее значение. Разность скоростей разворачивает шасси без отдельного рулевого механизма. Та же техника помогает мягко тронуться: команда растёт ступенями, поэтому механика не получает мгновенный рывок от нуля до полного питания.
PWM встречается не только в движении. Им регулируют мощность нагревателя, яркость светодиода и ток катушки, если силовой каскад рассчитан на такую коммутацию. Во всех случаях микроконтроллер формирует командный сигнал, а энергию нагрузке отдаёт отдельный драйвер.
Подключать мотор к PWM-выводу микроконтроллера напрямую нельзя. Вывод рассчитан на логический сигнал, а мотору нужен существенно больший и меняющийся ток. Кроме того, обмотка — индуктивная нагрузка: после выключения ключей ток не исчезает мгновенно. Без предусмотренного пути рециркуляции возникают опасные выбросы напряжения.
Примеры устройств

PWM встречается в разных местах силовой системы. Иногда контроллер подаёт PWM прямо на вход DC-драйвера, иногда драйвер сам импульсно регулирует ток обмотки, а у ESC похожий по форме командный импульс вообще не является фазным питанием мотора.
| Устройство | Где используется PWM | Что не стоит путать |
|---|---|---|
| TB6612FNG | вход PWM задаёт среднее воздействие на DC-мотор | процент заполнения не равен проценту скорости робота |
| DRV8833 | мост переключает ток и задаёт пути рециркуляции | пауза PWM не означает, что ток обмотки исчез мгновенно |
| VNH5019 | мощный DC-мост принимает команду управления | больший ток резко увеличивает нагрев силового каскада |
| A4988 | внутренний chopper удерживает ток фазы шагового мотора | это не та же команда, что analogWrite() на Arduino |
| ESC | хоббийная команда может передаваться длительностью импульса | командный импульс не является одним из трёх фазных проводов BLDC |
В этой статье PWM рассматривается как способ управлять средним воздействием на нагрузку. Конкретный смысл входа всегда уточняют в документации выбранного драйвера.
Главная идея
Один период PWM состоит из двух участков:
включено t_ON + выключено t_OFF = период T
Коэффициент заполнения D показывает долю включённого времени:
D = t_ON / T
f = 1 / T
Здесь f — частота повторения периодов. Например, D = 0,25 означает, что команда активна четверть периода. Это не означает автоматически «четверть максимальной скорости»: между командой, током, моментом и оборотами есть мотор, драйвер, источник питания и механическая нагрузка.
| Коэффициент заполнения | Что делает логическая команда | Возможное состояние привода |
|---|---|---|
0% | активного участка нет | останов, свободный ход или торможение — зависит от входов драйвера |
25% | короткое включение, длинная пауза | небольшой средний момент; мотор может ещё не тронуться |
50% | время включения равно времени паузы | промежуточное воздействие, но не гарантированно половина оборотов |
100% | команда активна весь период | постоянное состояние моста без PWM-пауз |
Импульс команды и ток мотора — не одно и то же

Синий прямоугольный сигнал на входе драйвера несёт мало энергии. Он лишь сообщает силовым ключам, когда менять состояние. Ток мотора идёт другим путём:
источник питания -> силовые ключи драйвера -> обмотка мотора -> силовые ключи -> общий провод источника
Это разделение полезно держать в голове при отладке. Осциллограф на PWM-входе может показывать идеальные импульсы, хотя мотор не вращается из-за отсутствующего силового питания, плохого контакта на выходе, сработавшей защиты или недостаточного тока источника. И наоборот: силовая цепь может быть исправна, но драйвер останется в режиме сна, если не активирован соответствующий вход.
У некоторых драйверов PWM подают на отдельный вход разрешения, а направление задают другим входом. У других два логических входа непосредственно выбирают состояния половин H-моста, и PWM подают на один из них. Таблицу состояний нельзя переносить с одной микросхемы на другую: её берут из datasheet выбранного драйвера.
Для идеального ключа и установившегося режима часто используют первое приближение U_ср ≈ D × U_пит. Оно помогает оценить тенденцию, но не учитывает падение напряжения на ключах, рециркуляцию тока, противо-ЭДС мотора, пульсации и просадку источника.
Что происходит во время паузы
Обмотка мотора запасает энергию в магнитном поле. Когда активная диагональ H-моста выключается, уже текущий ток стремится продолжиться в прежнем направлении. Драйвер должен дать ему замкнутый безопасный путь. Такой ток называют рециркулирующим, а варианты его уменьшения — режимами спада тока.
Пауза PWM может быть реализована по-разному:
| Состояние моста в паузе | Электрический смысл | Поведение привода |
|---|---|---|
| свободный ход, выходы высокоомные | ток замыкается через предусмотренные диоды или ключи и постепенно спадает | вал легче продолжает вращаться по инерции |
| медленный спад | обе стороны обмотки подключаются к близкому потенциалу через разрешённую пару ключей | ток меняется мягче, момент дольше сохраняется |
| быстрый спад или обратная полярность | к обмотке прикладывается напряжение, быстрее уменьшающее прежний ток | ток падает быстрее; возможны иные шум, потери и рекуперация |
| короткое торможение | выводы мотора соединяются разрешённым состоянием моста | вращение быстрее затухает, энергия рассеивается или возвращается в шину |
Конкретные названия и токовые пути зависят от архитектуры микросхемы. Нельзя изображать паузу как простой «обрыв провода»: для индуктивной нагрузки это скрывает самую важную часть работы. Нельзя также произвольно включать два ключа одной стойки H-моста — такое состояние может замкнуть питание на землю.
Почему проценты PWM не равны процентам скорости
Скорость устанавливается там, где электромагнитный момент уравновешивает нагрузку и потери. На неё влияют:
- напряжение силовой шины и его просадка при старте;
- сопротивление обмотки и падение напряжения на драйвере;
- масса робота, трение, уклон, диаметр колёс и передаточное отношение;
- противо-ЭДС, которая растёт с оборотами;
- минимальный момент, необходимый для преодоления трения покоя;
- выбранный режим спада тока и частота PWM;
- нагрев обмотки, ключей и соединений.
Поэтому один и тот же D = 40% может медленно вращать поднятое колесо и не сдвинуть робота на ковре. Два номинально одинаковых мотора тоже могут иметь разные обороты при одной команде. Если роботу нужна заданная скорость, энкодер измеряет фактическое движение, а регулятор изменяет PWM по ошибке. Это уже замкнутый контур, в отличие от подачи фиксированного значения без измерения.
Пример: прямой ход двухколёсного робота
Контроллер выдаёт одинаковые начальные команды, но робот уходит вправо. Энкодеры показывают, что левое колесо проходит больше импульсов за тот же интервал. Программа немного уменьшает PWM слева или увеличивает справа. Она корректирует не «напряжение в процентах», а ошибку измеренной скорости.
Пример: конвейер с переменной нагрузкой
Пустая лента движется при небольшой команде. После установки детали скорость падает, хотя коэффициент заполнения не изменился. Причина — возросший требуемый момент и ток. Без обратной связи привод сохраняет команду, но не обязан сохранять обороты.
Как выбрать частоту
Универсальной частоты PWM для всех моторов и драйверов нет. Слишком низкая частота может давать заметные пульсации тока, рывки и слышимый тон. При повышении частоты механический шум часто меняется, зато ключи переключаются чаще: растут коммутационные потери, нагрев и требования к длительности импульсов. Драйвер может задавать допустимый диапазон или внутренний алгоритм регулирования тока.
На выбор влияют индуктивность мотора, напряжение, ток, характеристики ключей, режим спада, возможности таймера и требования к акустике. Рабочая последовательность такая:
- Найти рекомендации и ограничения в datasheet драйвера и мотора.
- Проверить, какую частоту и разрядность реально формирует выбранный таймер контроллера.
- Начать испытание с ограниченным током и ненагруженным механизмом.
- Измерить ток, напряжение на драйвере и температуру под ожидаемой нагрузкой.
- Проверить поведение при старте, торможении и заклинивании по безопасной процедуре.
Повышение частоты при неизменной частоте таймера обычно уменьшает число доступных ступеней коэффициента заполнения. Это компромисс между временным разрешением, частотой и нагрузкой на периферию.
Команда PWM в программе
В среде Arduino функция analogWrite() на поддерживаемых выводах формирует PWM, но диапазон, частота и даже наличие настоящего аналогового выхода зависят от платы и её ядра. Для абстрактного двухвходового драйвера идея выглядит так:
const int pwmPin = 9;
const int directionPin = 8;
void setMotor(bool forward, int command) {
digitalWrite(directionPin, forward ? HIGH : LOW);
analogWrite(pwmPin, constrain(command, 0, 255));
}
Этот фрагмент не является универсальной распиновкой. До загрузки программы нужно сопоставить pwmPin, directionPin, активные уровни, режим сна и таблицу состояний с документацией конкретной платы и драйвера. При смене направления безопасный алгоритм часто сначала уменьшает команду, дожидается снижения тока и только затем меняет состояние моста.
Что запомнить про PWM-привод
| Вопрос | Короткий ориентир |
|---|---|
| Где формируется PWM? | в таймере контроллера или специализированной логике |
| Куда он приходит? | на логический вход драйвера, а не прямо в мотор |
| Откуда берётся ток мотора? | из силового источника через ключи драйвера |
| Что задаёт коэффициент заполнения? | долю активного времени в периоде |
| Что он не гарантирует? | точные обороты, ток или момент без измерения |
| Куда девается ток в паузе? | течёт по предусмотренному пути рециркуляции и спадает по правилам драйвера |
| Откуда брать частоту? | из требований системы и документации компонентов |
Практика
Задание 1. Измерение команды
Настрой генератор или контроллер на три разных коэффициента заполнения при одной частоте. Зарисуйте логические осциллограммы и вычислите D по измеренным t_ON и T. Мотор пока не подключайте.
Задание 2. Поиск минимального старта
На стенде с лабораторным ограничением тока и закреплённым мотором постепенно увеличивай PWM. Отдельно отметьте команду, при которой поднятое колесо начинает вращаться, и команду старта робота на рабочей поверхности. Объясните возможную разницу, не подставляя готовое заключение.
Задание 3. Нагрузка и скорость
Выберите безопасные два режима нагрузки. Для каждого запишите одинаковую PWM-команду, напряжение на входе драйвера, ток и скорость по энкодеру. Составьте таблицу наблюдений и предложите, какой сигнал нужен программе для удержания скорости.
Задание 4. Datasheet-аудит
Для выбранного драйвера найдите допустимый диапазон PWM, таблицу входов, режимы паузы, минимальную длительность импульса и описание защит. Отметьте, какие параметры в документации не заданы и поэтому требуют измерения на вашей плате.
Проверьте себя
- Чем PWM-команда отличается от тока, текущего через мотор?
- Как связаны период, частота и коэффициент заполнения?
- Почему
50%PWM не гарантирует половину максимальной скорости? - Зачем индуктивному току нужен путь после выключения активных ключей?
- Чем свободный ход отличается от электрического торможения?
- Какие потери могут вырасти при слишком высокой частоте PWM?
- Почему таблицу логических входов нельзя переносить между разными драйверами?
- Как энкодер превращает управление скоростью из разомкнутого в замкнутый контур?
Сначала ответьте без подсказки. Ответ можно считать полным, если вы:
- формулируете основную мысль своими словами;
- называете важные условия, ограничения или меры безопасности;
- для схемы, кода или расчёта показываете ход решения и ожидаемый результат.
Если один из пунктов объяснить не получается, найдите соответствующую главу статьи, перечитайте её и повторите ответ.
Словарь статьи
- PWM / ШИМ — способ управления, при котором меняют длительность активного участка повторяющихся импульсов.
- Период
T— время одного полного цикла PWM. - Частота
f— число периодов в секунду;f = 1/T. - Коэффициент заполнения
D— отношение времени активного сигнала к периоду. - Рециркуляция тока — продолжение тока обмотки по безопасному замкнутому пути после переключения ключей.
- Режим спада — способ, которым драйвер уменьшает ток индуктивной нагрузки в паузе.
- Противо-ЭДС — напряжение, возникающее во вращающемся моторе и противодействующее приложенному напряжению.
- Разомкнутый контур — управление без измерения фактического результата.
- Замкнутый контур — управление с обратной связью по скорости, положению или другой величине.
Связанные темы
- Зачем нужен драйвер — почему логический вывод не питает мотор напрямую.
- H-мост — как силовые ключи задают направление и состояние паузы.
- Драйверы коллекторных моторов — как выбрать входы, питание, ток и защиты конкретного драйвера.
- Защита и отладка силовой части — как безопасно проверить форму сигнала, питание и нагрев.
Источники
- Arduino Help Center: Use PWM output with Arduino
- Microchip AN905: Brushed DC Motor Fundamentals
- Microchip AN807: Low-Cost DC Motor Speed Control with CMOS ICs
- Texas Instruments: Current Recirculation and Decay Modes
- Texas Instruments: Calculating Power Dissipation for a H-Bridge or Half Bridge Driver
- Texas Instruments: DRV8833 Dual H-Bridge Motor Driver datasheet