Ok, depois de montar o chassi TG007 (veja o tutorial em http://www.seucurso.com.br/index.php?option=com_content&view=article&id=97:construindo-um-robo-com-o-kit-tg007-da-tato-equipamentos-eletronicos&catid=40:tutoriais&Itemid=61) agora chegou a hora de dar “vida” a ele, ou seja, coloca-lo para movimentar-se de forma autônoma.
Para isso utilizei um controlador para dois motores DC baseado no CI TB6612FNG que tem entre as vantagens do baixo consumo de eletricidade, o pequeno tamanho e consequentemente peso quase desprezível para qualquer projeto de robótica. Não usei o controle como o mostrado em “Ligando, desligando e controlando a velocidade de motores DC com o Arduino” (http://www.seucurso.com.br/index.php?option=com_content&view=article&id=93:ligando-desligando-e-controlando-a-velocidade-de-motores-dc-com-o-arduino&catid=40:tutoriais&Itemid=61) porque com o TB6612FNG também é possível indicar em qual direção desejamos que o motor gire.
O primeiro passo é fixar o seu Arduino ao chassi:
Feito isso encontre uma placa de ensaios (proto-board) que seja pequena o suficiente para abrigar todo o projeto e caiba sobre o robô ou faça como eu, corte uma que esteja disponível ao meio para essa tarefa. Lembre-se que se decidir corta uma placa de ensaios ao meio faça com capricho e com a certeza do que faz.
Prenda-a ao chassi:
Agora vamos colocar a placa do TB6612FNG na placa de ensaios:
Atente-se a nomenclatura dos pinos conforme a figura abaixo:
Vamos às ligações:
1º Conecte os pinos terra (GND) ao GND do Arduino, menos aquele que se encontra imediatamente abaixo do pino VMOT. Facilitará se você colocar uma ligação entre o pino terra do Arduino e a placa de ensaios no barramento lateral, em seguida, ligue os pinos GND ao mesmo barramento.
2º Ligue o pino VCC ao pino de 5V do Arduino. Pode-se fazer o mesmo que foi feito em relação aos pinos GND, ligue o 5V do Arduino a placa de ensaios no barramento lateral e depois ligue o pino VCC ao mesmo barramento. Isso irá facilitar caso deseje adicionar componentes que precise desses mesmos pinos.
3º Conecte os pinos AO1 ao negativo do motor 01 e o pino AO2 ao positivo do motor 01. Conecte também os pinos BO1 ao positivo do motor 02 e o pino BO2 ao negativo do motor 02. Tente manter certa organização nos fios.
4º Conecte o pino VMOT ao positivo das pilhas do seu chassi, elas que fornecerão eletricidade aos motores e não a fonte de alimentação que estiver no Arduino. Abaixo do pino VMOT há um terra (GND), esse deverá ser ligado ao negativo das pilhas. Essa separação é importantíssima, uma fonte para os motores (potência) e uma para o Arduíno. Para essa ligação faça como fizemos com os pinos GND e 5V do Arduino, use a placa de ensaios como intermediária.
5º Ligue o pino PWMA ao pino digital 05 do Arduino. Com ele que diremos a que velocidade o motor 01 deverá girar.
6º Ligue os pinos AIN2 e AIN1 aos pinos digitais 7 e 8, respectivamente, no Arduino. Com eles que acionaremos o motor 01. Pode paracer impossível, mas tente manter ordem no aparente caos de fios.
7º Ligue o pino STBY ao pino digital 11 do Arduino. Com esse pino é possível colocar e tirar a o TB6612FNG do estado de dormência (standby).
8º Ligue os pinos BIN1 e BIN2 aos pinos digitais 9 e 10, respectivamente, no Arduino. Com eles que acionaremos o motor 02.
9º Ligue o pino PWMB ao pino digital 6. Com ele que diremos a que velocidade o motor 02 deverá girar.
Agora pode apreciar! Debaixo dessa “confusão” de fios está o nosso protótipo de robô!
Em resumo temos:
Pinos 07 e 08 – motor 01
Pinos 09 e 10 – motor 02
Pino 05 – potência motor 01
Pino 06 – potência motor 02
Pino 11 - standby
Vamos programá-lo e fazê-lo andar de um lado por um segundo, e para o outro também por um segundo.
A combinação de níveis para os pinos dos motores é a seguinte:
Pino |
Nível |
Direção |
7 |
HIGH |
Motor 01 em frente |
8 |
LOW |
|
7 |
LOW |
Motor 01 para trás |
8 |
HIGH |
|
7 |
LOW |
Motor 01 parado |
8 |
LOW |
|
9 |
HIGH |
Motor 02 em frente |
10 |
LOW |
|
9 |
LOW |
Motor 02 para trás |
10 |
HIGH |
|
9 |
LOW |
Motor 02 parado |
10 |
LOW |
O código do exemplo é o que segue:
{code}
void setup() {
pinMode(7, OUTPUT);
pinMode(8, OUTPUT);
pinMode(9, INPUT);
pinMode(10, OUTPUT);
pinMode(5, OUTPUT);
pinMode(6, OUTPUT);
pinMode(11, OUTPUT);
}
void loop() {
// Toda a força!
digitalWrite(5,255);
digitalWrite(6,255);
// Para frente
digitalWrite(7,HIGH);
digitalWrite(8,LOW);
digitalWrite(9,HIGH);
digitalWrite(10,LOW);
// Sair do estado de dormência
digitalWrite(11,HIGH);
// Aguardar 1 segundo
delay(1000);
// Entrar no estado de dormência
digitalWrite(11,LOW);
// Aguardar 1 segundo
delay(1000);
// Para trás
digitalWrite(7,LOW);
digitalWrite(8,HIGH);
digitalWrite(9,LOW);
digitalWrite(10,HIGH);
// Sair do estado de dormência
digitalWrite(11,HIGH);
// Aguardar 1 segundo
delay(1000);
// Entrar no estado de dormência
digitalWrite(11,LOW);
// Aguardar 1 segundo
delay(1000);
// Para trás
}
{/code}
O projeto funcionando:
{youtube}ECU3IkaDpfk{/youtube}
Considerações finais:
1. Cuidado na ligação dos fios;
2. Atenção ao aquecimento dos motores e do TB6612FNG
3. Agora é só adicionar sensores e programar outros comportamentos