Como Utilizar O Servo Motor Com O Arduino
by joana070 in Circuits > Arduino
642 Views, 0 Favorites, 0 Comments
Como Utilizar O Servo Motor Com O Arduino
Para que serve o Micro Servo Motor?
É bastante utilizado para controlar a posição de objetos, como pernas, braços ou mãos de robôs, movendo os sensores com alta precisão e mobilidade. Eles recebem um sinal de controle; que verifica a posição atual para controlar o seu movimento indo para a posição desejada com velocidade monitorada
Especificações:
O servo em questão tem um ângulo de rotação máxima de 180º graus (90º em cada sentido), no entanto, há outros motores que vão até 360ª graus. No geral, os servos motores são melhores para aplicações e alto torque. Geralmente é muito comum a utilização de um codificador rotativo (rotary encoder) para acompanhar a posição do eixo do motor, especialmente se ele precisar fazer movimentos precisos, no entanto, podem usar com outros componentes/ formas de controlo. Eles leem a diferença entre a posição atual do codificador e a posição em que foram comandados e ajustam a corrente necessária para mover para a posição correta.
Lista de itens necessários:
- 1 Microcontrolador Arduino UNO REV3 - Arduino;
- 1 Servo motor SG90;
- 3 Cabos jumper macho-macho;
- 1 Cabo USB tipo B - “cabo de impressora”;
- Programa do arduino;
- Fita-cola
MONTAGEM DO CIRCUITO
Vamos agora realizar a montagem do nosso circuito. Para isso, basta conectar os componentes do projeto de acordo com a imagem acima.
O micro servo tem três fios a sair dele. Um deles é vermelho e irá para os +5V. O outro é preto ou castanho e irá para o GND. O terceiro, branco, amarelo ou laranja, será conectado ao pino digital 6 (ou a qualquer outro). Para conectar os fios é necessário acrescentar os três jumpers machos ao conectores fêmea presos ao motor.
É IMPORTANTE colar o servo motor fixado ao chão porque senão ele vai cair porque vai estar desequilibrado, neste caso, pode-se usar fita-cola.
PROPOSTA
Utilizar o Micro Servo Motor SG90 9g em conjunto com o Arduíno e girar o eixo do servo até 180º e em seguida retornar a 0º. Ao ligar o servo, o eixo irá retornar a 0º independente da posição em que ele se encontra.
CÓDIGO DO PROJET0
#include <Servo.h> //inclui a biblioteca necessária int pinoServo = 3; //pino digital PWM utilizado pelo servo Servo s; //objeto do tipo servoint pos; //posição do servo void setup (){ s.attach(pinoServo); //associação do pino digital ao objeto do tipo servo s.write(0); //inicia o motor na posição 0º}void loop(){ for(pos = 0; pos < 180; pos++){ //vai de 0 graus a 180 graus, incrementa "pos" s.write(pos); //escreve o valor da posição que o servo deve girar delay(15); //intervalo de 15 milissegundos } for(pos = 180; pos >= 0; pos--){ //vai de 180 graus a 0 graus, decrementa "pos" s.write(pos); //escreve o valor da posição que o servo deve girar delay(15); //intervalo de 15 milissegundos }}
EXPLICAÇÃO
Biblioteca Servo.h
A diretiva #include é usada para incluir bibliotecas externas ao seu sketch. Isso dá acesso a um grande número de bibliotecas padrão da linguagem C, e também bibliotecas escritas especialmente para a linguagem Arduino. É possível aceder a ela digitando o código ou então no programa arduino ir a sketch > incluir biblioteca > servo.
Ela implementa as funcionalidades de um servomotor tornando sua utilização MUITO MAIS simples.
Declarar um servo motor
Assim, ao utilizar essa biblioteca trataremos cada servomotor como um objeto, dessa forma precisamos declará-lo no início do código.
Servo s; //objeto do tipo servo
ou
Servo servoAutocore; //cria um objeto com nome servoAutocore (podemos colocar qualquer nome)
Depois de declarado, sempre que quisermos mexer em alguma função desse servo, devemos usar o nome da função precedida do nome do servo e um ponto.
s.exempo(); //chama a função exemplo() para o objeto s
ou
servoAutocore.exemplo(); //chama a função exemplo() para o objeto servoAutocore
Declarar uma porta de controle do servo motor
Você poderá declarar quantos servos for usar, levando em conta a limitação física de sua placa Arduino como já falei nas dicas lá em cima e além disso, cada servo pode ter qualquer nome, mas é aconselhável que se use nomes intuitivos para facilitar o entendimento do código. Declaramos os servos? É preciso agora definir em que porta está conectado o fio de controle de cada servo, para isso usamos a função attach(pino).
s.attach(pinoServo); //associação do pino digital ao objeto do tipo servo
ou
servoAutocore.attach(6); // associa o servomotor (físico), conectado no pino 6, ao objeto servoAutocore
Controlando a Posição do servo motor
Para poder realizar o seu controle de giro, utilizamos a função write(angulo) a qual define em um servomotor padrão o ângulo em graus na qual ele deve se posicionar.
s.write(pos); //escreve o valor da posição que o servo deve girar
ou
servoAutocore.write(angulo); //angulo: posição em graus para servos comuns
Obrigada por assistirem e boa sorte!