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).
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
- 1 x Placa UNO SMD R3 Atmega328 compatível com Arduino UNO;
- 1 x Cabo USB;
- 1 x Servo motor 9g;
- Fios de jumper macho-macho.
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 pela saída de 5V do Arduino, porque é um servo 9G, que possui um consumo baixo. Porém, quando for necessário utilizar esse servo para movimentar algo, então a alimentação deverá ser externa. Ou seja, deve-se utilizar uma fonte externa de 5V com uma corrente mínima de 1A para alimentar o servo. Caso contrário, o Arduino pode ser danificado por não conseguir fornecer a corrente necessária para o funcionamento. Fique atento 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.
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!
Carol Correia Viana
Bacharel em Engenharia Elétrica com ênfase em Eletrônica, mestra em Engenharia Industrial e especialista em Docência com ênfase em Educação Inclusiva. Atua no setor de Desenvolvimento de Produtos na Casa da Robótica. Editora chefe e articulista no Blog da Robótica. Fanática por livros, Star Wars e projetos Maker.