Mauvais résultats VL53L0X

Bonjour leg2027

Moi, aussi :wink:
Il faut ajouter un delay() au démarrage


  Wire.begin();
 delay(500);
  sensor.setTimeout(500);

Comme c'était indiqué dans la vidéo de mon post #2 à environ 2:10

C'est pour attendre la stabilité du système, tu peux jouer sur cette valeur de 500 pour gagner du temps.

Cordialement
jpbbricole

J'avais testé avec 50ms de la vidéo mais avec 500, ça marche mieux.

Il y a du mieux, les mesures correspondent plutôt à ce que je mets. Mais avec un objet à 10cm la précision est d'environ 1cm, loin des 1mm annoncé.

Merci c'est déjà mieux.

Pour améliorer le reste, par contre...

Bonsoir leg2027

Qu'entends-tu par là?

C'est étonnant!
Essaies l'exemple de la bibliothèque Single.ino et joues avec les paramètres

//#define HIGH_SPEED
//#define HIGH_ACCURACY

Cordialement
jpbbricole

Je voulais dire pour améliorer la précision.

J'utilise bien le code single (modifié) en mode HIGH_ACCURACY.
Après j'ai peut être fait une erreur dans le code:



#include <Wire.h>
#include <VL53L0X.h>

VL53L0X sensor;


//#define LONG_RANGE --------- J'ai aussi testé avec---------


// Uncomment ONE of these two lines to get
// - higher speed at the cost of lower accuracy OR
// - higher accuracy at the cost of lower speed

//#define HIGH_SPEED
#define HIGH_ACCURACY


void setup()
{
  delay(2000);
  Serial.begin(9600);
  Wire.begin();
  
  sensor.setTimeout(500);
  if (!sensor.init())
  {
    Serial.println("Failed to detect and initialize sensor!");
    while (1) {}
  }

#if defined LONG_RANGE
  // lower the return signal rate limit (default is 0.25 MCPS)
  sensor.setSignalRateLimit(0.1);
  // increase laser pulse periods (defaults are 14 and 10 PCLKs)
  sensor.setVcselPulsePeriod(VL53L0X::VcselPeriodPreRange, 18);
  sensor.setVcselPulsePeriod(VL53L0X::VcselPeriodFinalRange, 14);
#endif

#if defined HIGH_SPEED
  // reduce timing budget to 20 ms (default is about 33 ms)
  sensor.setMeasurementTimingBudget(20000);
#elif defined HIGH_ACCURACY
  // increase timing budget to 200 ms
  sensor.setMeasurementTimingBudget(200000);
#endif
}

void loop()
{
  Serial.print(sensor.readRangeSingleMillimeters());
  if (sensor.timeoutOccurred()) { Serial.print(" TIMEOUT"); }

  Serial.println();
}

Quelqu'un a-t-il une solution pour moi ?

Le module fonctionne toujours très mal: à 10cm il me met une valeur entre 143et160mm. Je ne comprends vraiment pas.

Quel type de support. Les performances sont données pour un support blanc ou gris avec un écart de performances entre les deux.
La source émet à 940nm suivant le matériaux il pourrait y avoir des pertes.

Question idiote, tu as bien retiré le film de protection sur le capteur?
Pas de vitre ou autre obstacle entre le capteur et l'extérieur?

J'ai utilisé un support noir. J'ai aussi testé avec un blanc aucun changement.

Il n'y en avait pas, j'ai bien vérifié.

Non

Bonjour leg2027

Il semblerai que le VL53L1X soit plus précis que le VL53L0X mais je n'ai pas trouvé de tableau comparatif.

Cordialement
jpbbricole

hello
sur le site de nos amis chinois,

Le VL53L1X est un capteur de portée de pointe, temps de vol (ToF), améliorant le ST FlightSense™Famille de produits. C'est le capteur ToF miniature le plus rapide du marché avec une portée précise jusqu'à 4 m et une fréquence de portée rapide jusqu'à 50Hz
Contrairement aux capteurs IR classiques, le VL53L1X utilise la technologie ToF de dernière génération de ST qui permet une mesure de distance absolue quelle que soit la couleur cible et la réflectivité.
Il est également possible de programmer la taille du ROI sur le réseau de réception, permettant de réduire la FoV du capteur.

Bonsoir

une comparaison des datasheet des deux puces permettrait de situer les différences (portée, reglage de la ROI ('région of intersest'), autres paramètres...

https://www.google.com/url?sa=t&rct=j&q=&esrc=s&source=web&cd=&ved=2ahUKEwi4s5nS2cTxAhXK6eAKHR1oCPsQFjABegQIBxAD&url=https%3A%2F%2Fwww.st.com%2Fresource%2Fen%2Fdatasheet%2Fvl53l1x.pdf&usg=AOvVaw3ItzXo7IGHvTtN4H_-E8oN

voir overview et product selector pour une comparaison basique et les datasheets pour les détails.

D'après ce que j'ai pu lire le vl53l1x a une précision de 0.15 à 1% contre 3% avec le vl53l0x.

Mais 3% de précision ne font quand même pas plusieurs centimètres d'erreurs à une mesure à 10 ou 15cm.

Je viens de ressortir mon GY-VL53L0XV2.
Avec la librairie Adafruit et le programme vl53l0x des exemples livrés avecla librairie.
Sur une surface blanche à 150mm et perpendiculaire à l'axe du capteur.

  • J'ai un offset d'environ 25 mm.
  • Et un bruit de mesure de l'ordre de +/- 2%
    Si j'éloigne la "cible" à 300mm
  • Je retrouve le même offset
  • Et un bruit de mesure de l'ordre de +/- 3%

A noter, le bruit de mesure augmente si la "cible" n'est pas perpendiculaire à l'axe.

Je ne m'attendais pas à ça quand j'ai acheté le capteur :cry:. Je pensais que la précision était de 1 mm. D'après la description:

The sensor can report distances of up to 2 m (6.6 ft) with 1 mm resolution



Je ne suis pas sur de comprendre ce que veux dire "bruit de mesure" ici.

Ce n'est pas dans la datasheet du composant
Il y a un chapitre performances au §5.

Au passage tu mélanges résolution et précision

This topic was automatically closed 120 days after the last reply. New replies are no longer allowed.