sexta-feira, 18 de outubro de 2013

Servo motor!

Servos, servos, servos. da pra fazer muitas coisas com eles!. desde abrir uma porta; fazer uma impressora com canetas (em breve vou melhorar a minha e postar aqui!) até direcionar helicopteros, mas agora vem a duvida, o que diabos tem dentro daquela caixinha preta?

Um circuito converte o sinal que vem do microcontrolador para um sinal elétrico mais potente, que liga o motor para o lado desejado, e através do potenciômetro, que esta ligado as engrenagens também, o CI para o motor no angulo que recebeu do microcontrolador.  um circuito relativamente simples, mas muito eficaz!

 Video demonstrando ele por dentro, e funcionamento!


Agora vamos faze-lo funcionar!

Se voce ainda não tem um, muitos helicopteros (aeromodelos) possuem, voce pode desmontar um, ou comprar pela internet, os valores varias de poucos reais, até milhares de dolares (servos realmente profissionais). o que eu vou usar, custa em média $7,00.

Servo Esky EK2 0508 (aeromodelos)


O programa dele pode ser encontrado facilmente na biblioteca do arduino, através dos exemplos, porém quero fazer algo a mais, ver o angulo em que ele esta na tela, para isso, vou usar um exemplo padrao, e mandar imprimir o valor pela porta serial.

Para isso, usaremos o seguinte programa (adaptado a partir do modelo de exemplo do própio arduino)

//-----------------------------------------------------------------------
// Exemplo criado por Italo C J Soares, http://ardumais.blogspot.com/

#include <Servo.h>  // ativa a biblioteca de controle do servo

Servo servoporta9;  // Cria um nome para o servo
int pos = 0;    // Cria uma variavel int para armazenar a posicao do servo
int del = 30; // Cria uma variavel para armazenar o tempo do delay
void setup()
{
  servoporta9.attach(9);  // define o pino em que o servo esta
  Serial.begin(9600); //Ativa a porta serial
}
void loop()
{
  for(pos = 0; pos < 180; pos += 1)  // o servo vai o angulo 0º até 180
  {                                
    servoporta9.write(pos);          
    delay(del);                    
    Serial.print("Valor do servo:"); //Imprime na tela a palavra "Valor do servo:"
    Serial.println(pos);  //Imprime na tela o valor do angulo, e pula a linha
  }
  for(pos = 180; pos>=1; pos-=1)     // o servo vai o angulo 180º até 0º
  {                              
    servoporta9.write(pos);        
    delay(del);
    Serial.print("Valor do servo:");
    Serial.println(pos);
  }
}
//--------------------------------------------------------------------
Vamos liga-lo!, para isso, usem o seguinte esquema!

Fonte: Thunderwiring.wordpress

Programa rodando:

Nenhum comentário:

Postar um comentário