sábado, 21 de junho de 2014

Arduino + Servo + Fonte Externa

Faz cerca de um mês que estou lidando com o Arduino. Adquiri um adquiri um Mega 2560 e, desde então tenho realizado algumas experiências. Hoje completei uma que acho digna de colocar nesse blog, pois poderá ajudar outras pessoas que estejam iniciando. Trata-se de um controlador de servo motor que usa um Arduino e uma fonte externa.

Por que usar uma fonte externa?

Alguns projetos utilizam servos que estão acima da capacidade dos pinos de força do Arduino e este fica resetando. Pode ocorrer também de seu projeto precisar de mais de um servo e o arduino não conseguirá gerar energia a todos.

Dessa forma, muitas vezes existe a necessidade de usar fontes externas para a alimentação do(s) servo(s).

Bom. Antes de seguirmos adiante, um aviso importante:

ATENÇÃO: Esse projeto não tem qualquer garantia de funcionar corretamente. Lembre-se que qualquer erro poderá levar a queimar os componentes usados, e até mesmo a placa Arduino. Eu faço meus projetos correndo esse risco. O que mostro aqui, é o que eu fiz e deu certo comigo, mas não posso dar garantias que funcionará com você.

No meu caso, comprei um servo que é potente demais para ser controlado sem fonte externa. É um servo um pouco maior que os comuns que se usam para robótica e o arduino ficava resetando direto. Ao usar a fonte, o sistema funcionou perfeitamente.

O servo usado foi um motorsat, normalmente usado em antenas parabólicas para alterar a polarização. Segundo o site, as especificações desse motor são:

Frequência de sinal: 60HZ(20ms)
Controle de pulso: 0.8 to 2.2ms
Voltagem: DC 5.0v
Ângulo de operação: 180 +10
Corrente: 180 to 200 mA
Velocidade: 0.3 (60/sec.)
Saída máxima de torque: 2.2 to 2.8 kg/cm
Corrente máxima: 580 to 600ma
Funciona com PWM, (modulação por largura de pulso).
Fio vermelho: alimentação 5 v DC.
Fio branco: Pulso
Fio preto: GND terra
Rotação do servo= 40 Rpm.
PESO: 500 Gramas


Dica: Um servo adequado a pequenos projetos em robótica é menor e pode ser alimentado direto pelo Arduino. Esse que utilizei não é o ideal, mas foi o que pude encontrar no mercado local em minha cidade.

Segue abaixo figura mostrando as ligações realizadas:




Nota: Essa figura foi feita com o Fritzing.

Basicamente:

  1. Ligamos os pinos GND e 5V (nesse caso, 4,8V) da fonte externa no servo;
  2. O GND (ground) do Arquino está interligado ao GND da fonte. Isso é necessário para permitir o controle do servo;
  3. Ligamos o pino 9 do Arduino no cabo de controle do motor. É importante usar um pino que tenha capacidade PWM (Pulse Wave Modulation).

Segue abaixo o código utilizado:

#include <Servo.h>

Servo servo1;
int pos = 0;

void setup() {
  servo1.attach (9);
}

void loop() {
  for (pos=0; pos<180; pos++) {
    servo1.write (pos);
    delay(15);
  }
  for (pos=180; pos>=1; pos--) {
    servo1.write (pos);
    delay(15);
  }
}


Esse código implementa apenas uma rotina de Sweep (gira o eixo do servo em 180 graus e retorna 180 graus, indefinidamente). O mesmo foi descaradamente copiado de: http://arduino.cc/en/Tutorial/Sweep

Ligue a fonte externa e carregue o código de teste no arduino. O servo começará a girar 180 graus, em ida e volta.

Os servo-motores são um dos componentes essenciais a inúmeros projetos em robótica. O que foi exposto nesse texto é uma forma extremamente simples de iniciar os estudos com servo-motores e Arduino.

Bons estudos :)

2 comentários:

  1. Bruno, uma duvida, você ligou o positivo das baterias no negativo do Arduíno, esta correto? Pode ser uma inexperiência minha, por isso a pergunta. Abs,

    ResponderExcluir
  2. Nossa cara ajudou demais, ninguem nessa internet inteira soube explicar tao bem como você, o desenho esta errado pois o negativo da fonte tem que ir no GND do arduino e o vermelho da fonte no 5v do arduino e entre eles deve estar o negativo e positivo dos componentes que será abastecidos pela energia extra vaaleu deeeemaiis

    ResponderExcluir