Como controlar um servo motor com ESP32 usando Python: um guia completo_BLDC_Industry Insights_Kpower
Lar > Informações do setor >BLDC
SUPORTE TÉCNICO

Suporte ao produto

Como controlar um servo motor com ESP32 usando Python: um guia completo

Publicado 2026-04-05

Este guia fornece um método passo a passo para controlar um padrãoservomotor com placa ESP32 usando Python. Esteja você construindo um braço robótico, um suporte de câmera pan-tilt ou um simples suporte móvel, você aprenderá a fiação exata, o código Python e as etapas de calibração para fazer seuservomova-se com precisão. Todos os exemplos são baseados em situações comuns do mundo real, para que você possa aplicá-los imediatamente aos seus próprios projetos.

01O que você precisa

Uma placa de desenvolvimento ESP32 (qualquer variante comum)

Um padrão 5Vservomotor (por exemplo, tipo SG90 ou MG995)

Fonte de alimentação externa de 5 V (se estiver usando um servo de alto torque)

Fios jumper (fêmea para fêmea)

Um computador com firmware MicroPython instalado no ESP32

> Importante: Nunca alimente um servo diretamente do pino de 3,3V do ESP32. A maioria dos servos requer 5 V e pode consumir mais corrente do que a placa pode fornecer com segurança. Use uma fonte de alimentação de 5 V separada para o servo e conecte apenas o fio de sinal ao ESP32.

02Conexão de hardware – um caso real

Imagine que você está construindo uma garra robótica simples que abre e fecha. Você tem um servo MG995 comum. Conecte-o da seguinte maneira:

Fio Servo Cor (típica) Conecte-se a
Poder Vermelho Terminal positivo externo de 5 V
Chão Marrom ou Preto Aterramento externo de 5VeESP32 GND
Sinal Laranja ou Amarelo ESP32 GPIO pino 15 (qualquer pino PWM)

Ponto crítico: O aterramento da fonte de alimentação externadeveser conectado ao ESP32 GND. Sem esse ponto comum, o sinal ficará instável e o servo irá tremer ou não se mover.

03Código Python – Passo a Passo

O ESP32 controla um servo gerando um sinal PWM de 50Hz (período = 20ms). A posição do servo é determinada pela largura do pulso: 0,5 ms para 0°, 1,5 ms para 90° e 2,5 ms para 180°.

Abaixo está um script MicroPython completo e testado. Salve comoprincipal.pyno seu ESP32.

do pino de importação da máquina, tempo de importação do PWM # Use GPIO15 – você pode alterar para qualquer pino que suporte PWM SERVO_PIN = 15 # Freqüência servo padrão: 50 Hz PWM_FREQ = 50 # Valores do ciclo de trabalho para 0°, 90°, 180° (calculado para 50 Hz) # Para uma resolução PWM de 16 bits (0–65535): # Duty = (pulso_largura_ms / 20ms)65535 # 0,5 ms -> 1638 (0°) # 1,5 ms -> 4915 (90°) # 2,5 ms -> 8192 (180°) DUTY_0 = 1638 DUTY_90 = 4915 DUTY_180 = 8192 # Inicialize o PWM no pino servo = PWM(Pin(SERVO_PIN), freq=PWM_FREQ, duty_u16=DUTY_90) # inicia em 90° def set_angle(ângulo): """ Define o ângulo do servo (0° a 180°). Mapeia linearmente o ângulo para o ciclo de serviço. """ # Ângulo de fixação para ângulo de faixa válido = max(0, min(180, ângulo)) # Mapeamento linear: duty = DUTY_0 + (ângulo/180)(DUTY_180 - DUTY_0) duty = int(DUTY_0 + (angle / 180) * (DUTY_180 - DUTY_0)) servo.duty_u16(duty) # Exemplo: varrer para frente e para trás enquanto True: for angle in range(0, 181, 10): set_angle(angle) time.sleep_ms(50) for angle in range(180, -1, -10): set_angle(ângulo) time.sleep_ms(50)

04Como usar o código

1. Atualize o firmware MicroPython para seu ESP32 (se ainda não tiver feito isso).

2. Conecte o servo conforme descrito.

3. Copie o script para o quadro usando uma ferramenta comompremoteou Thonny.

4. Execute o script. O servo irá varrer de 0° a 180° e voltar repetidamente.

05Calibração – Por que seu servo pode precisar de valores diferentes

Diferentes modelos de servo possuem faixas de largura de pulso ligeiramente diferentes. Por exemplo, um SG90 barato pode funcionar de 0,5 ms a 2,4 ms, enquanto um MG996R de alto torque usa 0,6 ms a 2,4 ms. A faixa comum de 0,5 a 2,5 ms funciona para a maioria, mas você deve sempre calibrar.

Método de calibração(um caso real de um projeto de braço robótico):

Defina o ciclo de trabalho para 1638 e observe o ângulo real.

Se o servo não atingir 0°, aumente ligeiramente o serviço (por exemplo, 1700) até que ele pare de se mover.

Faça o mesmo para 180° diminuindo de 8192.

Use seus DUTY_MIN e DUTY_MAX medidos noset_ângulo()função.

06Problemas e soluções comuns

Problema Causa mais provável Consertar
Servo não se move Falta de terreno comum entre ESP32 e servo power Conecte o GND da fonte externa ao ESP32 GND
Servo nervosismo ou contrações musculares A frequência PWM não é 50 Hz; ou poder instável Definirfrequência=50; use uma fonte separada de 5 V com corrente adequada
O servo se move apenas em uma pequena faixa Os valores de serviço não estão corretos para o seu servo Calibre conforme descrito acima; ajuste DUTY_0 e DUTY_180
ESP32 é reiniciado quando o servo se move O servo consome muita corrente do pino de 5V da placa Nunca alimente o servo do ESP32; use fonte externa de 5V

07Princípio fundamental a ser lembrado

Um servo é controlado pela largura do pulso, não pela porcentagem do ciclo de trabalho.A frequência deve ser exatamente 50Hz (período 20ms). Alterar a largura do pulso entre 0,5 ms e 2,5 ms gira o servo de 0° a 180°. No MicroPythondever_u16()método, o mapeamento da largura de pulso para o valor de serviço depende da resolução PWM (sempre 16 bits no ESP32). Use as fórmulas fornecidas ou a função de mapeamento linear.

08Recomendações acionáveis

1. Sempre comece com um teste de varredura simples– confirma a fiação e a operação básica do PWM.

2. Use um analisador lógico ou um osciloscópiopara verificar a largura do pulso se o servo se comportar de maneira estranha.

3. Para projetos alimentados por bateria, adicione um capacitor grande (470 µF ou mais) nos terminais de alimentação do servo para absorver quedas de tensão.

4. Quando seu projeto requer vários servos, controle cada um em um pino GPIO separado, mas certifique-se de que a corrente total não exceda a classificação da sua fonte de alimentação.

09Resumo Final

Controlar um servo com ESP32 e Python é simples: conecte o fio de sinal a qualquer GPIO compatível com PWM, forneça energia separada de 5 V com um aterramento comum, gere um sinal PWM de 50 Hz e ajuste o ciclo de trabalho para definir a largura de pulso entre 0,5 ms e 2,5 ms. O código fornecido funciona imediatamente para a maioria dos servos padrão. Se a faixa de movimento estiver incorreta, calibre os valores de serviço mínimo e máximo para seu servo específico. Agora você está pronto para integrar movimentos precisos em seus próprios projetos baseados no ESP32.

Hora de atualização: 05/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
Mensagem do WhatsApp
+86 0769 8399 3238
 
kpowerMap