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++.