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




8. November 2008 at 10:05 am :
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 …
8. November 2008 at 11:24 am :
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.
24. December 2008 at 4:07 pm :
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?
3. January 2009 at 12:08 pm :
Joselio ,
De uma olhada no post sobre o Tatuino :
http://blogdoje.com.br/2008/05/12/tatuino-o-primeiro-arduino-industrializado-nacional/
Boa sorte !
7. January 2009 at 10:20 am :
Olá Gostaria de saber se posso controlar esse tipo de servo com um radio controle?
Att
7. January 2009 at 7:17 pm :
É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. February 2009 at 11:11 pm :
Muito bacana esse post, vou salvar aqui. Comprei meu primeiro Arduino, ainda vai chegar, vou tentar justamente controlar um servo.
Abraços, valeu.
8. April 2009 at 11:29 am :
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…
22. April 2009 at 2:59 pm :
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
22. April 2009 at 3:38 pm :
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.
7. October 2009 at 4:52 pm :
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.
7. October 2009 at 5:03 pm :
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 !!!
9. October 2009 at 11:55 pm :
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
3. January 2010 at 9:30 pm :
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?
7. January 2010 at 12:50 pm :
Cristiano , sugiro procurar algum forum ou site especializado em receptores de tv por satelite.
Boa Sorte.