Arduino - Servo Motor
Neste tutorial, vamos aprender a usar o servo motor com o Arduino. Em detalhes, vamos aprender:
- Como o servo motor funciona
- Como programar o Arduino para controlar o servo motor
- Como programar o Arduino para controlar a velocidade do servo motor
- Como fornecer energia extra para servo motores de alto torque.
Hardware Necessário
Or you can buy the following kits:
| 1 | × | DIYables STEM V3 Starter Kit (Arduino included) | |
| 1 | × | DIYables Sensor Kit (18 sensors/displays) |
Buy Note: For controlling multiple servo motors, use the PCA9685 16 Channel PWM Servo Driver Module to save MCU pins and simplify wiring.
Sobre o Servo Motor
O servo motor é um componente que pode girar seu braço (geralmente entre 0° e 180°). Ele é usado para controlar a posição angular de um objeto.
Pinagem
O servo motor usado neste exemplo tem três pinos:
- Pino VCC: (normalmente vermelho) deve ser conectado ao VCC (5V)
- Pino GND: (normalmente preto ou marrom) deve ser conectado ao GND (0V)
- Pino de sinal: (normalmente amarelo ou laranja) recebe o sinal de controle PWM de um pino do Arduino.

Como Funciona
Depois de conectar o pino VCC e o pino GND ao 5V e ao 0V, respectivamente, podemos controlar o servo motor gerando um sinal PWM adequado no pino de sinal.
O ângulo é determinado pela largura do sinal PWM.
O datasheet do servo motor nos fornece os seguintes parâmetros:
- Período do PWM (PERIOD)
- Largura mínima do PWM (WIDTH_MAX)
- Largura máxima do PWM (WIDTH_MIN)
Esses parâmetros já estão definidos na biblioteca Servo do Arduino. NÃO precisamos saber os valores dos parâmetros.
O ângulo é determinado da seguinte forma:
- Se a largura do PWM = WIDTH_MIN, o servo motor gira para 0°.
- Se a largura do PWM = WIDTH_MAX, o servo motor gira para 180°.
- Se a largura do PWM estiver entre WIDTH_MIN e WIDTH_MAX, o servo motor gira para um ângulo entre 0° e 180°, de forma proporcional.

Arduino - Servo Motor
Alguns pinos do Arduino podem ser programados para gerar sinal PWM. Podemos controlar o servo motor conectando o pino de sinal do servo motor a um pino do Arduino e programando esse pino para gerar PWM.
Graças à biblioteca Servo do Arduino, controlar o servo motor é muito fácil. NÃO precisamos nem saber como o servo motor funciona. Também NÃO precisamos saber como gerar o sinal PWM. Só precisamos aprender a usar a biblioteca.
Diagrama de Ligação
Você pode encontrar na internet diagramas de ligação que mostram o pino VCC do servo motor conectado diretamente ao pino 5V da placa Arduino, como mostrado abaixo. Embora isso possa funcionar, essa forma é fortemente desaconselhada, pois existe o risco de danificar a placa Arduino.

This image is created using Fritzing. Click to enlarge image
Em vez disso, para proteger sua placa Arduino, recomendamos fortemente usar uma fonte de alimentação externa para o servo motor. O diagrama de ligação abaixo mostra como conectar o servo motor a uma fonte de alimentação externa.

This image is created using Fritzing. Click to enlarge image
Certifique-se de conectar o GND da fonte de alimentação externa ao GND da placa Arduino. Não esqueça este passo importante para o funcionamento correto.
Como Programar o Servo Motor
- Inclua a biblioteca:
- Declare um objeto Servo:
Se você controlar mais de um servo motor, basta declarar mais objetos Servo:
- Defina o pino de controle do Arduino, que é conectado ao pino de sinal do servo motor. Por exemplo, o pino 9:
- Por fim, gire o servo motor até o ângulo desejado. Por exemplo, 90°:
Código Arduino
Passos Rápidos
- Conecte o Arduino ao PC usando o cabo USB
- Abra a Arduino IDE, selecione a placa e a porta corretas
- Copie o código acima e abra-o na Arduino IDE
- Clique no botão Upload na Arduino IDE para carregar o código no Arduino

- Veja o resultado: o servo motor gira devagar de 0 até 180° e depois gira devagar de volta de 180° até 0°
Explicação do Código
Leia a explicação linha por linha nos comentários do código!
Como Controlar a Velocidade do Servo Motor
Usando as funções map() e millis(), podemos controlar a velocidade do servo motor de forma suave, sem bloquear o restante do código
Vídeo
O vídeo de demonstração abaixo usa o código abaixo. Observe que o vídeo mostra o Arduino Uno R4, mas funciona da mesma forma no Arduino Uno R3:
Desafie-se
Use o servo motor para fazer um dos seguintes projetos:
- Controlar a posição de um servo motor usando um potenciômetro. Dica: Consulte Arduino - Potenciômetro.
- Abrir/fechar a lixeira automaticamente. Dica: Consulte Arduino - Sensor Ultrassônico.
Conhecimento Adicional
- A biblioteca Servo suporta até 12 motores no Arduino UNO e 48 no Arduino Mega.
- A energia do pino 5V do Arduino pode NÃO ser suficiente para o servo motor em um dos seguintes casos:
- Usar um servo motor de alto torque, que pode carregar um objeto pesado.
- Usar muitos servo motores.
- Não conecte o pino positivo da fonte de energia extra ao pino 5V do Arduino.
- É obrigatório conectar o pino negativo da fonte de energia extra ao pino GND do Arduino.
Nesses casos, podemos precisar fornecer uma fonte de energia extra para os servo motores.

This image is created using Fritzing. Click to enlarge image
Como podemos ver no diagrama acima, o pino VCC do servo motor NÃO é conectado ao pino 5V do Arduino. Ele é conectado ao pino positivo de uma fonte de energia extra.
Observe que: