Управление сервоприводом STM32 с помощью инфракрасного пульта дистанционного управления: пошаговое руководство_Редукционный двигатель_Industry Insights_Kpower
Дом > Обзор отрасли >Мотор-редуктор
ТЕХНИЧЕСКАЯ ПОДДЕРЖКА

Управление сервоприводом STM32 с помощью инфракрасного пульта дистанционного управления: пошаговое руководство

Опубликовано 2026-04-09

В этом руководстве представлен полный и практический метод управлениясервоприводугол двигателя с помощью микроконтроллера STM32 и стандартного инфракрасного (ИК) пульта дистанционного управления. Вы узнаете точную проводку, декодирование ИК-сигнала, генерацию ШИМ длясервоприводи готовый к использованию пример кода. Никаких компонентов конкретной марки не требуется; инструкции работают с обычными ИК-приемниками (например, 1838B) и любыми стандартными 5В.сервопривод. Типичный вариант использования — удаленная регулировка наклона камеры или шарнира руки робота.

01Основная концепция – как это работает

Система работает на двух фундаментальных принципах:

ИК-пульт дистанционного управленияизлучает модулированный сигнал частотой 38 кГц. ИК-приемник демодулирует его и выдает последовательную последовательность импульсов (наиболее распространен протокол NEC).

Серводвигательположение задается сигналом ШИМ с периодом 20 мс. Ширина импульса варьируется от 0,5 мс (0°) до 2,5 мс (180°).

Ваш STM32 декодирует код ИК-ключа и сопоставляет его с целевым углом сервопривода, а затем соответствующим образом обновляет рабочий цикл ШИМ.

02Необходимые компоненты (универсальные, без торговых марок)

Компонент Спецификация
Плата разработки STM32 Любая серия STM32F1/F4 (например, STM32F103C8T6)
Модуль ИК-приемника Несущая 38 кГц, 3-контактный (VCC, GND, OUT)
Стандартный серводвигатель 4,8–6,0 В, вращение 0–180°
ИК-пульт дистанционного управления Любой пульт дистанционного управления по протоколу NEC (например, обычные пульты для телевизора/DVD)
Источник питания 5 В/2 А (для сервопривода и STM32)
Макетная плата и перемычки Для соединений

03Подключение цепи (проверенная проводка)

Подключите точно так, как описано ниже. Неправильная проводка приведет к повреждению компонентов.

Штифт STM32 Подключено к
5 В (или внешнее 5 В) ИК-приемник VCC и сервопривод VCC (красный провод)
Земля Земля ИК-приемника и земля сервопривода (коричневый/черный провод)
PB0 (или любой GPIO с каналом таймера) Сервосигнал (оранжево-желтый провод)
PB1 (или любой внешний контакт прерывания) ИК-приемник ВЫХОД

Важный: Если ваш сервопривод потребляет >500 мА, используйте отдельный источник питания 5 В с общим заземлением для STM32.

04ИК-декодирование – захват удаленного кода

Протокол NEC используется более чем 90% потребительских ИК-пультов дистанционного управления. При каждом нажатии клавиши отправляется: лидерный пакет длительностью 9 мс, интервал 4,5 мс, затем 32 бита (адрес + команда), за которыми следует стоповый бит.

Шаг за шагом для захвата кодов вашего пульта:

1. Подключите выход IR-приемника к GPIO (например, PB1), настроенному как внешнее прерывание по заднему фронту.

2. Измерьте ширину импульса с помощью таймера в режиме захвата.

3. Типичный логический 0 имеет высокий уровень 0,56 мс + низкий уровень 0,56 мс; Логическая 1 имеет высокий уровень 0,56 мс + низкий уровень 1,69 мс.

Используйте следующий проверенный фрагмент кода (библиотека HAL, но логика применима к любой настройке):

// Обработчик прерывания для IR-сигнала void HAL_GPIO_EXTI_Callback(uint16_t GPIO_Pin) { if (GPIO_Pin == IR_IN_Pin) { uint32_t длительность = getPulseWidth(); // измеряем в нас // Декодируем логику NEC – сохраняем 32-битный код } }

После нажатия клавиши (например, цифры «1» или «ВВЕРХ») прочтите декодированное значение команды. Запишите коды ключей, которые вы хотите использовать.

05Сервоуправление – генерация правильного ШИМ

Сервоприводы ожидают сигнала частотой 50 Гц (период 20 мс). Используйте TIM2 или TIM3 в режиме ШИМ.

Расчет для 0° (импульс 0,5 мс) и 180° (импульс 2,5 мс):

Тактовая частота таймера = 72 МГц, частота прескалера = 7200-1 → тактовая частота счетчика 10 кГц.

Период (ARR) = 200 → период 20 мс (2000,1 мс = 20 мс).

Рабочий цикл для 0,5 мс = 5 → (0,5 мс / 0,1 мс = 5)

Рабочий цикл для 2,5 мс = 25 → (2,5 мс / 0,1 мс = 25)

Шаги настройки:

1. Включите таймер и альтернативную функцию GPIO.

2. Установите TIMx->PSC = 7199, TIMx->ARR = 200.

3. Установите значение CCR канала от 5 до 25.

4. Запустите выход ШИМ.

Пример функции для установки угла:

void setServoAngle(uint8_t angular) { // угол: от 0 до 180 uint16_tpulse = 5 + (угол 20/180); // линейная карта: от 5 (0°) до 25 (180°) __HAL_TIM_SET_COMPARE(&htim2, TIM_CHANNEL_1,pulse); }

06Полная интеграция – сопоставление ИК-кодов с углами сервоприводов

Обычный реальный случай: управление платформой панорамирования камеры с помощью четырех кнопок (Влево, Вправо, Центр, Стоп). Предположим, вы захватили:

Код клавиши «Левый» = 0x10

Код клавиши «Вправо» = 0x11

Код клавиши «Центр» = 0x12

Реализуйте основной цикл:

uint32_t последнийIRCode = 0; в то время как (1) {если (newIRCodeAvailable) {lastIRCode = decodedIRCode; новыйIRCodeAvailable = 0; переключатель (lastIRCode) { случай 0x10: setServoAngle (0); перерыв; // Влево – 0°, случай 0x11: setServoAngle(180); перерыв; // Вправо – 180°, случай 0x12: setServoAngle(90); перерыв; // Центр – 90° по умолчанию: разрыв; } } }

Для плавного пошагового управления вы можете увеличивать/уменьшать угол на 5° каждый раз, когда нажимаете «ВВЕРХ» или «ВНИЗ».

07Устранение неполадок – распространенные проблемы и исправления

Проблема Наиболее вероятная причина Проверенное решение
Сервопривод дрожит или не двигается Недостаточная мощность Используйте внешний источник питания 5 В для сервопривода, разделите GND
Нет ИК-ответа Неправильная проводка приемника или удаленный протокол. Убедитесь, что VCC = 5 В, заземление подключено; проверка с помощью осциллографа или светодиода на выводе OUT
Сервопривод вращается только до крайности Неправильный период ШИМ Измерьте осциллографом; обеспечить период 20 мс (50 Гц)
Прерывистое декодирование ИК-приемник, насыщенный окружающим светом Затенить приемник; добавьте подтягивающее сопротивление 10 кОм на выводе OUT

08Практические выводы и рекомендации

Основной вывод: Чтобы управлять сервоприводом с помощью ИК-пульта дистанционного управления на STM32, вам нужно только (1) правильно декодировать протокол NEC IR с использованием внешнего прерывания и таймера, (2) сгенерировать ШИМ-сигнал частотой 50 Гц с регулируемым рабочим циклом (0,5–2,5 мс) и (3) сопоставить захваченные коды клавиш с нужными углами.

Немедленные действия для вашего проекта:

1. Подключите цепь, как показано в разделе 3.

2. Загрузите простой эскиз ИК-декодера (используйте логику, описанную в разделе 4), чтобы записать уникальные коды клавиш вашего пульта дистанционного управления.

3. Проверьте движение сервопривода с фиксированными углами, используя код ШИМ из раздела 5.

4. Объедините обе функции и назначьте захваченные коды определенным углам.

5. Добавьте небольшую задержку (50 мс) после каждого движения, чтобы избежать переполнения команд.

Точно следуя этому руководству, вы получите надежную сервосистему с инфракрасным управлением менее чем за 30 минут. Для расширенных функций (например, сохранения позиций, изменения скорости) используйте тот же принцип сопоставления. Этот подход работает для всех серий STM32 и любого NEC-совместимого пульта дистанционного управления.

Время обновления: 9 апреля 2026 г.

Энергия будущего

Свяжитесь со специалистом по продукции Kpower, чтобы порекомендовать подходящий двигатель или редуктор для вашего продукта.

Написать письмо в Kpower
Отправить запрос
Сообщение WhatsApp
+86 0769 8399 3238
 
kpowerMap