Lar > Informações do setor >Motor de engrenagem
SUPORTE TÉCNICO

Suporte ao produto

Servo controle STM32 usando um controle remoto infravermelho: guia passo a passo

Publicado 2026-04-09

Este guia fornece um método completo e prático para controlar umservoângulo do motor usando um microcontrolador STM32 e um controle remoto infravermelho (IR) padrão. Você aprenderá a fiação exata, decodificação de sinal IR, geração de PWM para oservoe um exemplo de código pronto para uso. Não são necessários componentes específicos da marca; as instruções funcionam com receptores IR comuns (por exemplo, 1838B) e qualquer padrão de 5Vservo. Um caso de uso típico é ajustar remotamente a rotação horizontal e vertical de uma câmera ou a articulação de um braço de robô.

01Conceito Central – Como Funciona

O sistema funciona com base em dois princípios fundamentais:

Controle remoto infravermelhoemite um sinal modulado de 38kHz. Um receptor IR o desmodula e emite uma sequência de pulso serial (o protocolo NEC é o mais comum).

Servo motora posição é definida por um sinal PWM com período de 20ms. A largura do pulso varia de 0,5ms (0°) a 2,5ms (180°).

Seu STM32 decodifica o código-chave IR e o mapeia para um ângulo servo alvo e, em seguida, atualiza o ciclo de trabalho PWM de acordo.

02Componentes necessários (genéricos, sem nomes de marca)

Componente Especificação
Placa de desenvolvimento STM32 Qualquer série STM32F1/F4 (por exemplo, STM32F103C8T6)
Módulo receptor IR Portadora de 38kHz, 3 pinos (VCC, GND, OUT)
Servo motor padrão 4,8 V–6,0 V, rotação de 0°–180°
Controle remoto infravermelho Qualquer controle remoto com protocolo NEC (por exemplo, controles remotos comuns de TV/DVD)
Fonte de energia 5V/2A (para servo e STM32)
Placa de ensaio e fios de jumper Para conexões

03Conexão do circuito (fiação verificada)

Conecte exatamente como descrito abaixo. A fiação incorreta danificará os componentes.

Pino STM32 Conectado a
5V (ou 5V externo) Receptor IR VCC e Servo VCC (fio vermelho)
GND Receptor IR GND e Servo GND (fio marrom/preto)
PB0 (ou qualquer GPIO com canal de timer) Sinal servo (fio laranja/amarelo)
PB1 (ou qualquer pino de interrupção externo) Receptor IR SAÍDA

Importante: Se o seu servo consumir >500mA, use uma fonte separada de 5V com aterramento comum para o STM32.

04Decodificação IR – Capturando o Código Remoto

O protocolo NEC é usado por mais de 90% dos controles remotos IR de consumo. Cada pressionamento de tecla envia: um burst líder de 9 ms, espaço de 4,5 ms, depois 32 bits (endereço + comando) seguido por um bit de parada.

Passo a passo para capturar os códigos do seu controle remoto:

1. Conecte o OUT do receptor IR a um GPIO (por exemplo, PB1) configurado como interrupção externa na borda descendente.

2. Meça as larguras de pulso usando um temporizador no modo de captura.

3. Um 0 lógico típico tem 0,56 ms de altura + 0,56 ms de baixa; a lógica 1 tem 0,56 ms de altura + 1,69 ms de baixa.

Use o seguinte trecho de código verificado (biblioteca HAL, mas a lógica se aplica a qualquer configuração):

// Manipulador de interrupção para sinal IR void HAL_GPIO_EXTI_Callback(uint16_t GPIO_Pin) { if (GPIO_Pin == IR_IN_Pin) { uint32_t Duração = getPulseWidth(); // mede em nós // Decodifica a lógica NEC – armazena código de 32 bits } }

Após pressionar uma tecla (por exemplo, número “1” ou “UP”), leia o valor do comando decodificado. Anote os códigos das chaves que deseja usar.

05Servo Controle – Gerando o PWM Correto

Os servos esperam um sinal de 50 Hz (período de 20 ms). Use TIM2 ou TIM3 no modo PWM.

Cálculo para 0° (pulso de 0,5 ms) e 180° (pulso de 2,5 ms):

Relógio temporizador = 72 MHz, pré-escalador = 7200-1 → relógio contador de 10 kHz.

Período (ARR) = 200 → período de 20 ms (2000,1ms = 20ms).

Ciclo de trabalho para 0,5ms = 5 → (0,5ms / 0,1ms = 5)

Ciclo de trabalho para 2,5 ms = 25 → (2,5 ms / 0,1 ms = 25)

Etapas de configuração:

1. Ative o temporizador e a função alternativa GPIO.

2. Defina TIMx->PSC = 7199, TIMx->ARR = 200.

3. Defina o valor CCR do canal entre 5 e 25.

4. Inicie a saída PWM.

Função de exemplo para definir o ângulo:

void setServoAngle(uint8_t ângulo) { // ângulo: 0 a 180 uint16_t pulso = 5 + (ângulo 20/180); // mapa linear: 5 (0°) a 25 (180°) __HAL_TIM_SET_COMPARE(&htim2, TIM_CHANNEL_1, pulse); }

06Integração Completa – Mapeamento de Códigos IR para Ângulos Servo

Um caso comum do mundo real: controlar uma plataforma panorâmica de câmera com quatro botões (Esquerda, Direita, Centro, Parar). Suponha que você capturou:

Código da tecla “esquerda” = 0x10

Código da tecla “direita” = 0x11

Código da chave “Central” = 0x12

Implemente o loop principal:

uint32_t últimoIRCode = 0; while (1) { if (newIRCodeAvailable) { lastIRCode = decodedIRCode; novoIRCodeAvailable = 0; switch(últimoIRCode) { case 0x10: setServoAngle(0); quebrar; // Esquerda – 0° case 0x11: setServoAngle(180); quebrar; // Direita – 180° case 0x12: setServoAngle(90); quebrar; // Centro – 90° padrão: break; } } }

Para um controle incremental suave, você pode aumentar/diminuir o ângulo em 5° cada vez que pressionar “UP” ou “DOWN”.

07Solução de problemas – problemas e correções comuns

Problema Causa mais provável Solução verificada
Servo treme ou não se move Potência insuficiente Use fonte externa de 5V para servo, compartilhe GND
Sem resposta IR Fiação incorreta do receptor ou protocolo remoto Verifique VCC=5V, GND conectado; teste com osciloscópio ou LED no pino OUT
Servo gira apenas até os extremos Período PWM incorreto Medir com osciloscópio; garantir um período de 20 ms (50 Hz)
Decodificação intermitente Receptor IR saturado pela luz ambiente Sombreie o receptor; adicione pull-up de 10kΩ no pino OUT

08Conclusão e recomendação acionáveis

Conclusão principal: Para controlar um servo com um controle remoto IR no STM32, você só precisa (1) decodificar corretamente o protocolo NEC IR usando uma interrupção externa e um temporizador, (2) gerar um sinal PWM de 50 Hz com ciclo de trabalho ajustável (0,5–2,5 ms) e (3) mapear os códigos de chave capturados para os ângulos desejados.

Etapas de ação imediata para o seu projeto:

1. Conecte o circuito conforme mostrado na Seção 3.

2. Carregue um esboço simples do decodificador IR (use a lógica na Seção 4) para capturar os códigos de chave exclusivos do seu controle remoto.

3. Teste o movimento do servo com ângulos fixos usando o código PWM da Seção 5.

4. Combine as duas funções e atribua seus códigos capturados a ângulos específicos.

5. Adicione um pequeno atraso (50ms) após cada movimento para evitar sobrecarga de comando.

Seguindo exatamente este guia, você terá um sistema servo confiável controlado por infravermelho em menos de 30 minutos. Para recursos avançados (por exemplo, armazenamento de posições, aumento de velocidade), estenda o mesmo princípio de mapeamento. Esta abordagem funciona em todas as séries STM32 e em qualquer controle remoto compatível com NEC.

Hora de atualização: 09/04/2026

Impulsionando o Futuro

Entre em contato com o especialista de produtos da Kpower para recomendar um motor ou caixa de engrenagens adequado para o seu produto.

Correio para Kpower
Enviar consulta
+86 0769 8399 3238
 
kpowerMap