sexta-feira, 7 de agosto de 2015

Dando “vida” ao chassi TG007 usando um Arduino

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

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
}

O projeto funcionando:


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

← Postagem mais recente Postagem mais antiga → Página inicial

0 comentários:

Postar um comentário