sábado, 7 de fevereiro de 2015

Robô Seguidor de Linha com Arduino e QRE1113 Analógico - versão 2

Palavras-chave: Robô, Seguidor de Linha, Arduino, Zumo, L293D, QRE1113 Analógico, QRE-1113.

Nota: todos os links para sites e ferramentas encontram-se no final do post.

Este robô é a releitura do seguidor de linha publicado anteriormente, [1].

As mudanças estão na substituição do chassis Magician DG007 para o Zumo da Pololu e na troca do Adafruit motor shield por um proto shield com o L293D.

MATERIAIS

Mecânica:

- 1 Kit do chassis Zumo da Pololu com motores.

Eletrônica e Controle:

- 1 Arduino Uno;
- 2 Sensores de refletância QRE1113 - Analógico;
- 1 Proto shield;
- 1 L293D.

Diversos:

- Fios (jumpers) para montagem em protoboard;
-  4 Pilhas - alimentação do Arduino e motores;
- Parafusos com espaçadores para fixar o Arduino no chassis.

MONTAGEM

Monte os sensores e o Arduino no chassis. Figuras 1 e 2, respectivamente.

Recomenda-se que o sensor fique a 3mm de distância da superfície.

Conecte o proto shield, Figura 3.

Fig. 1 - Sensor QRE-1113 Analógico.

Fig. 2 - Chassis Zumo - Pololu.

Fig. 3 - Proto shield.
Siga o diagrama elétrico, Figura 4, para ligar os sensores, os motores e o L293D ao Arduino.

Fig. 4 - Esquema de ligação do L293D e Sensores QRE-1113.
A Figura 5 mostra o robô pronto.

Fig. 5 - Robô Seguidor de Linha v2.
PROGRAMAÇÃO

Copie o código abaixo integralmente e faça o upload para o Arduino.
/*------------------------------------------------------------------
 * ROBO SEGUIDOR DE LINHA
 *
 * Arduino Uno R2, Proto shield, L293D e QRE-1113 Analogico
 *
 * Cleber Moretti
 * www.binarycodec.blogspot.com
 * Data: 05/02/2015
 * v.1.0
------------------------------------------------------------------*/
#include <Wire.h>

// Sensores
const int SensorDireito = 0; // Sensor do lado direito - pino A0 -- Visto de tras para frente
const int SensorEsquerdo = 1; // Sensor do lado esquerdo - pino A1

// Motores
int MotorDireitoAciona = 3; // Ligado ao Enable 1 do L293D
int MotorEsquerdoAciona = 6; // Ligado ao Enable 2 do L293D
int MotorDireito = 2; // Motor direito para frente - sentido rotacao
int MotorEsquerdo = 7; // Motor esquerdo para frente - sentido rotacao
// int MotorDireitoTras = 4; // Motor direito para tras
// int MotorEsquerdoTras = 8; //Motor esquerdo para tras

void setup() {

  pinMode(SensorDireito, INPUT);
  pinMode(SensorEsquerdo, INPUT);
  pinMode(MotorDireitoAciona, OUTPUT);
  pinMode(MotorEsquerdoAciona, OUTPUT);
  pinMode(MotorDireito, OUTPUT);
  pinMode(MotorEsquerdo, OUTPUT);
    
  digitalWrite(MotorDireito,HIGH);
  digitalWrite(MotorEsquerdo, HIGH); 
}

void loop() {
 
  int sLadoDireito = analogRead(SensorDireito);
  int sLadoEsquerdo = analogRead(SensorEsquerdo);

  if (sLadoDireito >= 300 && sLadoEsquerdo < 300) { //300 leituras por segundo
      // ViraDireita
      digitalWrite(MotorDireitoAciona, LOW);
      digitalWrite(MotorEsquerdoAciona, HIGH);
  }
  else if (sLadoDireito < 300 && sLadoEsquerdo >= 300) {
      // ViraEsquerda
      digitalWrite(MotorDireitoAciona, HIGH);
      digitalWrite(MotorEsquerdoAciona, LOW);
  }
  else {
      // Frente
      digitalWrite(MotorDireitoAciona, HIGH);
      digitalWrite(MotorEsquerdoAciona, HIGH);
  }
  
}
TESTE 

Respeitando o espaçamento entre os sensores, faça um traçado/pista com fita isolante em uma superfície branca e conecte a alimentação ao Arduino.

MATERIAIS/LINKS RELACIONADOS

[1]. Seguidor de Linha - http://binarycodec.blogspot.com.br/2013/09/robo-seguidor-de-linha-com-arduino.html

Nenhum comentário: