Publicado 2026-04-03
Controlando umservomotor com placa Arduino é uma das tarefas mais comuns e úteis em projetos eletrônicos. Este guia fornece um método claro, prático e verificado para conectar e programar umservousando o Arduino padrãoservobiblioteca. Você aprenderá a fiação exata, o código funcional e como solucionar problemas típicos – tudo com base em cenários do mundo real e na documentação oficial.
A maioria dos servomotores amadores (por exemplo, micro servos 9g ou servos de tamanho padrão como SG90, MG90S ou MG995) funcionam com qualquer placa Arduino (Uno, Nano, Mega, etc.). Para este guia, assumimos:
Uma placa Arduino (Uno é o exemplo mais comum)
Um servo padrão de 5V (faixa de torque comum: 1,8kg/cm a 13kg/cm)
Fios jumper (macho para fêmea para conexão direta)
Uma fonte de alimentação separada de 5V-6V (opcional, mas recomendada para servos maiores – explicada na Seção 4)
Não são necessários nomes de marcas específicos– as instruções se aplicam a todos os servos analógicos padrão que operam em um sinal PWM de 50 Hz (largura de pulso de 500 µs a 2500 µs).
Siga esta fiação exata para evitar danos ou comportamento errático.
Regra crítica:Nunca alimente um servo diretamente do pino de 5 V do Arduino se o servo consumir mais de 200 mA durante a operação. Para a maioria dos servos 9g, o Arduino 5V direto é seguro para teste. Para servos maiores (por exemplo, MG995), use uma fonte de alimentação externa de 5V-6V e conecte o aterramento do servo ao aterramento do Arduino (terra comum).
A biblioteca Arduino Servo está pré-instalada no IDE oficial. Este código move o servo de 0° a 180° e vice-versa, repetidamente.
#incluirServo meuServo; //cria o objeto servo int servoPin = 9; // pino de sinal conectado ao servo void setup() { myServo.attach(servoPin); // conecta o servo no pino 9 } void loop() { myServo.write(0); // passa para 0 graus delay(1000); // espere 1 segundo myServo.write(90); // move para 90 graus (centro) delay(1000); meuServo.write(180); // passa para 180 graus delay(1000); }
Para controlar o servo em um ângulo específico(por exemplo, 45°), basta usarmeuServo.write(45);. O intervalo válido é de 0 a 180.
Causa:Potência insuficiente. Um servo padrão 9g consome 200–300mA quando em movimento; um servo grande consome até 1A. O regulador de 5 V integrado do Arduino (máx. ~ 500 mA) não consegue lidar com isso.
Consertar:Use uma fonte de alimentação externa de 5V (por exemplo, 4 pilhas AA ou um adaptador 5V 2A). Conecte o positivo da fonte ao fio vermelho do servo, o aterramento da fonte ao Arduino GND e o aterramento do servo ao mesmo GND.
Causa:Pino de sinal não conectado corretamente ou número de pino errado.
![]()
Consertar:Verifique issomeuServo.attach(pino)usa um pino compatível com PWM. No Arduino Uno, os pinos 3,5,6,9,10,11 suportam PWM. Os pinos 9 e 10 são recomendados.
Causa:O servo é forçado contra uma parada mecânica ou a faixa de largura de pulso está incorreta para esse modelo de servo.
Consertar:Ajuste a largura de pulso mínima/máxima usandomyServo.attach(pino,mín,máx)onde min é padronizado como 544 µs (0°) e máximo como 2400 µs (180°). Alguns servos requerem 500–2500µs. Verifique a folha de dados do seu servo.
Para um controle preciso da velocidade, você pode gerar manualmente o sinal PWM. O servo espera um sinal de 50 Hz (período de 20 ms). Um pulso de 1ms = 0°, 1,5ms = 90°, 2ms = 180°. Este código varre suavemente:
int servo Pin = 9; largura de pulso interna = 1500; // microssegundos, inicia em 90° void setup() { pinMode(servoPin, OUTPUT); } void loop() { // varre de 1000µs a 2000µs (0° a 180°) for(pulseWidth = 1000; pulseWidth = 1000; pulseWidth -= 10) { digitalWrite(servoPin, HIGH); delayMicroseconds(pulseWidth); digitalWrite(servoPin, BAIXO); atraso(20 - largura de pulso/1000); } atraso(1000); }
1. Verificação de energia:Com apenas o servo conectado (sem código carregado), o servo deve permanecer parado e não aquecer.
2. Teste de sinal:Carregue o código padrão da Seção 3. Observe se o servo gira 0° → 90° → 180° → repita.
3. Teste de carga:Segure suavemente a buzina do servo enquanto ela se move. Deve produzir torque perceptível, mas não parar. Se parar, aumente a corrente da fonte de alimentação.
Fiação corretanão é negociável: sinal para pino PWM, alimentação para fonte adequada, terra comum.
Sempre use a biblioteca Servopela simplicidade e confiabilidade. Mude para o controle de pulso manual somente quando precisar aumentar a velocidade.
Nunca exceda a classificação de tensão do servo(normalmente 5V–6V). Tensão mais alta destruirá o circuito de controle interno.
Proteja seu Arduinonunca consumindo mais de 200mA de seu pino de 5V para um servo.
1. Construa o circuito básicoem uma placa de ensaio usando um servo 9g e um Arduino Uno. Use o código na Seção 3 para verificar o movimento.
2. Adicione um potenciômetropara controlar o ângulo: leia o valor analógico de um potenciômetro (pino A0), mapeie-o para 0–180 e, em seguida,meuServo.write(mappedValue).
3. Incorpore em seu projeto– aplicações comuns incluem braços robóticos, gimbals de câmera, mecanismos de direção e abridores automáticos de portas.
Seguindo este guia, você agora tem um método verificado e repetível para controlar qualquer servo padrão com um Arduino. Os mesmos princípios se aplicam a todas as placas compatíveis com Arduino. Sempre consulte a folha de dados do seu servo para limites exatos de largura de pulso e requisitos atuais.
Hora de atualização: 03/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.