8 de jul. de 2014

Como usar o tanque esteira tamiya e a ponte H Drv8833 com arduino

Olá, amantes de robótica!
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:
(clique na imagem pra ampliá-la)


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! 


Quer ajuda ou quer ajudar? Clique em Ajuda e veja como você pode ajudar ou ser ajudado.

Nenhum comentário :

Postar um comentário

O seu comentário estará aguardando aprovação.