No se pueden leer los valores de Pololu QTR 8RC

1

Estoy utilizando la matriz de sensores Pololu QTR 8RC. Estoy usando sólo 5 sensores. He conectado los sensores a arduino en pines digitales 3 hasta 7 + VCC y GND. Estoy usando el bosquejo de ejemplo. Si uso la función "leer" obtengo alguna variación en los valores de los sensores. Pero si uso la función "readLine" obtengo todo 0 en las lecturas. También después de la calibración, los valores calibrados mínimo y máximo son 2500.

#include <QTRSensors.h>

// This example is designed for use with eight QTR-1RC sensors or the eight sensors of a
// QTR-8RC module.  These reflectance sensors should be connected to digital inputs 3 to 10.
// The emitter control pin 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 setup phase of this example calibrates the sensor for ten seconds and turns on
// the pin 13 LED while calibration is going on.  During this phase, you should expose each
// reflectance sensor ot the lightest and darkest readings they will encounter.  For
// example, if you are making a line follower, you should slide the sensors across the
// line during the calibration phase so that each sensor can get a reading of how dark the
// line is and how light the ground is.  Improper calibration will result in poor readings.
// If you want to skip the calibration phase, you can get the raw sensor readings
// (pulse times from 0 to 2500 us) by calling qtra.read(sensorValues) instead of
// qtra.readLine(sensorValues).

// The main loop of the example reads the calibrated sensor values and uses them to
// estimate the position of a line.  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 9 (minimum reflectance) followed by the estimated location of the line as a number
// from 0 to 5000.  1000 means the line is directly under sensor 1, 2000 means directly
// under sensor 2, etc.  0 means the line is directly under sensor 0 or was last seen by
// sensor 0 before being lost.  5000 means the line is directly under sensor 5 or was
// last seen by sensor 5 before being lost.


#define NUM_SENSORS   5     // number of sensors used
#define TIMEOUT       2500  // waits for 2500 us for sensor outputs to go low
#define EMITTER_PIN   QTR_NO_EMITTER_PIN     // emitter is controlled by digital pin 2

// sensors 0 through 7 are connected to digital pins 3 through 10, respectively
QTRSensorsRC qtrrc((unsigned char[]) {3, 4, 5, 6, 7, 8, 9, 10},
  NUM_SENSORS, TIMEOUT, EMITTER_PIN); 
unsigned int sensorValues[NUM_SENSORS];


void setup()
{
  delay(500);
  int i;
  pinMode(13, OUTPUT);
  digitalWrite(13, HIGH);    // turn on LED to indicate we are in calibration mode
  for (i = 0; i < 400; i++)  // make the calibration take about 10 seconds
  {
    qtrrc.calibrate();       // reads all sensors 10 times at 2500 us per read (i.e. ~25 ms per call)
  }
  digitalWrite(13, LOW);     // turn off LED to indicate we are through with calibration

  // print the calibration minimum values measured when emitters were on
  Serial.begin(9600);
  for (i = 0; i < NUM_SENSORS; i++)
  {
    Serial.print(qtrrc.calibratedMinimumOn[i]);
    Serial.print(' ');
  }
  Serial.println();

  // print the calibration maximum values measured when emitters were on
  for (i = 0; i < NUM_SENSORS; i++)
  {
    Serial.print(qtrrc.calibratedMaximumOn[i]);
    Serial.print(' ');
  }
  Serial.println();
  Serial.println();
  delay(1000);
}


void loop()
{
  // read calibrated sensor values and obtain a measure of the line position
  // from 0 to 5000, where 0 means directly under sensor 0 or the line was lost
  // past sensor 0, 1000 means directly under sensor 1, 200 means directly under sensor 2, etc.
  // Note: the values returned will be incorrect if the sensors have not been properly
  // calibrated during the calibration phase.  To get raw sensor values, call:
  //  qtra.read(sensorValues);
  unsigned int position = qtrrc.readLine(sensorValues);

  //qtrrc.read(sensorValues);

  // print the sensor values as numbers from 0 to 9, where 0 means maximum reflectance and
  // 9 means minimum reflectance, followed by the line position
  unsigned char i;
  for (i = 0; i < NUM_SENSORS; i++)
  {
    Serial.print(sensorValues[i] * 10 / 1001);
    Serial.print(' ');
  }
  Serial.print("    ");
  Serial.println(position);

  delay(250);
}
    
pregunta Hemanshu Bhojak

1 respuesta

2

Sin intención de ser grosero, es muy probable que el problema sea que no está siguiendo correctamente las instrucciones disponibles, que parecen ser de excelente calidad y claridad. alta calidad. La documentación es mucho mejor que la que se proporciona para la mayoría de los productos de este tipo, y si la sigue atentamente, no debería tener problemas SI su sistema básico funciona bien.

Pololu proporciona Biblioteca Arduino para los Sensores de Reflectancia Pololu QTR que parece ser muy completa en el código y las descripciones de hardware. . Se proporciona una gran cantidad de material descriptivo. Parecería que si siguieras sus instrucciones, funcionaría.

Aunque de un vistazo no vi su fragmento de código en su página, el hecho de que algunas de las variables con nombres únicos sean las mismas sugiere que está usando su código. ¿Eres tu?

¿Está utilizando este conjunto de instrucciones como base para lo que está haciendo?

Por favor, proporcione un circuito EXACTAMENTE de lo que está haciendo. Una imagen de una palabra a menudo esconde malentendidos por parte del escritor.

Guía del usuario muy buena: 9 páginas en PDF

Página de enlace de recursos

discusión sobre Arduno, como se indica arriba

página de matriz de sensores

Tenga en cuenta que hay dos modelos de sensor disponibles: el módulo QTR-8RC que emite un impulso
 y el módulo QTR-8A que genera un nivel de CC.
 Usted dice que tiene el ... módulo RC.
 El código para RC & Los módulos 8A no son intercambiables, por lo que sería mejor que compruebes lo que tienes.

El sensor de reflectancia de Polulu:

Modelo 8A a la izquierda, modelo RC a la derecha.

    
respondido por el Russell McMahon

Lea otras preguntas en las etiquetas