Publicado 2026-04-22
Este guia fornece as especificações técnicas completas e o código de programação do Arduino para o MG946R.servomotor. Você aprenderá os parâmetros exatos do sinal PWM, requisitos de tensão, classificações de torque e exemplos de código passo a passo para controlar esteservoem seus projetos de robótica ou RC. Todos os dados são verificados em relação ao padrãoservoespecificações e testes do mundo real.
Tensão operacional: 4,8 V – 6,6 V (6,0 V recomendado para torque ideal)
Torque de parada: 10 kg·cm a 4,8V / 12 kg·cm a 6,0V
Velocidade operacional: 0,17 seg/60° a 4,8 V / 0,14 seg/60° a 6,0 V
Ângulo de Rotação: 180° (faixa de largura de pulso de 500–2500µs)
Largura da banda morta: 3µs
Tipo de engrenagem: Engrenagens metálicas (planetárias de 3 estágios)
Peso: 55g ± 5g
Dimensões: 40,7 mm × 19,7 mm × 42,9 mm
O MG946R é controlado por um sinal PWM padrão de 50 Hz (período = 20 ms). A posição é determinada pela alta largura de pulso:
Nota Crítica: A faixa de pulso real utilizável pode variar entre ±50µs devido às tolerâncias de fabricação. Sempre execute uma rotina de calibração antes da implantação.
Abaixo está um exemplo de código pronto para produção usado em milhares de projetos de robótica educacional e amadora. Este código evita atrasos de bloqueio e permite um controle suave do servo.
#incluirServomg946rServo; int servo Pin = 9; // Use o pino compatível com PWM (3,5,6,9,10,11 no Uno) void setup() { mg946rServo.attach(servoPin, 500, 2500); // Faixa de pulso explícita Serial.begin(9600); Serial.println("Teste do servo MG946R iniciado"); // Teste central - verifica a posição neutra mg946rServo.write(90); atraso(1000); } void loop() { // Varre de 0 a 180 graus for (int ângulo = 0; ângulo = 0; ângulo -= 5) { mg946rServo.write(ângulo); atraso(20); } atraso(1000); }
Para projetos que exigem temporização precisa ou múltiplos servos, use geração direta de pulso:
int servo Pin = 9; int largura de pulso = 1500; // microssegundos (1500 = 90°) void setup() { pinMode(servoPin, OUTPUT); Serial.begin(9600); } void loop() { // Gera sinal de 50 Hz digitalWrite(servoPin, HIGH); delayMicroseconds(pulseWidth); digitalWrite(servoPin, BAIXO); atraso (20 - (largura de pulso / 1000,0)); // Período de 20 ms // Exemplo: varredura alterando pulseWidth de 500 para 2500 }
Problema: O servo treme em certos ângulos e consome corrente excessiva.
Solução: Adicione um capacitor eletrolítico de 470µF–1000µF à alimentação e ao aterramento próximo ao servo. Use alimentação separada de 5V/6V (mínimo 2A para um servo, 5A para múltiplos).
Ajuste de código: Reduza a velocidade adicionando um atraso de 30 a 50 ms entre os comandos de gravação.
Problema: O servo não retorna ao centro exato após girar.
Solução: Problema de centralização mecânica – ajuste a estria da buzina do servo em um dente. No código, calibre o pulso central (normalmente 1520µs em vez de 1500µs).
Método de verificação: Anexe um ponteiro e marque a posição central verdadeira em 1500 µs e, em seguida, ajuste a largura do pulso até que o centro mecânico corresponda.
Problema: O servo superaquece ao segurar uma carga útil de 200g a 45°.
Solução: Reduza a tensão para 5,0 V (o torque diminui, mas a corrente cai significativamente). Adicione resfriamento passivo (pequeno dissipador de calor em caixa de metal). O torque máximo de retenção contínuo não deve exceder 6 kg·cm para evitar desligamento térmico.
Nunca alimente diretamente do pino 5V do Arduino– a corrente de bloqueio (1,2A típica) irá reiniciar o seu microcontrolador. Sempre use uma fonte de alimentação servo separada com aterramento comum ao Arduino.
1. Sempre calibre primeiro: Execute um esboço simples que varra de 500 µs a 2.500 µs em incrementos de 10 µs enquanto observa o movimento real da buzina. Registre os valores µs para 0° e 180° – estes são seus verdadeiros limites.
2. Use energia separada desde o primeiro dia: Conecte o servo VCC a uma fonte de 6V 3A (ou 4 baterias AA em série). Conecte o servo GND ao Arduino GND. Fio de sinal para pino PWM.
3. Adicione um capacitor de baixa ESR de 1000 µFatravés dos terminais de potência do servo – isso evita quedas de tensão durante mudanças repentinas de direção.
4. Para projetos multi-servo: escalone seus comandos de movimento em 20-50 ms para evitar consumos simultâneos de pico de corrente.
5. Implementar limites de software: Mesmo que o servo suporte 180°, restrinja seu código a 170° (por exemplo, 550µs a 2450µs) para proteger o potenciômetro interno do desgaste mecânico.
O MG946R requer um sinal PWM de período de 20 ms (50 Hz) com larguras de pulso entre 500 µs e 2500 µs para rotação completa de 180°.
A operação confiável exige uma fonte de alimentação de 6 V capaz de fornecer pelo menos 2 A para um único servo.
Sempre calibre a faixa exata de pulso para sua unidade específica antes da montagem final.
Use a biblioteca Arduino Servo com parâmetros mínimo/máximo explícitos ou geração direta de pulso para aplicações avançadas.
Etapa de ação final: Antes de integrar em sua construção final, conecte o servo a um Arduino com alimentação de 6V 3A, carregue o esboço de calibração fornecido acima e registre os valores reais de pulso de 0° e 180° de sua unidade. Em seguida, modifique seu código de produção para usar esses valores calibrados para uma operação precisa e confiável.
Hora de atualização:2026-04-22
Entre em contato com o especialista de produtos da Kpower para recomendar um motor ou caixa de engrenagens adequado para o seu produto.