Introdução
Tal como tenho vindo a fazer nas últimas edições, vou continuar a mostrar algumas das capacidades do micro-controlador Arduino.
Nesta edição apresento um artigo que aborda a movimentação e controlo de servos através do Arduino, algo muito útil para quem quer abordar mais a parte física de um projecto de robótica e electrónica.
Material necessário
Para a implementar o exemplo que irei dar ao longo deste artigo é necessário utilizar o seguinte material:
- Arduino
- Ponte H-L293D
- Breadboard
- Jack DC
- Cablagem de conexão
Esquema Eléctrico
A implementação e controlo de um servo usando Arduino já envolve um pouco mais de electrónica do que os exemplos mostrados nas edições anteriores, mas ainda assim é possível de ser realizado por pessoas sem grande experiência em electrónica e programação.
O exemplo que irei apresentar foi baseado no seguinte esquema eléctrico que eu elaborei para a conexão e controlo de dois motores servo ao Arduino de modo a conseguir obter movimento numa base do tipo Polulu RP5 Tracked Chassis.
O que é uma Ponte H–L293D?
Uma ponte H–L293D é um circuito integrado especialmente desenhado para facilitar a utilização de servos DC.
Olhando para o esquema acima podemos facilmente explicar o funcionamento de uma ponte H-L293D. Basicamente o que acontece é que quando queremos que o servo rode para um dos lados fechamos o circuito T1 e T2, fluindo então uma corrente de 9V a 12V pelo motor até ao GND, sendo que a reversão do servo é feita da mesma forma, mas agora fechando o circuito em T4 e T5.
A ponte H–L293D possui dois esquemas destes, um de cada lado do circuito integrado, o que permite a utilização de dois servos em simultâneo.
Como podem ver no esquema eléctrico que desenhei, o circuito eléctrico é igual para os dois servos, ou seja com a ponte H–L293D ao centro a comandar e a receber a informação do Arduino e a distribuí-la correctamente para os servos.
A energia necessária é proveniente de uma bateria de 9.2V que entra pela entrada Jack DC do Arduino, e deve ser sempre enviada pelo Jack DC devido a este ter alguns sistemas de protecção contra picos de corrente que em caso de sobrecarga poderão proteger o Arduino de problemas.
Arduino e a sua Programação
Após a implementação do esquema eléctrico é necessário programar a parte lógica para que possa existir informação a ser enviada para a ponte H-L293D e respectivamente para os servos.
Neste artigo irei apenas abordar uma pré-programação do Arduino de modo a que o movimento seja autónomo, sem qualquer influência do utilizador, mas no próximo artigo pegarei novamente neste exemplo e mostrarei como controlar os servos utilizando o teclado do computador como método de input.
O código que usei para a programação do Arduino foi o seguinte:
//Definição dos Pinos de Input do Arduino
int motorPin1 = 4;
int motorPin2 = 5;
int motorPin3 = 10;
int motorPin4 = 11;
int delayTime = 500;
void setup()
{
pinMode(motorPin1, OUTPUT);
pinMode(motorPin2, OUTPUT);
pinMode(motorPin3, OUTPUT);
pinMode(motorPin4, OUTPUT);
}
void loop()
{
//Aplicação do Código a uma sucessão de movimentos
frente();
delay(1000);
direita();
delay(1000);
esquerda();
delay(1000);
tras();
delay(1000);
esquerda();
delay(1000);
direita();
delay(1000);
parado();
delay(1500);
}
//Função de Movimento para a Frente
void frente()
{
analogWrite(motorPin1, 80);
analogWrite(motorPin2, 0);
analogWrite(motorPin3, 80);
analogWrite(motorPin4, 0);
}
//Função de Movimento para a Trás
void tras()
{
analogWrite(motorPin1, 0);
analogWrite(motorPin2, 80);
analogWrite(motorPin3, 0);
analogWrite(motorPin4, 80);
}
//Função de Movimento para a Direita
void direita()
{
analogWrite(motorPin1, 100);
analogWrite(motorPin2, 0);
analogWrite(motorPin3, 0);
analogWrite(motorPin4, 100);
}
//Função de Movimento para a Esquerda
void esquerda()
{
analogWrite(motorPin1, 0);
analogWrite(motorPin2, 100);
analogWrite(motorPin3, 100);
analogWrite(motorPin4, 0);
}
//Função Sem Movimento
void parado()
{
analogWrite(motorPin1, 0);
analogWrite(motorPin2, 0);
analogWrite(motorPin3, 0);
analogWrite(motorPin4, 0);
}Conclusão
Neste pequeno tutorial expliquei de uma forma bastante simples como usar uma ponte H–L293D para controlar servos usando o Arduino como micro-controlador. Usando este esquema poderão criar pequenos carros comandados (numa fase seguinte irei explicar como fazer o input dos dados via teclado) ou qualquer outra coisa com movimento que o utilizador imagine.
O micro-controlador Arduino permite criar um sem número de invenções, sendo facilmente programado para quem já tenha algumas noções base sobre a linguagem de programação C/C++.

