LusoRobótica - Robótica em Português

Robótica => Iniciantes => Tópico iniciado por: NelsonPRSousa em 11 de Fevereiro de 2011, 22:38

Título: Funcionamento e Programação do sensor QTR-8RC
Enviado por: NelsonPRSousa em 11 de Fevereiro de 2011, 22:38
Olá pessoal,

Estou com vários problemas para montar o meu robot. - O objectivo seria apenas meter o robot a seguir uma linha preta, utilizando o sensor QTR-8RC (http://www.pololu.com/catalog/product/961).

Actualmente, tenho o sensor montado na breadboard e ligado ao Arduino.

Pergunta 1: Onde devo ligar o LedOn? E a resistência que trouxe?
(https://lusorobotica.com/proxy.php?request=http%3A%2F%2Fwww.pololu.com%2Fpicture%2F0J623.600.jpg%3F1276058165&hash=8f8c21f2e2b0693ed2c899e6ae92f71596c24312)

Pergunta 2: Depois de ter o VCC ligado ao VIN e o GND(sensor) ligado ao GND(arduino), e cada sensor ligado a uma saída digital do Arduino, o que fazer?

Estive a ler e tal, e vi que era preciso "calibrar" os sensores. Mas o que e isto? E como se faz?

Obrigado a todos pela ajuda!
Título: Re: Funcionamento e Programação do sensor QTR-8RC
Enviado por: senso em 12 de Fevereiro de 2011, 00:18
Na página da pololu tens tudo o que precisas...
http://www.pololu.com/catalog/product/961/resources (http://www.pololu.com/catalog/product/961/resources)

Assim como uma pequena pesquisa mostra montes de tópicos sobre esse sensor, mas vai a esse link e começa a ler e saca a lib para arduino.
Título: Re: Funcionamento e Programação do sensor QTR-8RC
Enviado por: NelsonPRSousa em 12 de Fevereiro de 2011, 15:19
Não consegui descobrir onde devo ligar o LedOn nem onde colocar a resistência. :S
Título: Re: Funcionamento e Programação do sensor QTR-8RC
Enviado por: senso em 12 de Fevereiro de 2011, 15:46
Está explicito em vários sitios...
Uma pesquisa aqui no forum tambem te dá muitos resultados, vais á pagina inicial do forum e pesquisas.
Título: Re: Funcionamento e Programação do sensor QTR-8RC
Enviado por: projectoAREA em 24 de Março de 2011, 20:09
Talvez te possa ajudar :D

Para o teu sensor, só precisas de ligar as entradas VIN, GND e as numeradas, consoante o número de sensores que estejas a usar. Nós por exemplo, usámos apenas 6 sensores e então partimos o módulo de 2 sensores e no que sobrou, ligámos os fios da seguinte forma:

VIN do Sensor  ----> Power rail posiiva da breadboard
GND do Sensor ----> Power rail negativa da breadboard
Entradas 1-6 do sensor -----> Analogicos do Arduino (A0- A5, mas a funcionarem como digitais 14-19 por serem 6 juntinhos)

O LED ON não tem nada ligado, é facultativo como indica aqui (http://www.pololu.com/docs/pdf/0J12/QTR-8x.pdf) na pág. 6).

Para fazer as ligações, usámos um daqueles cabos flat (http://www.kaisergood.com/stuff/en/flat_cable_assy_e14-l.jpg) que se encontram dentro dos PCs velhos e ligámos usámos headers macho que encaixavam nos terminais pretos daqueles cabos, fazendo a ligação.

Na foto, vê-se um bocado mal mas está lá o cabo flat e nota-se umas bolhas brilhantes no sensor que são os sitios onde soldámos os headers macho:
(https://lh5.googleusercontent.com/_aLF5GGE4AgQ/TYevsaFMGyI/AAAAAAAAAdc/askIjGAaliw/s640/sensor_nosso1.jpg)
Título: Re: Funcionamento e Programação do sensor QTR-8RC
Enviado por: zeneves em 25 de Março de 2011, 18:29
kual a direrença d ligar no vin ou no 5v?
Título: Re: Funcionamento e Programação do sensor QTR-8RC
Enviado por: zeneves em 25 de Março de 2011, 18:34
e tem diferença s forem sensores separados?
Título: Re: Funcionamento e Programação do sensor QTR-8RC
Enviado por: projectoAREA em 25 de Março de 2011, 18:52
Alimentar no VIN ou no 5V isso não tem a ver com o sensor. Tem a ver com o Arduino. Alimentas o Arduino da seguinte forma:
- Se a fonte de alimentação for de cerca de 5V (quer por ser a tensão fornecida pelas pilhas ou por teres um regulador de tensão externo), ligas à entrada 5V;
- Se a fonte de alimentação for superior a 7 e até 12 V, ligas à entrada VIN que passa por um regulador interno do Arduino que assegura que chegam 5V aos seus componentes.

e tem diferença s forem sensores separados?

Não percebi o que querias dizer com isto. Cada array tem 8 sensores. Podes não usá-los todos, visto que até dá para partir a barra e ficar com uma de 6 sensores e outra de 2 sensores, mas nesse caso é como se tivesses duas barras diferentes que não se usam no mesmo projecto.
Título: Re: Funcionamento e Programação do sensor QTR-8RC
Enviado por: zeneves em 25 de Março de 2011, 19:08
porque o meu sensor n tem luz e alguns sensores n têm voltagem?

tenho tudo bem ligado

-.-
Título: Re: Funcionamento e Programação do sensor QTR-8RC
Enviado por: zeneves em 25 de Março de 2011, 19:11
n me podes deixar a tua programaçao ja agora para ver s a k eu tenho funciona..?
Título: Re: Funcionamento e Programação do sensor QTR-8RC
Enviado por: projectoAREA em 25 de Março de 2011, 21:29
porque o meu sensor n tem luz e alguns sensores n têm voltagem?

tenho tudo bem ligado
Não sei se é o caso e se tu já sabes isto, mas as luzes não se vêem a olho nu porque são infra vermelhos. Eu no início pensava que eram LEDs normais e também não via nada. Para as veres, tens de usar a câmara de um telemóvel. Se mesmo assim não se virem as luzes, então é porque há um mau contacto nos fios da alimentação. A câmara é excelente para confirmar quando há ou deixa de haver contacto.
n me podes deixar a tua programaçao ja agora para ver s a k eu tenho funciona..?
A programação que eu usei aqui foi só para testar o sensor ligado ao PC e ao Arduino (a mostrar no PC valores lidos pelo sensor). Se esse teste funcionar, então depois é que se passa para o robot propriamente dito com motores e base própria. A programação desse pequeno teste está aqui (http://lusorobotica.com/index.php?topic=2969.msg34471#msg34471)
Título: Re: Funcionamento e Programação do sensor QTR-8RC
Enviado por: zeneves em 26 de Março de 2011, 10:18
ah ok ja vi k as "luzes" funcionam com o telemovel
Título: Re: Funcionamento e Programação do sensor QTR-8RC
Enviado por: zeneves em 26 de Março de 2011, 11:18
os fios do sensor liga s ao pinos analogicos ou digitais do arduino?
Título: Re: Funcionamento e Programação do sensor QTR-8RC
Enviado por: projectoAREA em 26 de Março de 2011, 12:06
Digitais. Se bem que todos os pinos do Arduino podem servir como digitais. Aqueles pinos A0, A1, A2, A3, A4 e A5 são os pinos digitais 14, 15, 16, 17, 18 e 19 se assim os chamares no código. Tens de fazer a ligação entre as entradas numeradas de 1 a 8 no sensor e 8 pinos do arduino. Depois no código que fizeres tens de indicar que estão nesses pinos.
Título: Re: Funcionamento e Programação do sensor QTR-8RC
Enviado por: zeneves em 26 de Março de 2011, 12:57
ok..e que isto n me ta a dar muito bem como eu quero.
eu simolesmente queria k quando detecta s a linha ele desse uma volta sem passar a linha.
em vex de a seguir quero k kuando a encontre s vire pa outro lado
Título: Re: Funcionamento e Programação do sensor QTR-8RC
Enviado por: projectoAREA em 26 de Março de 2011, 13:05
mostra aqui o código que tu tens. e já agora, confirma se os fios estão ligados na ordem certa e que os pinos também estão declarados na ordem certa.
Título: Re: Funcionamento e Programação do sensor QTR-8RC
Enviado por: zeneves em 26 de Março de 2011, 14:08
aqui tens....
Código: [Seleccione]
#include <PololuQTRSensors.h>



int motor1Pin1 = 5;    // Ponte H
int motor1Pin2 = 6;    // Ponte H
int motor2Pin1 = 10;   // Ponte H
int motor2Pin2 = 11;   // Ponte H



PololuQTRSensorsRC qtr((unsigned char[]) {9,8,7,6,5,4,3,2}, 8);


void setup()
{
  Serial.begin(9600);

  pinMode(motor1Pin1, OUTPUT);
  pinMode(motor1Pin2, OUTPUT);
  pinMode(motor2Pin1, OUTPUT);
  pinMode(motor2Pin2, OUTPUT);


  int i;
  for (i = 0; i < 250; i++)
  {
    qtr.calibrate();
    delay(20);       
  }
  Serial.println("Calibrado");
}

void loop()
{
  unsigned int sensors[8];
 
  int position = qtr.readLine(sensors);

  if (sensors[0] > 750 && sensors[1] > 750 && sensors[2] > 750 &&  sensors[3] > 750 &&  sensors[4] > 750 &&
  sensors[5] > 750 &&  sensors[6] > 750 && sensors[7] > 750)
     
  {   
   
    Serial.println("Tudo escuro");

    digitalWrite(motor1Pin1, HIGH); 
    digitalWrite(motor1Pin2, LOW);   
 
    digitalWrite(motor2Pin1, HIGH); 
    digitalWrite(motor2Pin2, LOW); 
    delay (1800);                   
 
}
else
 {
 
    digitalWrite(motor1Pin1, HIGH);
    digitalWrite(motor1Pin2, LOW); 
 
    digitalWrite(motor2Pin1, LOW); 
    digitalWrite(motor2Pin2, HIGH);
    delay (3500);                   
 
    digitalWrite(motor1Pin1, HIGH);
    digitalWrite(motor1Pin2, LOW);
 
    digitalWrite(motor2Pin1, HIGH);
    digitalWrite(motor2Pin2, LOW);
    delay (3000);
   
     return;
  }


  int error = position - 3500;
 
  Serial.println(position);
  delay(1000);
}
 
Título: Re: Funcionamento e Programação do sensor QTR-8RC
Enviado por: projectoAREA em 27 de Março de 2011, 16:46
Deixa-me ver se percebi bem :)

Esse código faz com que o robot ande para a frente de se vir tudo escuro e que rode 3,5 segundos para a esquerda e depois 3,5 segundos para a direita, em todas as outras situações? Isso não faz sentido nenhum porque ele vai andar para a frente se os 8 sensores tiverem sobre a linha preta ou então quando levantas o robot do chão (também lê tudo escuro, nesta situação). E vai rodar para os lados em todas as situações restantes, quer esteja a ver a linha em qualquer dos sensores e quer não esteja a ver a linha (tudo branco). É esse o significado do "else": todas as outras situações...

Talvez querias corrigir isso. Se já definiste a "position", usa isso através de um "if". Se position > 4000, virar para um lado, se position < 3000 virar para o outro lado e se 3000 < position < 4000, seguir em frente, aí sim.