Опубликовано 2026-04-13
Широтно-импульсная модуляция (ШИМ) — это стандартный метод, используемый для точного управления угловым положением стандартного хобби.сервоприводмотор. Изменяя ширину электрического импульса, подаваемого насервоприводкаждые 20 миллисекунд вы можете командоватьсервоприводдля перемещения на определенный угол, обычно от 0 до 180 градусов. В этом руководстве представлены точные характеристики сигналов, пошаговая логика управления, практические примеры и советы по устранению неполадок, чтобы вы могли немедленно реализовать сервоуправление с ШИМ.
Стандартный серводвигатель содержит небольшую схему управления, которая считывает входящий сигнал ШИМ. Положение выходного вала сервопривода определяется исключительноширина импульса(длительность высокого сигнала) в пределах фиксированного кадра длительностью 20 мс (50 Гц). Зависимость линейная: определенная ширина импульса равна определенному целевому углу.
Стандартное преобразование импульса в угол (для сервоприводов 0–180°):
0 градусов:Импульс 0,5 мс (500 микросекунд)
90 градусов (нейтраль):Импульс 1,5 мс (1500 микросекунд)
180 градусов:Импульс 2,5 мс (2500 микросекунд)
Эти значения являются отраслевыми стандартами. Всегда проверяйте техническое описание вашего сервопривода, но более 95% стандартных сервоприводов соответствуют этому точному сопоставлению.
Для управления углом сервопривода необходимо генерировать повторяющийся сигнал с двумя ключевыми параметрами:
Сервопривод ожидает новый импульс каждые 20 миллисекунд. Это означает, что частота ШИМ равна 1/0,02 с = 50 Гц. Не меняйте эту частоту; в противном случае сервопривод будет дрожать или не реагировать.
Используйте эту формулу линейной интерполяции:
Ширина импульса (мс) = 0,5 + (угол/180) 2.0
Например:
Угол = 45° → Импульс = 0,5 + (45/180)2,0 = 0,5 + 0,5 =1,0 мс
Угол = 135° → Импульс = 0,5 + (135/180)2.0 = 0.5 + 1.5 = 2,0 мс
На практике вы устанавливаете таймер: выводите HIGH для ширины импульса (например, 1,5 мс), затем выводите LOW для оставшегося времени (20 мс – 1,5 мс = 18,5 мс). Повторяйте непрерывно.
Представьте, что у вас есть сервопривод, подключенный к роботизированной руке. Вы хотите, чтобы он перемещался от крайнего левого (0°) до крайнего правого (180°) пошагово.
Последовательность сигналов (каждая строка представляет собой один цикл длительностью 20 мс):
Цикл 1: ВЫСОКИЙ в течение 0,5 мс → Сервопривод перемещается на 0°.
Цикл 2: ВЫСОКИЙ в течение 1,0 мс → Сервопривод перемещается на 45°.
Цикл 3: ВЫСОКИЙ в течение 1,5 мс → Сервопривод перемещается на 90°.
Цикл 4: ВЫСОКИЙ в течение 2,0 мс → Сервопривод перемещается на 135°.
Цикл 5: ВЫСОКИЙ в течение 2,5 мс → Сервопривод перемещается на 180°.
Наблюдаемое поведение:Сервопривод будет поворачиваться к каждому углу и удерживать это положение. Он не дрейфует, поскольку схема управления постоянно получает заданную ширину импульса.
Вы можете сгенерировать необходимый сигнал ШИМ, используя:
Модули таймера/счетчика микроконтроллера– Настройте ШИМ с частотой 50 Гц и переменным рабочим циклом. Рабочий цикл = (ширина импульса / 20 мс) 100%. Для импульса длительностью 1,5 мс коэффициент заполнения = 7,5%.
Программное обеспечение– Непосредственное управление выводом GPIO с задержками. Менее точный, но работает для обучения.
Выделенные модули сервоприводов– Такая точность синхронизации разгружается, но при этом требуется тот же диапазон импульсов 0,5–2,5 мс.
Критическое требование точности:Точность ширины импульса должна быть в пределах ±10 мкс (микросекунд). Джиттер или неправильные углы возникают, если отклонение времени превышает 20 мкс.
Реальный случай:Распространенной ошибкой является использование диапазона 1,0–2,0 мс, поскольку некоторые библиотеки микроконтроллеров используют его по умолчанию. Один пользователь сообщил, что его сервопривод повернулся всего на 90°. После изменения диапазона импульсов до 0,5–2,5 мс восстанавливался полный поворот на 180°.
ШИМ управляет углом сервопривода по ширине импульса, а не только по рабочему циклу.В течение фиксированного периода 20 мс положение определяется по абсолютному высокому времени (от 0,5 до 2,5 мс).
Связь линейная:длительность импульса = 0,5 мс + (угол/180)*2,0 мс.
Всегда используйте частоту 50 Гц (период 20 мс).Любая другая частота вызовет неустойчивое поведение или отсутствие движения.
Проверьте минимальную и максимальную ширину импульса.Большинство проблем связано с неправильным диапазоном импульсов, а не сбоем оборудования.
Немедленно выполните следующие действия, чтобы получить стабильные результаты:
1. Измерьте фактическую реакцию вашего сервопривода.Отправляйте импульсы длительностью 0,5 мс, 1,5 мс и 2,5 мс. Отметьте физические углы. Если они не равны 0°, 90°, 180°, запишите фактическое отображение импульса в угол.
2. Добавьте запас прочности в 100–200 мкс.на обоих концах (мин. импульс = 0,6 мс, макс. = 2,4 мс) для предотвращения механического заедания.
3. Используйте специальный таймервместо программных задержек, когда это возможно. ШИМ на основе таймера поддерживает точность, даже когда ваш основной код занят.
4. Проверьте логическим анализатором или осциллографом.для подтверждения ширины импульса. Многие программные симуляции скрывают ошибки синхронизации.
5. Для проектов с несколькими сервоприводамидержите источник питания отдельно от источника логики. Остановившийся сервопривод может потреблять ток 1–2 А, вызывая падение напряжения, которое искажает сигналы ШИМ.
Строго придерживаясь диапазона ширины импульса 0,5–2,5 мс в течение периода 20 мс, вы добьетесь точного и повторяемого управления углом на любом стандартном серводвигателе. Сначала выполните этап измерения, затем настройте свой код, и ваш сервопривод будет двигаться именно туда, куда вы прикажете.
Время обновления: 13 апреля 2026 г.
Свяжитесь со специалистом по продукции Kpower, чтобы порекомендовать подходящий двигатель или редуктор для вашего продукта.