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

Suporte ao produto

Como controlar vários servomotores com um Raspberry Pi (um guia completo)

Publicado 2026-04-05

Controlando váriosservomotores com Raspberry Pi é um desafio comum para projetos de robótica e automação. A chave não é conectarservodiretamente aos pinos GPIO – as saídas PWM integradas do Raspberry Pi são limitadas e não podem fornecer corrente suficiente. A solução confiável é usar uma placa de driver PWM dedicada, como o módulo PWM de 12 bits e 16 canais PCA9685. Este guia fornece um método passo a passo compatível com EEAT para controlar até 16servos simultaneamente, com base em projetos do mundo real, como um braço robótico de 6 eixos ou uma cabeça animatrônica multiservo.

01Por que um Raspberry Pi padrão não pode controlar diretamente muitos servos

Pinos PWM de hardware limitados– Um Raspberry Pi possui apenas dois canais PWM de hardware (GPIO 18 e GPIO 19 na maioria dos modelos). O PWM de software é possível, mas causa instabilidade e alta carga da CPU.

Corrente insuficiente– Cada servo pode consumir 200–500 mA durante o movimento. Conectar mais de dois servos diretamente ao pino de 5V corre o risco de danificar o regulador de tensão do Pi.

Precisão de tempo– Os servos precisam de um sinal PWM preciso de 50 Hz com ciclos de trabalho variáveis. O driver PCA9685 alivia esse tempo, fornecendo controle estável para todos os servos simultaneamente.

02Hardware necessário – Exemplo do mundo real (braço robótico de 6 servos)

Para um projeto típico (por exemplo, um pequeno braço robótico com 6 graus de liberdade), você precisará de:

Raspberry Pi (qualquer modelo com GPIO, 3B+ ou mais recente recomendado)

Placa de driver PWM de 16 canais PCA9685 (normalmente disponível por ~$5-10)

Fonte de alimentação externa de 5V DC (capacidade = número de servos × 0,5 A + margem de 20% → para 6 servos: 6 × 0,5 = 3A, use uma fonte de 5V/5A)

6 servos padrão SG90 ou MG90S (comuns em projetos de hobby)

Fios jumper (fêmea para fêmea para sinal, macho para fêmea para conexões opcionais)

Capacitor eletrolítico de 1000 µF (opcional, mas recomendado, colocado em 5V/GND próximo aos servos para reduzir picos de tensão)

03Diagrama de fiação (passo a passo)

1. Conecte PCA9685 ao Raspberry Pi (barramento I2C)

VCC → pino 5V no Pi (ou use 5V da fonte externa - veja nota de energia)

GND → Pino GND em Pi (terra comum obrigatória)

SCL → GPIO3 (SCL)

SDA → GPIO 2 (SDA)

2. Conecte alimentação externa de 5 V ao PCA9685

Terminal V+ no PCA9685 → alimentação externa 5V positiva

Terminal GND no PCA9685 → alimentação externa negativaEpara o GND do Pi (criar um terreno comum)

3. Conecte servos ao PCA9685

Fio de sinal servo (geralmente laranja/amarelo) → canal PWM 0,1,2,… (até 15)

Servo VCC (vermelho) → terminal V+ no PCA9685 (5V externo)

Servo GND (marrom/preto) → terminal GND no PCA9685

> Erro comum: Usando o pino 5V do Pi para alimentar vários servos. Mesmo com uma placa driver, o 5V do Pi não pode fornecer mais do que ~500 mA. Sempre use uma fonte externa de 5V com corrente adequada.

04Configuração de software (Raspberry Pi OS, testado no Bookworm)

Habilite o I2C e instale a biblioteca Python:

sudo raspi-config # Navegue: Opções de interface → I2C → Habilitar reinicialização do sudo

舵机树莓派_树莓派控制360度舵机转动_如何用树莓派控制多个舵机

Após a reinicialização, instale oadafruit-circuitpython-servokitbiblioteca (a biblioteca é de código aberto; nenhum endosso de marca específico está implícito):

sudo apt update sudo apt instalar python3-pip python3-smbus i2c-tools sudo pip3 instalar adafruit-circuitpython-servokit

Verifique a detecção I2C:

i2cdetect -y 1

Você deve ver o endereço0x40(endereço PCA9685 padrão).

05Código Python – Controlando 6 Servos para um Braço Robô

Crie um arquivomulti_servo.py:

from adafruit_servokit import ServoKit import time # Inicialize o driver PCA9685 (endereço padrão 0x40, 16 canais) kit = ServoKit(channels=16) # Defina a frequência PWM para 50 Hz (padrão para servos) kit.frequency = 50 # Defina canais servo (0 a 5 para 6 servos) servo_channels = [0, 1, 2, 3, 4, 5] # Exemplo: mova todos os servos para a posição neutra (90°) # A maioria dos servos aceita larguras de pulso de 0,5ms (0°) a 2,5ms (180°) # A biblioteca mapeia ângulos de 0–180 automaticamente. para ch em servo_channels: kit.servo[ch].angle = 90 time.sleep(0.2) # permite que cada servo alcance a posição # Move o servo no canal 0 de 0° a 180° em etapas def sweep_servo(channel): for angle in range(0, 181, 10): kit.servo[channel].angle = angle time.sleep(0.05) # Exemplo de sequência para uma rotação da base do braço do robô sweep_servo(0) # base gira kit.servo[1].angle = 45 # ombro time.sleep(0.5) kit.servo[2].angle = 120 # cotovelo time.sleep(0.5) print("Todos os servos controlados com sucesso")

Corra compython3 multi_servo.py. Para movimento simultâneo, usekit.servo[ch].ângulo = valorsemdormirentre canais – o driver atualiza todos os canais ao mesmo tempo.

06Regras críticas de fornecimento de energia (evite reinicialização ou danos)

Número de servos Fornecimento Externo Recomendado Capacitor Problema comum
1‑2 5V/2A 470 µF Pi ainda pode funcionar, mas evite
3‑5 5V / 3‑5A 1000 µF Contração do servo / reinicialização do Pi
6‑10 5V / 7‑10A 2.200 µF Queda de tensão causa perda de controle
11‑16 5V/12‑15A 3300 µF Use fios grossos (AWG 16)

Nuncaalimente o V + do PCA9685 a partir do pino 5V do Pi quando mais de um servo estiver conectado. O aterramento deve ser compartilhado: conecte o GND da fonte externa ao GND do Pi e ao GND do PCA9685.

07Solução de problemas – casos do mundo real

Caso A: Os servos tremem ou se movem de forma irregular.

Causa: Corrente insuficiente ou falta de terra comum.

Consertar: Use uma fonte de 5V mais forte; verifique se o GND da fonte externa está conectado ao GND do Pi.

Caso B: Apenas alguns servos respondem.

Causa: Fio de sinal solto ou endereço I2C errado.

Consertar: Correri2cdetect -y 1de novo; certifique-se de que o endereço seja0x40. Verifique cada conexão de sinal.

Caso C: Raspberry Pi reinicia quando os servos se movem.

Causa: Queda de tensão na linha de 5 V que alimenta o Pi (mesmo usando alimentação externa, um problema de GND compartilhado pode causar retroalimentação).

Consertar: Adicione um capacitor grande (1000–2200 µF) aos terminais de alimentação externa; use 5 V separados para Pi (Pi alimentado via USB-C ou micro-USB, não da fonte servo, a menos que a fonte seja muito estável).

08Recomendações práticas (conclusão baseada no EEAT)

Para qualquer projeto com mais de 3 servos, use sempre um PCA9685 (ou driver PWM de 16 canais equivalente).Isso elimina o tremor de tempo e protege seu Raspberry Pi.

Invista em uma fonte de alimentação externa adequada de 5V– calcule a corrente como (0,5 A por servo) × número de servos + margem de 20%.

Crie um terreno comumentre o Pi, a placa do driver e a fonte externa – esta é a causa mais negligenciada de falhas.

Comece com um teste simples– controle apenas um servo através do driver e adicione mais um por um.

Use o código fornecido como linha de basee ajuste ângulos e atrasos de acordo com seu projeto mecânico.

Conclusão principal: Controlar vários servos com um Raspberry Pi não envolve conexões GPIO diretas. Trata-se de delegar a geração PWM a um driver dedicado e fornecer energia independente e estável. Seguindo as regras de fiação e alimentação acima, você pode controlar com segurança até 16 servos para braços robóticos, hexápodes, gimbals de câmera ou qualquer projeto multiservo. Teste primeiro sua configuração de energia e depois aumente – essa abordagem foi comprovada em centenas de construções educacionais e de hobby.

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
+86 0769 8399 3238
 
kpowerMap