sexta-feira, 7 de agosto de 2015

Controlando um servo motor com Arduino

Servos motores possuem um grande diferencial em relação a motores de passo e motores DC, enquanto com o primeiro você pode determinar a velocidade e precisão, por exemplo, determinando a quantidade de passos que o motor deve dar em um terminado tempo, no segundo somente é possível, sem auxilio de qualquer sensor, determinar a velocidade variando-se a tensão aplicada a ele.

Em um servo motor é possível determinar a posição, em graus, com excelente precisão. O servo motor verifica a posição atual e desloca-se para a posição desejada dependendo da atuação que se faz no sistema.

Servo motores podem ser adquiridos com facilidade hoje em dia e são muito empregados em modelismo.

Normalmente servos motores não fazem o giro completo, mantendo-se apenas em cerca de 180 graus, mas com excelente precisão de posicionamento.

Bom, vamos ao que interessa, como fazer um servo motor funcionar controlado por um Arduino? Precisaremos de:

01 servo motor, no meu caso um mini servo comprado na Tato Equipamentos Eletrônicos (www.tato.ind.br).




03 fios para ligar o servo motor ao Arduino
01 Arduino

Note que no meu servo as cores dos fios são preto, vermelho e branco. O fio vermelho é a alimentação (+5V) o preto é o terra (GND) e o branco o sinal (controle).

Ligue o fio vermelho ao pino 5V do Arduino:




Ligue o fio preto ao pino GND do Arduino:




Agora o fio branco ao pino digital 3 do Arduino:




Simples assim! Agora vamos ao código:

#include <Servo.h>
 
Servo motor;
void setup() 
{ 
 motor.attach(3);
} 
void loop() 
{ 
 motor.write(160); 
 delay(1000); 
 motor.write(16);
 delay(1000);
} 

Esse código é bastante simples e fácil de entender:

Primeiro importamos a biblioteca pré-existente no Arduino que provê os controles para servos motores em #include.

Com Servo motor; criamos a variável motor como sendo do tipo Servo, pré-definido na biblioteca Servo.h (na verdade é um objeto do tipo Servo, já que essa biblioteca na verdade é uma classe).

Com motor.attach(3); informamos que o cabo de sinal do servo motor estará ligado ao pino digital 3 do Arduino.

Em motor.write(160); dizemos ao motor para posicionar-se em 160 graus.

Depois disso aguardamos um segundo e posicionamos o motor na posição de 16 graus, esperamos mais um segundo e começamos tudo de novo.




Com o código abaixo fazemos com que o servo motor movimente-se por toda sua faixa de giro incrementando os graus de posicionamento e depois decrementando:

#include 
 
Servo motor;
void setup() 
{ 
 motor.attach(3);
} 
void loop() 
{ 
 int i;
 for(i=0;i<180;i++) {
 motor.write(i); 
 delay(10); 
 }
 delay(1000);
 for(i=180;i>0;i--) {
 motor.write(i); 
 delay(10); 
 }
 delay(1000);
} 




Com esses conhecimentos é possível colocar em prática muitas ideias! Como movimentar pequenos robos com rodas, braços mecânicos, garras robóticas, câmeras e o que mais a imaginação permitir.
← Postagem mais recente Postagem mais antiga → Página inicial

0 comentários:

Postar um comentário