Querem fazer um tanque de guerra com arduino?
Neste post construiremos um, que será controlado via serial com a plataforma tamiya.
O objetivo principal é ensinar como usar o Drv8833, em razão de existirem pouquíssimos tutoriais falando sobre esse drive para motores.
Em caso de dúvida consulte seu datasheet: drv8833.pdf
Veja o vídeo do tanque tamiya e o Drv8833 em funcionamento:
Em breve.Vamos ao material que precisamos:
Qtd Itens:1 - Arduino UNO ou qualquer outra versão;
1 - Drv8833 Pololu - Drive de motor ou Ponte H;
1 - Bateria 3.7v 1000Mh;
1 - Tanque esteira tamiya;
1 - Protoboard;
x - Jumpers (Fios).
Não sabe onde comprar as peças, confira esse post: onde comprar arduino e componentes
Vamos à montagem:
Basta fazer as mesmas conexões da imagem abaixo:Montagem passo a passo:
Esses são os componentes que iremos utilizar.
A bateria pode ser qualquer uma que tenha mais de 2,7v e menos que 10,8v. Quando mais Mha, maior a duração.
Depois prenda o drive no robô e conecte os polos dos motores nos pinos "AOUT1 AOUT2 BOUT1 e BOUT2" lembrando de deixar um espaço para o arduino e a bateria.
Coloque a bateria no espaço restante e conecte os cabos ao "VIN" e ao "GND" da ponte h Drv8833.
Faça uma proteção para colocar embaixo do arduino UNO para evitar curto circuito (isso pode até ser feito com um papelão).
Posicione-o em cima da bateria, prenda com parafusos ou, como eu fiz, com um elástico e conecte os pinos PWM "5 e 6" "9 e 10" aos pinos do drive "B IN1, B IN2, A IN1 e A IN2". Conecte o "GND" do drive ao "GND" da bateria este "GND" (é o primeiro pino do lado "INPUT" do drive).
Os pinos "VMM" "nSLEEP" "nFAULT" "aISEN" e "bISEN" não recebem conexões.
Você poderá colocar uma protoboard para completar e ajudar a adicionar mais componentes, já que o conector USB do arduino fica no mesmo nível da caixa de redução, assim como foi feito na imagem ao lado.
O mais importante, o código fonte
Atenção:Na sketch a variável "motor" e "motor2" são os dois polos do motor 1. A variável "motor3" e "motor4" são os dois polos do motor 2. Por exemplo, caso você aperte a tecla "w" para ir para frente e ele vá para trás, altere o código até ele responder o comando corretamente.
/*
>>>>> Test Criando Robô Com Arduino <<<<<
##### Robôs, Projetos e Tutoriais! #####
.:: Site secundário: http://www.TestCriandoRoboComArduino.com/
.:: Site principal: http://www.CriandoRoboComArduino.com/
========== IMPORTANTE ==========
O código está livre para usar, citar, alterar e compartilhar,
desde que mantenha o site como referência.
Obrigado.
--------------------------------------------------------------------------------------------------
Projeto: Como usar o tanque esteira tamiya e a ponte H Drv8833 com arduino
---------------------------------------------------------------------------------------------------
*/
//Declaração das variáveis
int motor= 5; //Pino pwm conectado ao pino input A1 do drive.
int motor2 = 6; //Pino pwm conectado ao pino input A2 do drive.
int motor3 = 9; //Pino pwm conectado ao pino input B1 do drive.
int motor4 = 10; //Pino pwm conectado ao pino input B2 do drive.
void setup(){
Serial.begin(9600); //iniciando o serial monitor.
//Definindo a polaridade dos motores como saída.
pinMode(motor, OUTPUT);
pinMode(motor2, OUTPUT);
pinMode(motor3, OUTPUT);
pinMode(motor4, OUTPUT);
}
void loop(){
if(Serial.available() > 0){// se entrar informação, faça
int entrada = Serial.read();
switch (entrada){
// Definindo funções.
case 'w'://ir para frente
para();
frente();
break;
case 'd'://ir para direita
para();
direita();
break;
case 'a'://ir para esquerda
para();
esquerda();
break;
case 'p'://parar
entrada = 0;
para();
break;
case 's':// ir para trás
para();
tras();
break;
}
Serial.flush();
}
}//fim loop
//funções
void frente(){
digitalWrite(motor2, HIGH);
digitalWrite(motor3, HIGH);
}
void para(){
digitalWrite(motor, LOW);
digitalWrite(motor2, LOW);
digitalWrite(motor3, LOW);
digitalWrite(motor4, LOW);
}
void tras(){
digitalWrite(motor, HIGH);
digitalWrite(motor3, HIGH);
}
void direita(){
digitalWrite(motor, HIGH);
digitalWrite(motor4, HIGH);
}
void esquerda(){
digitalWrite(motor4, HIGH);
digitalWrite(motor2, HIGH);
}
/*:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
>>>>> Acesse os sites: <<<<<
.:: Testes dos robôs, noticias sobre robótica e muito mais
http://www.TestCriandoRoboComArduino.com/
.:: Robôs, Projetos e Tutoriais
http://www.CriandoRoboComArduino.com/
>>>>> Inscreva-se nos canais no Youtube: <<<<<
.:: Mostrando os testes dos robôs e projetos
Test Criando Robô Com Arduino
https://www.youtube.com/TestCriandoRoboComAr
.:: Vídeos dos robôs, projetos e tutoriais
Criando Robô Com Arduino
https://www.youtube.com/CriandoRoboComArduin
:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::*/
Atenção!
Cuidado, nunca deixe os dois polos dos motores em "high". Exemplo:
digitalwrite(motor, high);
digitalwrite(motor2, high);
Isso poderá queimar algum componente.Qualquer dúvida pergunte nos comentários e não faça nada sem ter certeza do que está fazendo!
Enviando os comandos pelo teclado.
Você pode usar o "Serial Monitor" do arduino para dar os comandos ao robô, mas recomendo o uso do "Tera Term", pois ele é mais preciso e fácil de usar.Baixe o Tera Term aqui e siga o tutorial de configuração:
Abra o tera term e selecione "Serial" em seguida escolha a porta onde esta conectado seu arduino (no meu caso "COM6") e pressione "OK".
Pressione, agora, as teclas "W", "A" , "S" , "D" e "P" para o robô andar ou parar.
Pronto, qualquer duvida é só deixar nos comentários ou entrar em Contato
Nós do Criando Robô Com Arduino agradecemos ao Bruno por esse tutorial!