Опубликовано 2026-04-07
В этом руководстве содержится все необходимое для точного контроля угла поворота стандартного микроконтроллера.сервоприводс помощью микроконтроллера. Основной принцип прост:сервоприводПоложение выходного вала определяется шириной импульсного сигнала. Для наиболее распространенных микросервоприводс, импульс длительностью 1,5 миллисекунды (мс) центрирует вал под углом 90°, импульс длительностью 1,0 мс перемещает его к 0°, а импульс 2,0 мс перемещает его под углом 180°. Однако реальные сервоприводы различаются. В этой статье представлены проверенные методы, примеры кода и этапы калибровки для достижения точного пошагового контроля, не полагаясь на какую-либо конкретную марку.
АМикро Сервоприводсодержит небольшой двигатель постоянного тока, потенциометр обратной связи и схему управления. Схема сравнивает ширину входящего импульса с положением потенциометра. Когда ширина импульса соответствует желаемому положению, двигатель останавливается. Зависимость между шириной импульса и углом линейна в пределах механических ограничений сервопривода.
Стандартные характеристики сигнала:
Частота повторения импульсов:50 Гц (период = 20 мс)
Используемый диапазон ширины импульса:Обычно от 1,0 до 2,0 мс.
Соответствующий диапазон углов:от 0° до 180°
Это означает, что сервопривод ожидает импульс каждые 20 мс. Изменяя длительность импульса с 1,0 мс до 2,0 мс, вы управляете валом от 0° до 180°.
Вы покупаете дваМикро Сервоприводиз той же партии. Один идеально центрируется под углом 90°, когда вы посылаете импульс длительностью 1,5 мс. Другой останавливается на отметке 85°. Это происходит из-за производственных допусков в потенциометре обратной связи и механической сборке. Поэтому всегда калибруйте каждый сервопривод индивидуально.
Большинство платформ микроконтроллеров имеют встроенную сервобиблиотеку, генерирующую стабильные импульсы частотой 50 Гц. Ниже приведен общий пример кода, который работает с любым микроконтроллером, поддерживающим библиотеки вывода ШИМ и сервоуправления.
Подключите провод питания сервопривода (красный) к источнику питания 5 В, обеспечивающему ток не менее 500 мА.
Подключите заземляющий провод (коричневый или черный) к GND микроконтроллера.
Подключите сигнальный провод (оранжевый, желтый или белый) к контакту с поддержкой ШИМ (например, контакту 9).
#включатьСервопривод myServo; void setup() { myServo.attach(9); // Подключаем сервопривод к контакту 9 } void Loop() { myServo.write(0); // Команда 0 градусов задержки(1000); мойСерво.запись(90); // Команда 90 градусов Delay(1000); мойСерво.запись(180); // Команда 180 градусов задержка(1000); }
The написать (угол)Функция автоматически преобразует угол в соответствующую ширину импульса, используя сопоставление по умолчанию (0°→1,0 мс, 180°→2,0 мс). Однако это значение по умолчанию может не соответствовать вашему конкретному сервоприводу.
Чтобы добиться точных углов, вы должны определить точную ширину импульса, которая создает 0° и 180° на ВАШЕМ сервоприводе.
1. Прикрепите указатель или отметьте нейтральное положение вала.
![]()
2. Отправьте импульс длительностью 1,5 мс. Вал должен находиться под углом около 90°. Обратите внимание на любое смещение.
3. Уменьшайте длительность импульса с шагом 10 мкс, пока вал не перестанет двигаться. Это ваша истинная ширина импульса 0°.
4. Увеличивайте длительность импульса с 1,5 мс с шагом 10 мкс до тех пор, пока вал не перестанет двигаться. Это ваша истинная ширина импульса 180°.
Типичные результаты измерений трех распространенных сервоприводов:
Эти значения показывают, что при выборе значения от 1000 мкс до 2000 мкс могут возникнуть ошибки до 15°. Всегда используйте калиброванные значения.
Большинство сервобиблиотек позволяют вам устанавливать собственные диапазоны ширины импульса с помощьюприкреплять()перегрузка или отдельная функция. Пример:
myServo.attach(9, 540, 2420); // Pin, минимальная длительность импульса (мкс), максимальная ширина импульса (мкс)
После присоединения с калиброванными пределами,myServo.write(90)отправит точный центральный импульс (в данном случае 1480 мкс), давая истинные 90°.
Шаг 1: Всегда калибруйте каждый сервопривод индивидуально.– Не предполагайте заводские характеристики. Потратьте 5 минут на измерение истинной ширины импульса 0° и 180°.
Шаг 2. Используйте выделенный источник питания– Не подавайте питание на микросервоприводы напрямую от контакта 5 В микроконтроллера. Внезапное потребление тока может привести к сбросу контроллера. Используйте UBEC 5 В, 1 А или регулируемый внешний источник питания.
Шаг 3. Сохраните значения калибровки в своем коде.– После калибровки жестко запрограммируйте минимальную и максимальную ширину импульса. Пример:
#define SERVO_PIN 9 #define SERVO_0_PULSE 540 // измерено мкс для 0° #define SERVO_180_PULSE 2420 // измерено мкс для 180° Servo myServo; myServo.attach(SERVO_PIN, SERVO_0_PULSE, SERVO_180_PULSE);
Шаг 4. Проверьте с помощью простого теста.– Команда 0°, 45°, 90°, 135°, 180°. Используйте транспортир, чтобы проверить точность. Если какой-либо угол отклоняется более чем на 2°, повторите калибровку.
Шаг 5. Задокументируйте свои настройки– Запишите калиброванную ширину импульса для каждого сервопривода. При замене сервопривода немедленно выполните повторную калибровку.
Угол микросервопривода напрямую контролируется шириной импульса. Стандартное отображение (1,0 мс = 0°, 1,5 мс = 90°, 2,0 мс = 180°) является отправной точкой. Настоящие сервоприводы требуют индивидуальной калибровки минимальной и максимальной ширины импульса для достижения истинной точности от 0° до 180°. Без калибровки вы можете столкнуться с смещением от 10° до 20°.
Выполнив процедуру калибровки и настроив диапазон ширины импульса в своем коде, вы добьетесь повторяемого и точного позиционирования сервопривода для любого применения — от роботизированных манипуляторов до подвесов камер. Всегда проверяйте истинные пределы каждого сервопривода и соответствующим образом корректируйте свой код. Эта практика исключает догадки и гарантирует, что ваш проект всегда будет работать надежно.
Время обновления: 7 апреля 2026 г.
Свяжитесь со специалистом по продукции Kpower, чтобы порекомендовать подходящий двигатель или редуктор для вашего продукта.