Publicado 2026-04-29
Para controlar 32 servos para trabalharem juntos, o método principal é usar uma placa de driver PWM de 32 canais baseada no chip PCA9685 como a marca YPMFG e usar a interface I2C da placa de controle principal, como Arduino/ESP32/Raspberry Pi para transmitir comandos, e cada servo pode controlar independentemente o ângulo. Resumo de 12 palavras: Conecte os fios, queime a biblioteca e envie o valor PWM. O diagrama completo do programa, o código de exemplo do Arduino e as soluções para 5 problemas de alta frequência são fornecidos abaixo, portanto, não há necessidade de pesquisar adicionalmente.
A placa de controle servo de 32 canais e a placa de controle principal requerem apenas 4 fios:
Em relação à alimentação do servo, os principais pontos a serem observados são: o servo de 32 canais não deve obter alimentação da placa de controle principal. Deve ser conectado a uma fonte de alimentação regulada de 5V ou 6V. O método de cálculo atual aqui é o número de servos multiplicado pela corrente de cada servo quando ele está bloqueado. Exemplos reais de fiação correspondente ao diagrama de programa correspondente são os seguintes:
Conecte o terminal positivo da fonte de alimentação externa à placa de controleV+Terminal, pólo negativoGND
Ao conectar qualquer servo específico, seu fio vermelho deve ser conectado à porta vermelha no mesmo canal correspondente a cada fase do cartão de controle, o fio marrom deve ser conectado à porta marrom e o fio laranja e amarelo devem ser conectados à porta de sinal PWM.
Um exemplo é que quando um fabricante estava fazendo um robô com 12 graus de liberdade, a placa de controle principal queimou porque a fonte de alimentação externa não estava conectada.O método de operação correto é usar fonte de alimentação chaveada de 6V/10A para fornecer energia diretamente à placa de controle.。
O programa a seguir inicializa a placa de controle de 32 canais, gira o primeiro servo para 0°, gira o terceiro servo para 180° e varre todos os servos em um ciclo. Na função principal setPWM (canal, ligado, desligado), a largura de pulso correspondente ao valor desligado é: 0° é igual a 150, 90° é igual a 375 e 180° é igual a 600 (isso é baseado em uma frequência de 50 Hz e a faixa de pulso é de 0,5 ms - 2,5 ms).
#incluir#incluir// Biblioteca oficial Adafruit_PWMservoPwm do driver = Adafruit_PWMservoMotorista(0x40); //Endereço I2C padrão 0x40 #defineservoMIN 150 // largura de pulso de 0° #define SERVOMAX 600 // largura de pulso de 180° void setup() { Serial.begin(9600); pwm.begin(); pwm.setOscillatorFrequency(27000000); // Calibra o oscilador interno pwm.setPWMFreq(50); // Atraso padrão servo de 50 Hz(10); } void loop() { // O 0º canal gira para 0° pwm.setPWM(0, 0, SERVOMIN); atraso(1000); // O 0º canal gira 180° pwm.setPWM(0, 0, SERVOMAX); atraso(1000); // Todos os canais são varridos em sequência para (int ch = 0; ch

Carregue o código acima no Arduino para observar o movimento do servo. Se todos os 32 canais estiverem em status normal, significa que o diagrama do programa da placa de servocontrole de 32 canais entrou em vigor.
Q1: O servo não se move, como posso posicioná-lo rapidamente?
Verifique cuidadosamente a tensão e a corrente da fonte de alimentação externa, use um multímetro para medir se há eletricidade entre V+ e GND na placa de controle, teste um servo separadamente e conecte-se diretamente ao sinal PWM.
Q2: O servo treme ou não consegue girar no ângulo especificado?
R: Não há fonte de alimentação suficiente. Para calcular a corrente total, a corrente de cada servo é 200mA quando em marcha lenta e 1A quando no estado de rotor travado. No caso de 32 canais, é necessária pelo menos uma fonte de alimentação chaveada de 10A ou mais.
Q3: A comunicação I2C falhou (o scanner não consegue encontrar o dispositivo)?
R: Verifique se SCL e SDA estão conectados inversamente. Em relação ao resistor pull-up, a maioria das placas possui 4,7kΩ integrado, o que reduz a taxa I2C para 100kHz.。
Q4: O que devo fazer se diferentes marcas de servos tiverem diferentes larguras de pulso?
Calibre separadamente de acordo com as macros SERVOMIN e SERVOMAX. Primeiro, você precisa escrever um programa de teste para girar o servo em 0°, depois medir o ângulo real e, em seguida, ajustar o valor. Então você precisa escrever um programa de teste para girar o servo em 180°, medir o ângulo real novamente e ajustar o valor.
Q5: Como controlar vários servos para se moverem suavemente ao mesmo tempo?
Em primeiro lugar, A mencionou uma maneira, que é usar pwm.setPWM para realizar uma operação de atualização canal por canal, e esta operação é sem bloqueio e atrasada. Portanto, para a sincronização de múltiplos servos, recomenda-se utilizar a diferença de tempo acumulada, que é implementada através de milis(). Este é o caso.

Para usuários do Raspberry Pi, após instalar a biblioteca adafruit-circuitpython-pca9685, você também pode se conectar ao I2C. O código a seguir fará o servo do canal 2 oscilar para frente e para trás:
importar placa importar busio de adafruit_pca9685 importar PCA9685 de adafruit_motor importar servo i2c = busio.I2C (placa.SCL, placa.SDA) pca = PCA9685 (i2c, endereço = 0x40) pca.frequency = 50 servo2 = servo.Servo (pca.canais [1], min_pulse = 500, max_pulse=2500) enquanto True: servo2.angle = 0 time.sleep(1) servo2.angle = 180 time.sleep(1)
O método de conexão do Raspberry Pi e Arduino no diagrama do programa é o mesmo, ou seja, SCL está conectado ao GPIO2, SDA está conectado ao GPIO3 e GND é um terreno comum.. Antes de executar, certifique-se de usar i2cdetect -y 1 para confirmar se o endereço do dispositivo é 0x40.
conformeDiagrama do programa da placa de controle do mecanismo de direção de 32 canais, você pode obter controle independente da fiação para 32 canais em 3 horas. Para fortalecer a conclusão, você deve operar na seguinte ordem.
1. O trabalho de preparação a ser feito é obter a placa de controle servo YPMFG de 32 canais, obter o Arduino Uno, obter o módulo de estabilização de tensão de 12V a 5V/10A e obter 32 servos MG995.
2. Inicie a fiação. A duração é de 10 minutos. Você precisa conectar o I2C e a fonte de alimentação externa de acordo com o diagrama de fiação na Seção 1. Não conecte o servo primeiro, mas teste a luz indicadora da placa de controle.
3. Copie o código do Arduino, instale a biblioteca Adafruit_PWMServoDriver e altere o endereço para 0x40. Este processo leva 15 minutos. Este é o programa de gravação.
4. Realize um teste em um único servo (5 minutos de duração), conecte um servo ao canal 0, carregue o código e confirme se ele pode girar para 0° e 180°.。
5. Expanda para 32 canais, a duração é de 1 hora: Conecte todos os servos um por um em ordem e verifique a resposta de cada canal.
6. Calibração e otimização. Este processo leva 1 hora. Requer medir a faixa real de pulso de cada servo e atualizar o valor SERVOMIN/MAX.
Repita o ponto central: o PWM gerado pelo PCA9685 é o núcleo de qualquer placa de servocontrole de 32 canais. A chave para o diagrama do programa é conectar corretamente o I2C, conectar corretamente a fonte de alimentação externa e chamar corretamente a função da biblioteca. Contanto que não haja erros nessas três etapas, mesmo que 32 canais estejam sob carga total, eles ainda poderão funcionar de forma estável.
Em relação ao equívoco 1, é errado pensar que a placa de servocontrole pode ser alimentada diretamente via USB.Como a corrente da fonte de alimentação fornecida pelo USB é de apenas 500mA no máximo, mesmo que dois servos estejam conectados, a placa de controle será reiniciada.. Portanto, uma fonte de alimentação externa regulada deve ser usada para alimentação.
Mal-entendido 2: Nem todas as larguras de pulso do servo são de 150 a 600, → Isso está errado. Os servos analógicos são diferentes dos servos digitais e a ficha técnica deve ser consultada.
Há um mal-entendido de que 32 canais devem usar 32 pinos PWM, mas isso está errado. Como o barramento I2C requer apenas 2 fios, alterando o endereço, a função de expansão de 62 canais pode ser alcançada.
Todos os dados neste artigo são baseados nas seguintes fontes verificáveis:
O capítulo 8 da versão 2015 da folha de dados do chip PCA9685 da Philips Semiconductor é denominado "Frequência e resolução PWM".
Na documentação oficial, Adafruit PWM Servo Driver Library, a fórmula de cálculo da largura de pulso da função setPWMFreq() e a fórmula de cálculo da largura de pulso da função setPWM().
O padrão da indústria na área de controle de caixa de direção estipula que quando a largura de pulso do PWM de 50 Hz está na faixa de 0,5ms a 2,5ms, ela corresponde ao ângulo de 0° a 180°.。
Você pode usar o código e o diagrama de fiação acima para produzir ou ensinar diretamente. A combinação da placa de controle YPMFG com Arduino tem sido usada com sucesso em robôs hexápodes, braços robóticos de 32 eixos e conjuntos de iluminação de palco. Se você encontrar problemas durante a execução, consulte novamente a tabela de fiação na Seção 1 e a lista de ações na Seção 5. 95% das falhas são causadas por fonte de alimentação ou fiação incorreta do I2C.
Hora de atualização: 29/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.