Publicado 2026-04-08
Este guia fornece uma solução prática e testada em campo para controlar até 20servoEstá usando simultaneamente um computador de placa única como o Raspberry Pi. Conectando diretamente mais de doisservos nos pinos GPIO causam quedas de tensão, conflitos de temporização PWM e danos à placa. O método confiável é usar um módulo driver PWM dedicado (por exemplo, PCA9685). Abaixo você encontrará a configuração exata do hardware, diagramas de fiação, cálculos de potência, código Python e etapas de solução de problemas - tudo baseado em projetos comuns de robótica e animatrônica do mundo real.
Limite atual: Cada pino GPIO fornece no máximo 16mA, enquanto um servo padrão consome 150–500mA quando em movimento. 20 servos exigiriam mais de 10A – muito além da capacidade do trilho de 3,3V/5V da placa.
Limite de hardware PWM: Raspberry Pi possui apenas dois canais PWM de hardware (GPIO 18 e 19). O software PWM em outros pinos introduz jitter e sobrecarga de CPU para 20 servos.
Colapso de tensão: Operar 20 servos do pino 5V da placa causará queda imediata de tensão, reiniciando o sistema.
Use umMódulo driver PWM baseado em I²C(PCA9685 de 16 canais é o padrão da indústria). Conecte dois desses módulos (cada um lida com até 16 servos) ou um módulo mais um multiplexador. Este guia usa duas placas PCA9685 (total de 32 canais, usando apenas 20).
1 computador de placa única (Raspberry Pi 3B+ ou mais recente)
2 placas de driver PWM de 12 bits e 16 canais PCA9685
20 servos padrão de 5 V (por exemplo, SG90, MG90S ou MG996R – escolha com base nas necessidades de torque)
1 fonte de alimentação externa de 5V DC – corrente calculada: 20 servos × 0,5A = 10A mínimo. Use umAlimentação regulada de 5V 10A–15A.
Capacitores: 2x 1000µF eletrolíticos (≥10V) para suavização de energia
Fios jumper (fêmea para fêmea para I²C, macho para fêmea para conexões servo)
Placas de ensaio ou blocos terminais para distribuição de energia
Passo 1 – Conexão I²C entre Raspberry Pi e primeiro PCA9685
Pi 3,3 V → VCC de PCA9685 (Nota: alguns módulos aceitam lógica de 5 V; verifique seu módulo. Para módulos lógicos de 5 V, use 3,3 V do Pi somente se o módulo for tolerante a 3,3 V. Mais seguro: conecte o VCC ao pino de 5 V do Pi somente se a folha de dados do módulo confirmar a tolerância de 5 V. A maioria das placas PCA9685 funcionam com lógica I²C de 3,3 V, mas precisam de 5 V para servo V + - consulte próximo passo.)
Fiação padrão correta (para 99% das placas PCA9685):
Pi 5V (pino 2 ou 4) → PCA9685 VCC (alimentação para a lógica do chip – sim, muitos funcionam com lógica de 5V)
Pi GND → PCA9685 GND
Pi SDA (GPIO 2) → PCA9685 SDA
Pi SCL (GPIO 3) → PCA9685 SCL
Passo 2 – Alimentação externa para servos
Fonte externa de 5V (10A+) positiva (+) → Terminal PCA9685 V+ (geralmente rotulado como “V+” ou “servo power”)
Alimentação externa GND → PCA9685 GND (deve compartilhar terreno comum com Pi – conecte Pi GND ao PCA9685 GND como já feito acima)
Coloque o capacitor de 1000 µF em V+ e GND próximo ao PCA9685 para absorver picos de EMF traseiro.
Passo 3 – Conectando servos
Vermelho de cada servo (alimentação) → trilho PCA9685 V+ (use um barramento de alimentação da placa de ensaio)
Servo marrom/preto (GND) → trilho GND PCA9685
Servo laranja/amarelo (sinal) → Pino de saída PWM PCA9685 (0 a 15 na primeira placa, 0 a 3 na segunda placa)
Passo 4 – Segundo PCA9685
Defina o endereço I²C da segunda placa: solde os jumpers de endereço. O endereço padrão do PCA9685 é 0x40. Para a segunda placa: jumper A0 de solda → o endereço passa a ser 0x41.
Conecte o SDA/SCL/GND/VCC da segunda placa em paralelo com a primeira placa (mesmo barramento I²C).
Conecte seu V+ à mesma fonte externa de 5V.
Habilite I²C no Pi:
sudo raspi-config # Opções de interface → I2C → Sim sudo reboot
Instale as bibliotecas necessárias:
sudo apt update sudo apt install python3-pip python3-smbus i2c-tools sudo pip3 instalar adafruit-circuitpython-pca9685
Verifique os dispositivos I²C:
sudo i2cdetect -y 1
Você deverá ver 0x40 e 0x41 (se a segunda placa estiver endereçada corretamente).
Crie um arquivoservo_control.py:
tempo de importação placa de importação importar busio de adafruit_pca9685 importar PCA9685 # Inicializar barramento I2C i2c = busio.I2C(board.SCL, board.SDA) # Primeiro PCA9685 no endereço 0x40 pca1 = PCA9685(i2c, endereço=0x40) pca1.frequency = 50 # 50Hz para servos padrão # Segundo PCA9685 no endereço 0x41 pca2 = PCA9685(i2c, address=0x41) pca2.frequency = 50 # Faixa de largura de pulso servo (típico de 500 a 2500 microssegundos) # Converter para ciclo de trabalho: duty = pulse_us / 2000065535 def angle_to_duty(ângulo, min_us=500, max_us=2500): pulso = min_us + (ângulo / 180,0)(max_us - min_us) return int((pulse / 20000.0) * 65535) # Controla qualquer servo por placa e canal def set_servo(board, channel, angle): if angle 180: angle = 180 board.channels[channel].duty_cycle = angle_to_duty(angle) # Exemplo: Mova todos os 20 servos para 90° servos = [(pca1, i) for i in range(16)] + [(pca2, i) for i in range(4)] # total 20 para placa, ch em servos: set_servo(board, ch, 90) time.sleep(0.01) # escalonar para reduzir o surto de corrente # Varre o servo na placa1 canal0 de 0 a 180 print("Varrendo servo na placa1 ch0") para ângulo na faixa(0, 181, 10): set_servo(pca1, 0, angle) time.sleep(0.05) # Libera todos os servos (para de enviar PWM) - importante para evitar jitter pca1.deinit() pca2.deinit()
Um caso real: Certa vez, um hobby conectou 10 servos diretamente a uma fonte de alimentação de 5V/3A. Durante o movimento simultâneo, a tensão caiu para 3,8 V, os servos pararam e o Raspberry Pi foi reinicializado. Solução:Use uma fonte regulada de 5V/15A(por exemplo, uma fonte de alimentação LED ou barramento de 5V da fonte de alimentação ATX do computador). Adicionargrandes capacitores(1000µF por 5-8 servos) perto de cada placa de driver.
Regra acionável: Calcule sua corrente simultânea máxima. Se todos os 20 servos se moverem ao mesmo tempo, assuma 10A. Por segurança, adicione margem de 30% →13A mínimo. Use fios 14AWG ou mais grossos para distribuição de energia.
Nem todos os servos têm o mesmo pulso mínimo/máximo. Valores comuns:
500 µs (0°) – 2500 µs (180°) para servos analógicos
600 µs (0°) – 2400 µs (180°) para muitos servos digitais
Para calibrar: Escreva um script de teste que varra de 300 a 2700 µs, encontre os limites mecânicos e atualizemenosemax_usna função acima.
Movimento escalonado: Não comande todos os servos para mudarem o ângulo exatamente no mesmo microssegundo. Adicionartempo.sono(0,005)entre cadaset_servochamar. Isso reduz a corrente de pico ao distribuir a carga.
Taxa de atualização: 50 Hz (período de 20 ms) é padrão. Não aumente a frequência acima de 100 Hz – a maioria dos servos superaquecerá.
Uso da CPU: O hardware PCA9685 gera PWM de forma independente. Seu script Python envia apenas comandos I²C sempre que você altera os ângulos. Para posições estáticas, o script pode sair – os servos mantêm a última posição enquanto a energia for aplicada.
1. Encomendar componentes– Duas placas PCA9685, 20 servos, fonte de alimentação 5V/15A, capacitores 1000µF.
2. Teste com um servo– Conecte um único servo ao primeiro PCA9685, execute o código de varredura.
3. Adicionar fonte de alimentação– Conecte 5V/15A externo ao trilho V+, verifique se o servo se move fortemente.
4. Escala para 5 servos– Adicione mais servos gradativamente, monitorando a temperatura dos fios da fonte de alimentação.
5. Adicionar segundo PCA9685– Defina o endereço para 0x41, conecte 4 servos, teste.
6. Teste completo de 20 servos– Execute o código fornecido movendo todos os servos para 90° e, em seguida, faça uma varredura lenta em todos os canais.
Você não pode controlar 20 servos diretamente de um GPIO do Raspberry Pi – use placas de driver PCA9685 PWM com uma fonte de alimentação dedicada de alta corrente de 5V.Este método é usado em milhares de animatrônicos reais, robôs hexápodes e projetos de automação. É confiável, escalável e bem documentado. Comece com um pequeno teste, verifique a estabilidade da energia e depois aumente. Seu sucesso depende de um aterramento adequado e de amperagem suficiente – ambos não são negociáveis.
Agora tome uma atitude: conecte um PCA9685 com um único servo e alimentação externa de 5V. Quando isso funcionar, adicione o resto. Você terá um sistema estável de 20 servos dentro de duas horas após a montagem.
Hora de atualização: 08/04/2026
Entre em contato com o especialista de produtos da Kpower para recomendar um motor ou caixa de engrenagens adequado para o seu produto.