collapse

* Links de Robótica

* Posts Recentes

Medir Agua que está no Poço por Njay
[Ontem às 18:28]


Ajuda Projecto IR / RF por pmj_pedro
[Ontem às 16:23]


CNC Laser 60w por nandotx
[15 de Outubro de 2017, 19:01]


Equipar laboratorio por LVirtual
[13 de Outubro de 2017, 08:34]


Arranjo de Berbequim por jm_araujo
[13 de Outubro de 2017, 08:34]


Escolher ligações por dropes
[08 de Outubro de 2017, 23:26]


Perfis V-Slot vs C-Beam vs Bosch vs 8020 por senso
[08 de Outubro de 2017, 18:22]


Ideias para construir um quadrúpede simples por Njay
[07 de Outubro de 2017, 22:12]


Meu projecto - Arm Robot com arduino por Diogo Bento
[05 de Outubro de 2017, 20:54]


Alimentar arduino nano com 12V por helderjsd
[05 de Outubro de 2017, 16:26]

Autor Tópico: QTR 8A - Polulu  (Lida 1405 vezes)

0 Membros e 1 Visitante estão a ver este tópico.

Offline edeweld

  • Mini Robot
  • *
  • Mensagens: 416
QTR 8A - Polulu
« em: 24 de Fevereiro de 2017, 16:07 »
Boas,

Alguém já trabalhou com estes QTR? https://www.pololu.com/product/960?
Estou a ter problemas com a leitura de linha preta! Ora lê como não lê....

Sugestões?

Offline senso

  • Global Moderator
  • Mini Robot
  • *****
  • Mensagens: 9.397
  • Helpdesk do sitio
Re: QTR 8A - Polulu
« Responder #1 em: 24 de Fevereiro de 2017, 16:08 »
Só com os sensores em si(TCRT5000), e são basicos de usar, provavelmente estás a usar a biblioteca da Polulu e não estás a fazer a calibração..
Avr fanboy

Offline edeweld

  • Mini Robot
  • *
  • Mensagens: 416
Re: QTR 8A - Polulu
« Responder #2 em: 24 de Fevereiro de 2017, 16:18 »
Só com os sensores em si(TCRT5000), e são basicos de usar, provavelmente estás a usar a biblioteca da Polulu e não estás a fazer a calibração..

Exacto. Ando a procura de conseguir fazer isso! Mas ando perdido na documentação...

Offline edeweld

  • Mini Robot
  • *
  • Mensagens: 416
Re: QTR 8A - Polulu
« Responder #3 em: 24 de Fevereiro de 2017, 16:20 »
Estou a usar isto:

Código: [Seleccione]
#include <QTRSensors.h>

#define NUM_SENSORS             6  // number of sensors used

// sensors 0 through 5 are connected to analog inputs 0 through 5, respectively
QTRSensorsAnalog qtra((unsigned char[]) {0, 1, 2, 5, 6, 7},
  NUM_SENSORS);
unsigned int sensorValues[NUM_SENSORS];


void setup() {
for (int i = 0; i < 40; i++)  // make the calibration take about 10 seconds
    {
      qtra.calibrate();       // reads all sensors 10 times at 2.5 ms per six sensors (i.e. ~25 ms per call)
    }
}

void loop() {
qtra.calibrate();       // reads all sensors 10 times at 2.5 ms per six sensors (i.e. ~25 ms per call)
}

Mas obtenho o mesmo cenário!

Online jm_araujo

  • Mini Robot
  • *
  • Mensagens: 2.141
  • NERD!
Re: QTR 8A - Polulu
« Responder #4 em: 24 de Fevereiro de 2017, 16:33 »
E o resto do programa? Onde é que estás a fazer a leitura?

A calibração deve ser feita antes de começar as leituras, no mesmo programa. Ela não fica guardada entre programas diferentes (será esse o teu erro?).

Offline edeweld

  • Mini Robot
  • *
  • Mensagens: 416
Re: QTR 8A - Polulu
« Responder #5 em: 24 de Fevereiro de 2017, 16:40 »
Para já estou a estudar o exemplos básicos, que vem com a própria biblioteca

Código: [Seleccione]
#include <QTRSensors.h>

// This example is designed for use with six QTR-1A sensors or the first six sensors of a
// QTR-8A module.  These reflectance sensors should be connected to analog inputs 0 to 5.
// The QTR-8A's emitter control pin (LEDON) can optionally be connected to digital pin 2,
// or you can leave it disconnected and change the EMITTER_PIN #define below from 2 to
// QTR_NO_EMITTER_PIN.

// The main loop of the example reads the raw sensor values (uncalibrated).
// You can test this by taping a piece of 3/4" black electrical tape to a piece of white
// paper and sliding the sensor across it.  It prints the sensor values to the serial
// monitor as numbers from 0 (maximum reflectance) to 1023 (minimum reflectance).


#define NUM_SENSORS             6  // number of sensors used
#define NUM_SAMPLES_PER_SENSOR  4  // average 4 analog samples per sensor reading
#define EMITTER_PIN             2  // emitter is controlled by digital pin 2

// sensors 0 through 5 are connected to analog inputs 0 through 5, respectively
QTRSensorsAnalog qtra((unsigned char[]) {0, 1, 2, 3, 4, 5},
  NUM_SENSORS, NUM_SAMPLES_PER_SENSOR, EMITTER_PIN);
unsigned int sensorValues[NUM_SENSORS];


void setup()
{
  delay(500);
  Serial.begin(9600); // set the data rate in bits per second for serial data transmission
  delay(1000);
}


void loop()
{
  // read raw sensor values
  qtra.read(sensorValues);
 
  // print the sensor values as numbers from 0 to 1023, where 0 means maximum reflectance and
  // 1023 means minimum reflectance
  for (unsigned char i = 0; i < NUM_SENSORS; i++)
  {
    Serial.print(sensorValues[i]);
    Serial.print('\t'); // tab to format the raw data into columns in the Serial monitor
  }
  Serial.println();
 
  delay(250);
}

Mas o resultado é sempre o mesmo:
Código: [Seleccione]
....
1009 994 985 979 1023 1023
1002 980 966 955 1023 1023
1005 986 973 962 1023 1023
1007 991 981 973 1023 1023
1004 986 974 965 1023 1023
1003 983 969 959 1023 1023
1005 987 974 964 1023 1023
1008 992 982 975 1023 1023
1002 980 966 955 1023 1023
1004 985 972 961 1023 1023
1008 993 983 976 1023 1023
1003 982 969 958 1023 1023
1004 986 972 962 1023 1023
1007 990 978 970 1023 1023
1007 990 979 971 1023 1023
1003 981 968 957 1023 1023

....

Mesmo que mexa os sensores e coloque mais ou menos luz nunca muda muito os valores.
Algum projecto já feito? Ou documentação que possam passar?

Entretanto estou a explorar os tópicos aqui no forum...

Offline senso

  • Global Moderator
  • Mini Robot
  • *****
  • Mensagens: 9.397
  • Helpdesk do sitio
Re: QTR 8A - Polulu
« Responder #6 em: 24 de Fevereiro de 2017, 17:03 »
Para calibrar tens de lhe passar uma folha com uma linha preta.
Avr fanboy

Online jm_araujo

  • Mini Robot
  • *
  • Mensagens: 2.141
  • NERD!
Re: QTR 8A - Polulu
« Responder #7 em: 24 de Fevereiro de 2017, 17:05 »
Como desconfiava, nesse programa não chamas a calibração, logo não estás a fazer a mesma!
E já tinha dito isso :)

Com esses valores também me parece que não estavas o suficientemente perto da superfície para os sensores verem o reflexo à volta da linha preta.

Isso, ou confirma as ligações, que o fio que liga do pino 2 (segundo o teu código) ao LEDON e também o GND estão bem ligados.

Se não sabes, os sensores de imagem (camara do telemóvel) conseguem ver um bocado de infravermelho, se encostares a camara a um emissor e estiver ligado vê-se um brilho arroxeado na ecrã. É bom para ajudar a diagnosticar problemas ;)




Offline edeweld

  • Mini Robot
  • *
  • Mensagens: 416
Re: QTR 8A - Polulu
« Responder #8 em: 24 de Fevereiro de 2017, 20:01 »
Fazer a calibração é isto? qtra.calibrate();

Offline senso

  • Global Moderator
  • Mini Robot
  • *****
  • Mensagens: 9.397
  • Helpdesk do sitio
Re: QTR 8A - Polulu
« Responder #9 em: 24 de Fevereiro de 2017, 21:19 »
Como o nome bem indica..
E é para estar sempre essa chamada no setup, nunca no loop.

Tal como está nos exemplos da Polulu..
Avr fanboy

Offline edeweld

  • Mini Robot
  • *
  • Mensagens: 416
Re: QTR 8A - Polulu
« Responder #10 em: 25 de Fevereiro de 2017, 01:49 »
Vou ter que continuar a ler a documentação e ver exemplos destes sensores.
Ainda estou muito no início mas pelas conclusões que já fui tirando o sensor nem sempre dá o mesmo valor.

Obrigado

Offline dropes

  • Mini Robot
  • *
  • Mensagens: 1.921
Re: QTR 8A - Polulu
« Responder #11 em: 25 de Fevereiro de 2017, 10:45 »
Arduino à parte, é possível ler os valores seguindo a lógica do circuito usando um multimetro e uma fonte de 5V, confirma-se o funcionamento dos sensores e a partir daí é apenas código.

Realmente o programa efectua uma calibração em loop, a sequência deveria ser:
Calibração por cada emissor/receptor
Loop de 1 canal
- ligar emissor
- ler receptor
- desligar emissor
- calcular valor com base na calibração
- enviar valor via série
Fim de Loop

Sei que as bibliotecas reduzem muitas destas instruções, o que passa ao lado os pormenores de algo relativamente simples e lá se vai a teoria prás couves.

Ps: Vais fazer um seguidor de linha? Já houveram uns malucos por aqui que se atreveram a fazer :p
« Última modificação: 25 de Fevereiro de 2017, 10:49 por dropes »

Offline edeweld

  • Mini Robot
  • *
  • Mensagens: 416
Re: QTR 8A - Polulu
« Responder #12 em: 25 de Fevereiro de 2017, 13:48 »
Arduino à parte, é possível ler os valores seguindo a lógica do circuito usando um multimetro e uma fonte de 5V, confirma-se o funcionamento dos sensores e a partir daí é apenas código.

Realmente o programa efectua uma calibração em loop, a sequência deveria ser:
Calibração por cada emissor/receptor
Loop de 1 canal
- ligar emissor
- ler receptor
- desligar emissor
- calcular valor com base na calibração
- enviar valor via série
Fim de Loop

Sei que as bibliotecas reduzem muitas destas instruções, o que passa ao lado os pormenores de algo relativamente simples e lá se vai a teoria prás couves.

Ps: Vais fazer um seguidor de linha? Já houveram uns malucos por aqui que se atreveram a fazer :p

Estou a programar um robo para esta competição http://roboparty.org/
Já consigo por o bicho a seguir a linha mas o problema é quando chega a uma curva com bastante velocidade. O foto transistor passa na linha mas não dá o valor do preto. Apenas consigo resolver isso se apontar uma luz de lanterna para os sensores. O que concluo que a falta ou excesso de luz ambiente altera o desempenho dos mesmos!

Offline dropes

  • Mini Robot
  • *
  • Mensagens: 1.921
Re: QTR 8A - Polulu
« Responder #13 em: 25 de Fevereiro de 2017, 21:09 »
Se ignora as curvas é porque o PID não está implementado ou as suas variáveis têm de ser ajustadas.

De qualquer forma o robot tem de varrer a linha preta na calibração para registar os valores extremos dos sensores, a luz ambiente também influencia pelo que os sensores deverão estar a cerca de 1cm da pista e de preferência com isolamento para evitar luz externa.

Offline edeweld

  • Mini Robot
  • *
  • Mensagens: 416
Re: QTR 8A - Polulu
« Responder #14 em: 26 de Fevereiro de 2017, 02:27 »
Se ignora as curvas é porque o PID não está implementado ou as suas variáveis têm de ser ajustadas.

De qualquer forma o robot tem de varrer a linha preta na calibração para registar os valores extremos dos sensores, a luz ambiente também influencia pelo que os sensores deverão estar a cerca de 1cm da pista e de preferência com isolamento para evitar luz externa.

PID ainda não percebo o suficiente. Mas é um assunto que tenho que estudar. Tenho andado a ver vários tutoriais e artigos sobre projectos parecidos e tenho tirado várias conclusões. Alguns utilizam PID outros não. Marrão como sou, construi o código, ou melhor, vários códigos para ele seguir a linha. Conclusão, neste momento estou a "bater" nesta questão de luminosidade e na dificuldade em que o pic tem em processar toda a informação quando a velocidade aumenta. Mas já consigo colocar o robo a varrer a linha toda, o problema é que anda muito lentamente e via a snifar a linha toda.

Mas vou continuar a estudar e talvez até comece a construir um robo! :) Para já o que prende são os $$$$