Magos do Arduino

Servo Motor

Aprenda a utilizar Servo Motor com o Arduino

Magos do Arduino

Servo Motor

Servo motor é um motor com controle automático de posição, velocidade e torque, que utiliza realimentação para ajustar seu movimento.

Normalmente ele opera em voltagens de 4.8v-6v.

Normalmente gira entre 0° e 180°.

Pode mover para ângulos específicos com alta exatidão.

Contém motor, redutor (engrenagens), circuito de controle e sensor de posição (potenciômetro).

Ele é muito utilizado para movimentos de precisão como movimentação de braços robóticos, controle de câmeras.

Servo Motor

Neste projeto você criará um circuito que faz o uso de um Servo Motor com o Arduino.

Para a criação deste circuito serão necessários os seguintes componentes:

  • 1x Breadboard
  • 1x Arduino UNO
  • 1x Servo Motor
  • 1x Potenciômetro de 10k
  • Jumpers

Circuito Servo Motor

Para montar o circuito, visualize na imagem a seguir como conectar os componentes entre a placa Arduino e a breadboard.

Circuito Servo Motor

Código fonte para o circuito do Servo Motor

Uma vez criado o circuito, use o código fonte a seguir no Arduino IDE para fazer o upload dele na placa Arduino e assim ver o resultado do circuito em funcionamento.

/**
 * Código do curso Magos do Arduino para controlar um servo motor 
 * com o Arduino.
 * 
 * Controle de um servo motor com o Arduino. Um potenciômetro é utilizado 
 * para controlar a posição do servo motor (entre 0 e 180 graus).
 *
 * (c) Copyright KazaleIT
 * @kazaleitoficial no YouTube
 **/
#include <Servo.h>

#define PINO_POTENCIOMETRO A0
#define PINO_SERVO 9

// cria um objeto para controlar o servo motor
Servo servoMotor;

void setup() {
  // registra o pino onde está conectado o servo motor
  servoMotor.attach(PINO_SERVO);
}

void loop() {
  // obtém o valor corrente do potenciômetro (valor entre 0 e 1023)
  int valorPot = analogRead(PINO_POTENCIOMETRO);

  // mapeia o valor do potenciômetro para ser 
  // compatível com o servo (valor entre 0 e 180)
  int posicaoServo = map(valorPot, 0, 1023, 0, 180);

  // move o servo para a posição desejada
  servoMotor.write(posicaoServo);

  delay(15);
}