fbpx

Como utilizar o servo motor com o Arduino

O servo motor é um atuador eletromecânico que apresenta movimento proporcional ao comando dado por um sinal de controle, que pode ser enviado pela placa Arduino. Em outras palavras, por meio do controle, o movimento do servo direciona-se a posição e velocidade pretendida.

O servo motor possui um eixo que se move em 180º e, em alguns modelos, 360º. Este tipo de motor é utilizado em várias aplicações quando se deseja movimentar algo de forma precisa e controlada, tendo como exemplo a movimentação de um braço robótico.

Um modelo de servo muito utilizado em projetos com Arduino é o micro servo motor 9g (Figura 1), por ser pequeno, leve e de alta potência de saída. Este servo pode girar aproximadamente 180 graus (90 em cada direção) e acompanha um cabo de três terminais referentes a alimentação (vermelho), terra (marrom) e controle (laranja).

Mostrar um Micro servo motor 9g. na prática
Figura 1 – Micro servo motor 9g

Ao utilizar o micro servo 9g é possível controlar seu giro e posição por meio dos comandos enviados pelo Arduino. Após o envio da instrução para que o servo altere sua posição, ele verifica sua posição atual e em seguida executa o comando girando até a posição indicada.

O servo motor é um componente muito utilizado em projetos em que se deseja movimentar um braço robótico, virar as rodas dianteiras, em pan tilt, entre outras aplicações. A proposta deste projeto é utilizar o servo motor em conjunto com a placa Arduino de modo que o eixo do servo gire até 180º e em seguida retorne à 0º.

Para tal, utilizaremos uma biblioteca específica para o servo motor: a “Servo.h”

MATERIAIS NECESSÁRIOS

ESQUEMÁTICO DE LIGAÇÃO DOS COMPONENTES

Inicialmente, certifique-se que a sua placa Arduino esteja desligada. Em seguida, monte o circuito da simulação abaixo utilizando o servo motor e os jumpers.

Ao montar seu circuito preste atenção nos seguintes pontos:

  • O pino laranja do servo motor é o pino de controle e deve ser conectado ao pino digital 9;
  • O pino do meio, em vermelho, é o pino de alimentação e deve ser conectado ao 5V*;
  • O pino marrom é o pino do terra e deve ser conectado na porta GND.

* Informação Importante sobre a alimentação do servo: Neste exemplo vamos alimentar o servo pelos 5V do arduino porque o servo não estará fazendo nenhum tipo de esforço e por ser o servo 9G que tem consumo baixo. A partir do momento em que é necessário utilizar esse servo para movimentar algo aí a alimentação deverá ser feita de forma externa, ou seja, pegar uma fonte 5V com corrente de no mínimo 1A para alimentação do servo. Caso contrário, o arduino pode queimar por não conseguir fornecer a corrente necessária de funcionamento. Atente-se a isso!

ELABORANDO O CÓDIGO

Após a montagem e verificação do circuito elétrico do projeto, vamos a programação. Este projeto visa comandar o servo motor de maneira que o eixo do servo gire até 180º e em seguida retorne à 0º.

Para isto, vamos utilizar a biblioteca “Servo.h” que implementa as funcionalidades de um servo motor tornando sua aplicação mais simples. Esta biblioteca já se encontra instalada no Arduino IDE e você pode encontra-la por meio do seguinte caminho na Toolbar: Sketch > Incluir biblioteca > Servo, conforme demonstra a Figura 2.

Print de como encontrar a biblioteca servo no arduino IDE
Figura 2 – Encontrar a biblioteca Servo.

Ao selecionar a opção da biblioteca servo, o comando #include <Servo.h> aparecerá no editor de texto.

No setup, vamos declarar a porta que está conectada ao fio de controle do servo, pra isso usamos a função attach(pino). Em nosso circuito elétrico, o pino de controle do servo encontra-se conectado ao pino 9 do Arduino.

No loop, vamos criar dois laços de repetição usando o comando for: um para mover a posição pos do servo motor do eixo de 0º a 180º e um segundo para fazer o processo inverso, ou seja, do 180º a 0°.

A cada repetição do loop, a condição é testada; se verdadeira, o bloco de comandos e o incremento ou decremento são executados. Quando a condição se torna falsa, o loop termina e o código segue as instruções externas.

Assim sendo, o Sketch deste projeto terá a seguinte estrutura:

/*
  ---        COMO UTILIZAR O SERVO MOTOR         ---
  ==================================================
  == BLOG DA ROBOTICA - www.blogdarobotica.com ==
  ==================================================
  Autora: Carol Correia Viana
  E-mail: contato@blogdarobotica.com
  Facebook: facebook.com/blogdarobotica
  Instagram:@blogdarobotica
  YouTube: youtube.com/user/blogdarobotica
  ==================================================
*/

#include <Servo.h>//Inclusão da biblioteca Servo
Servo servomotor;//Criando objeto do tipo Servo
int pos = 0;//Variável que armazena a posição do servo

void setup(){
  servomotor.attach(9);//Atribui o pino digital 9 ao objeto servomotor
}

void loop() {
  for(pos = 0; pos <= 180; pos += 1) {//para pos igual a 0, enquanto pos for menor que 180, incrementa 1 em pos
    servomotor.write(pos);// Comanda o servo para ir para o posição da variável pos
    delay(15);//Intervalo de 15 milissegundos
  }
  for(pos = 180; pos >= 0; pos -= 1){//Para pos igual a 180, enquanto por for maior ou igual a 0, decrementa 1 de pos
    servomotor.write(pos);//Comanda o servo para ir para o posição da variável pos
    delay(15);// Intervalo de 15 milissegundos
  }
}

Espero ter ajudado,

Obrigada a todos e em caso de dúvidas deixe seu comentário abaixo!

Att. Carol Correia Viana

Dúvidas? Deixe seu comentário

Esse site utiliza o Akismet para reduzir spam. Aprenda como seus dados de comentários são processados.