Microcontroladores , Open Hardware , Open Software e Tecnologia em Geral
Blog do Je » Page 'Controlando Motor Servo de Parabolica com Arduino'

Controlando Motor Servo de Parabolica com Arduino

Um dos motores servos mais baratos encontrados no mercado é o “motorzinho azul de parabólica.”. Ele possui curso de 0 a 180 graus e é usado para movimentar o elemento receptor da uma antena parabólica .É facilmente encontrado, com preços entre R$15,00 e R$ 20,00 reais, em lojas de eletronica ou especializadas em sistemas de tv por satelite

Como é comum a todos os servos este motor possui três fios: preto para o terra , vermelho para a tensão de alimentação e branco ou azul para o sinal de controle . Este sinal de controle determina o ângulo de giro do motor através da  largura do  pulso enviado ao motor. O sinal de controle é facilmente gerado por um microcontrolador através de uma saida PWM e no caso do Arduino, podemos gerar este sinal através de uma aplicação  simule o pwm atraves de mudanças no estado do pino de saida  ou usar uma biblioteca já pronta e atualmente disponível no ambiente de desenvolvimento do Arduino versão 0012.

Para testar a biblioteca e o motor liguei o fio branco de controle do  motor servo  ao pino 10 do Arduino .

O programa de exemplo abaixo utiliza a porta serial emulada através da conexão USB para enviar um menu com as opções de angulo de giro do motor e aguarda o recebimento da opção através da porta serial. Ao receber uma opção válida , o programa faz o motor servo se posicionar de 0 a 180 graus de acordo com a opção que houver sido selecionada a partir do menu .

O programa é muito simples e merecem atenção as instruções servo.attach e servo.write . A função servo.attach função pode ser usada em sua forma mais simples que especifica apenas o pino no qual o servo está ligado e usados os valores defaut para o tempo mínimo e máximo do pulso ( 544 e 2400 microsegundos respectivamente) ou então pode ter também passados os este valores como parâmetros da função. O objetivo de passar estes valores é propiciar um ajuste fino para o motor servo que se está utilizando. No caso do motor servo de parabólica, eu utilizei os valores de x e y nos quais os motor se posicionou de forma mais precisa nos  referenciais de 0 e  180 graus . Pra fazer o servo girar para um determinado angulo é  utilizada a função nome_do_servo.write(angulo) como no exemplo abaixo.


Servo myservo ;
int led = 13 ;
int flag = 0 ;
int i ;
int char_in ; 

void setup()
{
  Serial.begin(9600) ;
  pinMode(led , OUTPUT) ;
  myservo.attach(10,880,2300) ;
  colocaMenu() ;

}
//
...
...
//
		case '1':
                        myservo.write(0) ;
                        Serial.println("Posicionado em 0 graus") ;
			break;

Este motor servo de parabólica não possui um torque muito elevado e é preciso avaliar o que se vai movimentar com ele já que todas as suas partes são em plástico. Um detalhe importante é que a peça abaixo ligada ao eixo do motor é projetada para utilização na antena parabólica e é necessário adaptar ou construir uma peça de plástico para um formato mais adequado a utilização final no seu projeto .

Este motor internamente possui uma trava mecânica e se for  enviado para ele um pulso maior que o máximo suportado, ele ficará batendo contra esta trava e poderá ser danificado .
Internamente o motorzinho possui um circuito de controle com um potenciómetro ligado ao eixo de movimentação,  que identifica se o eixo está no ângulo correto .

Existem diversos outros servos que podem ser utilizados principalmente os usados em aeromodelos. Estes servos estao disponiveis em diversos modelos e tamanhos com torques maiores e acabamentos em metal , proporcionando maior controle na movimentação e resistencia ao desgaste das peças , pas para começar a brincar e fazer algum projeto que não necessite de componentes com maior precisão , este motorzinho de parabólica é uma mão na roda .

Programa para teste do Servo :


/* ServoMotorByLib
*
* Coloca menu com opcoes para selecionar o angulo a ser comandado no servo motor
* Interface atraves da porta serial direta ou via USB
* Autor: Jeronimo Avelar Filho
* http://www.blogdoje.com.br
*/

#include <Servo.h>

Servo myservo ;
int led = 13 ;
int flag = 0 ;
int i ;
int char_in ;

void setup()
{
Serial.begin(9600) ;
pinMode(led , OUTPUT) ;
myservo.attach(10,880,2300) ;
colocaMenu() ;
}

void loop()
{
//piscaled() ;
if(Serial.available() > 0 ) {
char_in = Serial.read() ;
if(char_in != -1) {
Serial.println(char_in,BYTE) ;
piscaled() ;
switch (char_in) {
case '1':
myservo.write(0) ;
Serial.println("Posicionado em 0 graus") ;
break;
case '2':
Serial.println("Posicionado em 45 graus") ;
myservo.write(45) ;
break;
case '3':
Serial.println("Posicionado em 90 graus") ;
myservo.write(90) ;
break;
case '4':
Serial.println("Posicionado em 135 graus") ;
myservo.write(135) ;
break;
case '5':
Serial.println("Posicionado em 180 graus") ;
myservo.write(180) ;
break;
default :
Serial.println("Opcao Invalida") ;
break;
}
}

}
}

void colocaMenu() {
Serial.println("Teste de motor servo") ;
Serial.println("Selecione :") ;
Serial.println("1 - Posicionar em 0   graus") ;
Serial.println("2 - Posicionar em 45  graus") ;
Serial.println("3 - Posicionar em 90  graus") ;
Serial.println("4 - Posicionar em 135 graus") ;
Serial.println("5 - Posicionar em 180 graus") ;
Serial.println("Opcao ? ") ;
}

void piscaled() {
if( flag==0) {
digitalWrite(led,HIGH) ;
flag =1 ;
} else {
digitalWrite(led,LOW) ;
flag =0 ;
}
}

Atualização em 05/08/2009

No site “Robótica Simples” tem um modificação interessante que coloca parafusos no disquinho HORN do servo de parabólica. Vale a pena dar uma olhada em http://www.roboticasimples.com/artigos.php?acao=16

Posts relacionados:
Liberada Arduino IDE versão 0016
AVR Technical Library DVD
AvrFreaks

Gostou deste post ? Divulgue !
delicious digg google
stumbleupon technorati Yahoo!

15 commentarios to “Controlando Motor Servo de Parabolica com Arduino”

  1. Este arduíno e seus acessório parecem realmente fantásticos. O fato de ter encapsulamento DIP e o projeto de hardware aberto acaba colocando-o na frente do MSP430, que até então era uma das minhas preferências. Eu fico pensando o que faz um hobbista usar PIC …

  2. Marcelo,
    Esta é mais uma das “guerras santas” : PICs X AVRs . Defensores apaixonados de ambos os lados tentam convencer que o dele é o melhor. O próprio projeto do Arduino, foi inicialmente prototipado com PICs mas o custo , facilidade de uso , ferramentas livres criadas pela comunidade , ferramentas gratuitas do proprio fabricantes fizeram o ATMEGA8 ser o escolhido final para o projeto. Alem disso o projeto que é pai do Arduino , o Wiring, já usava o ATMEGA128 e já tinha muitas bibliotecas prontas facilitando o porte para o ATMEGA8.

  3. Olá! É a minha primeira vez aqui e verifiquei que você mostra muito sobre o Arduino. Você sabe me dizer se existem representantes para os módulos e o próprio Arduino no Brasil?

  4. Joselio ,
    De uma olhada no post sobre o Tatuino :
    http://blogdoje.com.br/2008/05/12/tatuino-o-primeiro-arduino-industrializado-nacional/

    Boa sorte !

  5. Olá Gostaria de saber se posso controlar esse tipo de servo com um radio controle?

    Att

  6. Éder , Imagino que voce esteja falando sobre radio-controle para aero-modelos na linha dos fabricados pela Futaba , infelizmente conheço muito pouco sobre o funcionamento para te orientar sobre a substituição . O funcionamento dos servos de parabólica é igual aos usados no radio-controle mas com certeza será necessário verificar, antes de ligar , se os servos tem as mesmas tensões de trabalho e consumo de corrente para alimentação e pulso de controle. Testar sem essa informação pode levar voce a “fritar” o radio-controle, que são muito mais caros que o servo de parabólica.
    Boa Sorte !!

  7. Muito bacana esse post, vou salvar aqui. Comprei meu primeiro Arduino, ainda vai chegar, vou tentar justamente controlar um servo.

    Abraços, valeu.

  8. EDER,

    Pode sim. Eu mesmo já o fiz.

    É só conectar os 3 fios do servo no receiver do rádio controle. Atenção apenas para a tensão do receiver, os mais modernos operam de 3 a 12V, mas o servo de parabólica é 5V.

    Esse servos de parabolica são uma bosta. No Ebay vc compra uns mini-servos com 1/5 do tamanho e custando 10 dolares o par… esses de parabolica são uns 20 a 30 reais aqui no brasil…

  9. Eu baixei o codigo fonte acima e compilei no programa Arduino 0015. Este seu programa ele parece abrir uma opção de prompt pra pessoa escolher qual lado vira-lo. Mas como faço para compilar este programa num .exe ou mesmo utilizar este programa para ele se comunicar com a interface ? valeu

  10. Rafael,
    Voce já tem o Tatuino ou Arduino ? O programa deve ser compilado e carregado no Tatuino para ser executado no Tatuino. O programa não é executado no PC.

  11. Ola Amigo, Sou novato com arduino e não tenho muita experiência nesse assunto antão talvez você possa tirar essa duvida quando faço a alimentação do arduino externamente o servo obedece ao comandos perfeita mente e o giro é suave e continuo até o ponto desejado mais ao fazer a alimentação via usb o movimento e feito com pausas ou seja parecendo que o servo esta travando (tanto para um servo de parabólica e um mg995) você sabe qual o problema e se tem solução pois quero usar a comunicação serial para controlar o servo e não consegui alimentá-lo externamente mantendo a conexão serial fico grato pela reposta se a mesma vier
    Parabéns pelo site ótimo post.

  12. Ronaldo.
    Acredito que seja devido a limitação de corrente fornecida pela USB que é de 500 miliamperes· O somatório da corrente consumida pelo Arduino e pelo servo acionado está chegando perto do limite. Em consequencia a tensão de alimentação diminui e provavelmente o Arduino está sendo resetado. Sugiro manter o Arduino alimentado pela USB e alimentar o servo com uma fonte de alimentação independente ou 4 pilhas de 1,5 Volts , sem esquecer de interligar os terras (gnd ou - )
    Boa Sorte !!!

  13. Puts era isso mesmo Muito Obrigado pela dica eu até ja tinha tentado alimentar o servo externamente e não tinha obtido resulta pos faltava interligar o gnd como vc disse hehe vivendo e aprendendo ainda bem que sempre podemos contar com pessoas como vc disposta a ajudar obrigado

  14. Olá!
    Tô procurando ajuda.

    Não consigo boa imagem da minha parabolica,já procurei a melhor posição para a antena e ainda assim tem canais que é só chovisco, o que pode ser?

  15. Cristiano , sugiro procurar algum forum ou site especializado em receptores de tv por satelite.
    Boa Sorte.

Deixe um comentario

XHTML - Voce pode usar:<a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>

Topo da página / Assinar para receber novos Posts (RSS)