Mauvais résultats VL53L0X

Bonjour,

J'essaye d'utiliser un VL53L0X (GY-VL53L0XV2V).

Le module semble ne pas fonctionner et le moniteur série affiche "Failed to detect and initialize sensor!".
J'ai testé avec différents codes et 2 librairies différentes , ressouder le composant, mais rien n'y fait.

Quand je fais un scan I2C, le module est détecté à l'adresse 0x29.

Un des codes que j'ai utilisé:

/* This example shows how to get single-shot range
 measurements from the VL53L0X. The sensor can optionally be
 configured with different ranging profiles, as described in
 the VL53L0X API user manual, to get better performance for
 a certain application. This code is based on the four
 "SingleRanging" examples in the VL53L0X API.

 The range readings are in units of mm. */

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

VL53L0X sensor;


// Uncomment this line to use long range mode. This
// increases the sensitivity of the sensor and extends its
// potential range, but increases the likelihood of getting
// an inaccurate reading because of reflections from objects
// other than the intended target. It works best in dark
// conditions.

//#define LONG_RANGE


// 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()
{
  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();
}

Connections:
VCC -> 5v
GND -> GND
SDA -> A4
SCL -> A5

Pouvez vous m'aider ?

Bonsoir leg2027

J'ai fait l'essai, même problème. J'ai vu cette vidéo qui disait que le TOF était très sensible à l'alimentation. J'ai connecté mon TOF directement sur mon UNO et tout est OK!!!
J'étais connecté sur mon breadboard.

Cordialement
jpbbricole

Mon module est bien relié au 5v de l'arduino et j'ai ajouté le delay mais ça ne change rien.

Bonjour leg27

Je vais refaire l'essai en mettant une capa de 10 uF, par exemple, sur l'alimentation.

Cordialement
jpbbricole

Bonjour leg27

Je n'arrive pas à reproduire l'erreur :thinking:
Essaies de mettre une capa sur l'alimentation de ton module.

Cordialement
jpbbricole

Je n'ai jamais eu de problème avec un module équivalent. Sans l'ajout d'aucune capa extérieure.
J'utilise la librairie d'Adafruit. J'ai mis le lien mais il me semble qu'elle est disponible dans le gestionnaire de librairies.

Merci d'avoir testé pour moi.

Malheureusement, même après avoir mis un condensateur de 10µF ça fait pareil, le module est bien détecté par scan I2C mais ne marche toujours pas.

J'ai utilisé un condensateur 16 V, 10µF, RSS de récupération; je ne sais pas s'il faut mettre un comme ça.

J'ai aussi testé avec la librairie Adafruit, pareil...

Je ne sais pas quoi faire du coup.
Pensez-vous que je dois tester avec d'autres condensateurs, vérifier avec d'autres codes ?
Peut-être que le module a un problème ?

Bonjour

pour information : ce module 6 broches n'est pas totalement dépourvu de découplage sur son alimentation , tant côté 5V que côté 2,8V
Dans mon cas cela a suffi (librairie Adafruit utilisée)
53l0x_SCH

En principe il n'est pas indispensable de gérer XSHUT une résistance de pull up étant présente sur le circuit .

Vérifier la qualité du câblage, des soudures des broches sur le module, ainsi que les soudures des composants sur le module.

Excusez-moi mais je n'ai pas bien compris ce qu'il faut faire.

Avec l'exemple de la librairie (vl53l0x.ino)?

Tu dis avoir testé plusieurs librairies. Regarde dans le compte-rendu de compilation qu'il utilise bien la librairie que tu veux tester.

Oui avec j'utilise bien cet exemple.

Cette fois le vl53l0x semble être détecté, mais les résultats sont complètement incohérents.

La librairie figure dedans:

C:\Program Files (x86)\Arduino\arduino-builder -dump-prefs -logger=machine -hardware C:\Program Files (x86)\Arduino\hardware -hardware C:\Users\matouki\AppData\Local\Arduino15\packages -tools C:\Program Files (x86)\Arduino\tools-builder -tools C:\Program Files (x86)\Arduino\hardware\tools\avr -tools C:\Users\matouki\AppData\Local\Arduino15\packages -built-in-libraries C:\Program Files (x86)\Arduino\libraries -libraries C:\Users\matouki\Documents\Arduino\libraries -fqbn=arduino:avr:uno -vid-pid=0X2341_0X0043 -ide-version=10809 -build-path C:\Users\matouki\AppData\Local\Temp\arduino_build_642607 -warnings=none -build-cache C:\Users\matouki\AppData\Local\Temp\arduino_cache_723206 -prefs=build.warn_data_percentage=75 -prefs=runtime.tools.avr-gcc.path=C:\Program Files (x86)\Arduino\hardware\tools\avr -prefs=runtime.tools.avr-gcc-5.4.0-atmel3.6.1-arduino2.path=C:\Program Files (x86)\Arduino\hardware\tools\avr -prefs=runtime.tools.arduinoOTA.path=C:\Program Files (x86)\Arduino\hardware\tools\avr -prefs=runtime.tools.arduinoOTA-1.2.1.path=C:\Program Files (x86)\Arduino\hardware\tools\avr -prefs=runtime.tools.avrdude.path=C:\Program Files (x86)\Arduino\hardware\tools\avr -prefs=runtime.tools.avrdude-6.3.0-arduino14.path=C:\Program Files (x86)\Arduino\hardware\tools\avr -verbose C:\Users\matouki\Documents\Arduino\libraries\Adafruit_VL53L0X\examples\vl53l0x\vl53l0x.ino
C:\Program Files (x86)\Arduino\arduino-builder -compile -logger=machine -hardware C:\Program Files (x86)\Arduino\hardware -hardware C:\Users\matouki\AppData\Local\Arduino15\packages -tools C:\Program Files (x86)\Arduino\tools-builder -tools C:\Program Files (x86)\Arduino\hardware\tools\avr -tools C:\Users\matouki\AppData\Local\Arduino15\packages -built-in-libraries C:\Program Files (x86)\Arduino\libraries -libraries C:\Users\matouki\Documents\Arduino\libraries -fqbn=arduino:avr:uno -vid-pid=0X2341_0X0043 -ide-version=10809 -build-path C:\Users\matouki\AppData\Local\Temp\arduino_build_642607 -warnings=none -build-cache C:\Users\matouki\AppData\Local\Temp\arduino_cache_723206 -prefs=build.warn_data_percentage=75 -prefs=runtime.tools.avr-gcc.path=C:\Program Files (x86)\Arduino\hardware\tools\avr -prefs=runtime.tools.avr-gcc-5.4.0-atmel3.6.1-arduino2.path=C:\Program Files (x86)\Arduino\hardware\tools\avr -prefs=runtime.tools.arduinoOTA.path=C:\Program Files (x86)\Arduino\hardware\tools\avr -prefs=runtime.tools.arduinoOTA-1.2.1.path=C:\Program Files (x86)\Arduino\hardware\tools\avr -prefs=runtime.tools.avrdude.path=C:\Program Files (x86)\Arduino\hardware\tools\avr -prefs=runtime.tools.avrdude-6.3.0-arduino14.path=C:\Program Files (x86)\Arduino\hardware\tools\avr -verbose C:\Users\matouki\Documents\Arduino\libraries\Adafruit_VL53L0X\examples\vl53l0x\vl53l0x.ino
Using board 'uno' from platform in folder: C:\Program Files (x86)\Arduino\hardware\arduino\avr
Using core 'arduino' from platform in folder: C:\Program Files (x86)\Arduino\hardware\arduino\avr
Detecting libraries used...
"C:\\Program Files (x86)\\Arduino\\hardware\\tools\\avr/bin/avr-g++" -c -g -Os -w -std=gnu++11 -fpermissive -fno-exceptions -ffunction-sections -fdata-sections -fno-threadsafe-statics -Wno-error=narrowing -flto -w -x c++ -E -CC -mmcu=atmega328p -DF_CPU=16000000L -DARDUINO=10809 -DARDUINO_AVR_UNO -DARDUINO_ARCH_AVR "-IC:\\Program Files (x86)\\Arduino\\hardware\\arduino\\avr\\cores\\arduino" "-IC:\\Program Files (x86)\\Arduino\\hardware\\arduino\\avr\\variants\\standard" "C:\\Users\\matouki\\AppData\\Local\\Temp\\arduino_build_642607\\sketch\\vl53l0x.ino.cpp" -o nul
"C:\\Program Files (x86)\\Arduino\\hardware\\tools\\avr/bin/avr-g++" -c -g -Os -w -std=gnu++11 -fpermissive -fno-exceptions -ffunction-sections -fdata-sections -fno-threadsafe-statics -Wno-error=narrowing -flto -w -x c++ -E -CC -mmcu=atmega328p -DF_CPU=16000000L -DARDUINO=10809 -DARDUINO_AVR_UNO -DARDUINO_ARCH_AVR "-IC:\\Program Files (x86)\\Arduino\\hardware\\arduino\\avr\\cores\\arduino" "-IC:\\Program Files (x86)\\Arduino\\hardware\\arduino\\avr\\variants\\standard" "-IC:\\Users\\matouki\\Documents\\Arduino\\libraries\\Adafruit_VL53L0X\\src" "C:\\Users\\matouki\\AppData\\Local\\Temp\\arduino_build_642607\\sketch\\vl53l0x.ino.cpp" -o nul
"C:\\Program Files (x86)\\Arduino\\hardware\\tools\\avr/bin/avr-g++" -c -g -Os -w -std=gnu++11 -fpermissive -fno-exceptions -ffunction-sections -fdata-sections -fno-threadsafe-statics -Wno-error=narrowing -flto -w -x c++ -E -CC -mmcu=atmega328p -DF_CPU=16000000L -DARDUINO=10809 -DARDUINO_AVR_UNO -DARDUINO_ARCH_AVR "-IC:\\Program Files (x86)\\Arduino\\hardware\\arduino\\avr\\cores\\arduino" "-IC:\\Program Files (x86)\\Arduino\\hardware\\arduino\\avr\\variants\\standard" "-IC:\\Users\\matouki\\Documents\\Arduino\\libraries\\Adafruit_VL53L0X\\src" "-IC:\\Program Files (x86)\\Arduino\\hardware\\arduino\\avr\\libraries\\Wire\\src" "C:\\Users\\matouki\\AppData\\Local\\Temp\\arduino_build_642607\\sketch\\vl53l0x.ino.cpp" -o nul
Using cached library dependencies for file: C:\Users\matouki\Documents\Arduino\libraries\Adafruit_VL53L0X\src\Adafruit_VL53L0X.cpp
Using cached library dependencies for file: C:\Users\matouki\Documents\Arduino\libraries\Adafruit_VL53L0X\src\core\src\vl53l0x_api.cpp
Using cached library dependencies for file: C:\Users\matouki\Documents\Arduino\libraries\Adafruit_VL53L0X\src\core\src\vl53l0x_api_calibration.cpp
Using cached library dependencies for file: C:\Users\matouki\Documents\Arduino\libraries\Adafruit_VL53L0X\src\core\src\vl53l0x_api_core.cpp
Using cached library dependencies for file: C:\Users\matouki\Documents\Arduino\libraries\Adafruit_VL53L0X\src\core\src\vl53l0x_api_ranging.cpp
Using cached library dependencies for file: C:\Users\matouki\Documents\Arduino\libraries\Adafruit_VL53L0X\src\core\src\vl53l0x_api_strings.cpp
Using cached library dependencies for file: C:\Users\matouki\Documents\Arduino\libraries\Adafruit_VL53L0X\src\platform\src\vl53l0x_i2c_comms.cpp
Using cached library dependencies for file: C:\Users\matouki\Documents\Arduino\libraries\Adafruit_VL53L0X\src\platform\src\vl53l0x_platform.cpp
Using cached library dependencies for file: C:\Program Files (x86)\Arduino\hardware\arduino\avr\libraries\Wire\src\Wire.cpp
Using cached library dependencies for file: C:\Program Files (x86)\Arduino\hardware\arduino\avr\libraries\Wire\src\utility\twi.c
Generating function prototypes...
"C:\\Program Files (x86)\\Arduino\\hardware\\tools\\avr/bin/avr-g++" -c -g -Os -w -std=gnu++11 -fpermissive -fno-exceptions -ffunction-sections -fdata-sections -fno-threadsafe-statics -Wno-error=narrowing -flto -w -x c++ -E -CC -mmcu=atmega328p -DF_CPU=16000000L -DARDUINO=10809 -DARDUINO_AVR_UNO -DARDUINO_ARCH_AVR "-IC:\\Program Files (x86)\\Arduino\\hardware\\arduino\\avr\\cores\\arduino" "-IC:\\Program Files (x86)\\Arduino\\hardware\\arduino\\avr\\variants\\standard" "-IC:\\Users\\matouki\\Documents\\Arduino\\libraries\\Adafruit_VL53L0X\\src" "-IC:\\Program Files (x86)\\Arduino\\hardware\\arduino\\avr\\libraries\\Wire\\src" "C:\\Users\\matouki\\AppData\\Local\\Temp\\arduino_build_642607\\sketch\\vl53l0x.ino.cpp" -o "C:\\Users\\matouki\\AppData\\Local\\Temp\\arduino_build_642607\\preproc\\ctags_target_for_gcc_minus_e.cpp"
"C:\\Program Files (x86)\\Arduino\\tools-builder\\ctags\\5.8-arduino11/ctags" -u --language-force=c++ -f - --c++-kinds=svpf --fields=KSTtzns --line-directives "C:\\Users\\matouki\\AppData\\Local\\Temp\\arduino_build_642607\\preproc\\ctags_target_for_gcc_minus_e.cpp"
Compilation du croquis...
"C:\\Program Files (x86)\\Arduino\\hardware\\tools\\avr/bin/avr-g++" -c -g -Os -w -std=gnu++11 -fpermissive -fno-exceptions -ffunction-sections -fdata-sections -fno-threadsafe-statics -Wno-error=narrowing -MMD -flto -mmcu=atmega328p -DF_CPU=16000000L -DARDUINO=10809 -DARDUINO_AVR_UNO -DARDUINO_ARCH_AVR "-IC:\\Program Files (x86)\\Arduino\\hardware\\arduino\\avr\\cores\\arduino" "-IC:\\Program Files (x86)\\Arduino\\hardware\\arduino\\avr\\variants\\standard" "-IC:\\Users\\matouki\\Documents\\Arduino\\libraries\\Adafruit_VL53L0X\\src" "-IC:\\Program Files (x86)\\Arduino\\hardware\\arduino\\avr\\libraries\\Wire\\src" "C:\\Users\\matouki\\AppData\\Local\\Temp\\arduino_build_642607\\sketch\\vl53l0x.ino.cpp" -o "C:\\Users\\matouki\\AppData\\Local\\Temp\\arduino_build_642607\\sketch\\vl53l0x.ino.cpp.o"
Compiling libraries...
Compiling library "Adafruit_VL53L0X"
Utilisation du fichier déjà compilé : C:\Users\matouki\AppData\Local\Temp\arduino_build_642607\libraries\Adafruit_VL53L0X\Adafruit_VL53L0X.cpp.o
Utilisation du fichier déjà compilé : C:\Users\matouki\AppData\Local\Temp\arduino_build_642607\libraries\Adafruit_VL53L0X\core\src\vl53l0x_api.cpp.o
Utilisation du fichier déjà compilé : C:\Users\matouki\AppData\Local\Temp\arduino_build_642607\libraries\Adafruit_VL53L0X\core\src\vl53l0x_api_calibration.cpp.o
Utilisation du fichier déjà compilé : C:\Users\matouki\AppData\Local\Temp\arduino_build_642607\libraries\Adafruit_VL53L0X\core\src\vl53l0x_api_core.cpp.o
Utilisation du fichier déjà compilé : C:\Users\matouki\AppData\Local\Temp\arduino_build_642607\libraries\Adafruit_VL53L0X\core\src\vl53l0x_api_strings.cpp.o
Utilisation du fichier déjà compilé : C:\Users\matouki\AppData\Local\Temp\arduino_build_642607\libraries\Adafruit_VL53L0X\core\src\vl53l0x_api_ranging.cpp.o
Utilisation du fichier déjà compilé : C:\Users\matouki\AppData\Local\Temp\arduino_build_642607\libraries\Adafruit_VL53L0X\platform\src\vl53l0x_i2c_comms.cpp.o
Utilisation du fichier déjà compilé : C:\Users\matouki\AppData\Local\Temp\arduino_build_642607\libraries\Adafruit_VL53L0X\platform\src\vl53l0x_platform.cpp.o
Compiling library "Wire"
Utilisation du fichier déjà compilé : C:\Users\matouki\AppData\Local\Temp\arduino_build_642607\libraries\Wire\Wire.cpp.o
Utilisation du fichier déjà compilé : C:\Users\matouki\AppData\Local\Temp\arduino_build_642607\libraries\Wire\utility\twi.c.o
Compiling core...
Using precompiled core: C:\Users\matouki\AppData\Local\Temp\arduino_cache_723206\core\core_arduino_avr_uno_0c812875ac70eb4a9b385d8fb077f54c.a
Linking everything together...
"C:\\Program Files (x86)\\Arduino\\hardware\\tools\\avr/bin/avr-gcc" -w -Os -g -flto -fuse-linker-plugin -Wl,--gc-sections -mmcu=atmega328p -o "C:\\Users\\matouki\\AppData\\Local\\Temp\\arduino_build_642607/vl53l0x.ino.elf" "C:\\Users\\matouki\\AppData\\Local\\Temp\\arduino_build_642607\\sketch\\vl53l0x.ino.cpp.o" "C:\\Users\\matouki\\AppData\\Local\\Temp\\arduino_build_642607\\libraries\\Adafruit_VL53L0X\\Adafruit_VL53L0X.cpp.o" "C:\\Users\\matouki\\AppData\\Local\\Temp\\arduino_build_642607\\libraries\\Adafruit_VL53L0X\\core\\src\\vl53l0x_api.cpp.o" "C:\\Users\\matouki\\AppData\\Local\\Temp\\arduino_build_642607\\libraries\\Adafruit_VL53L0X\\core\\src\\vl53l0x_api_calibration.cpp.o" "C:\\Users\\matouki\\AppData\\Local\\Temp\\arduino_build_642607\\libraries\\Adafruit_VL53L0X\\core\\src\\vl53l0x_api_core.cpp.o" "C:\\Users\\matouki\\AppData\\Local\\Temp\\arduino_build_642607\\libraries\\Adafruit_VL53L0X\\core\\src\\vl53l0x_api_ranging.cpp.o" "C:\\Users\\matouki\\AppData\\Local\\Temp\\arduino_build_642607\\libraries\\Adafruit_VL53L0X\\core\\src\\vl53l0x_api_strings.cpp.o" "C:\\Users\\matouki\\AppData\\Local\\Temp\\arduino_build_642607\\libraries\\Adafruit_VL53L0X\\platform\\src\\vl53l0x_i2c_comms.cpp.o" "C:\\Users\\matouki\\AppData\\Local\\Temp\\arduino_build_642607\\libraries\\Adafruit_VL53L0X\\platform\\src\\vl53l0x_platform.cpp.o" "C:\\Users\\matouki\\AppData\\Local\\Temp\\arduino_build_642607\\libraries\\Wire\\Wire.cpp.o" "C:\\Users\\matouki\\AppData\\Local\\Temp\\arduino_build_642607\\libraries\\Wire\\utility\\twi.c.o" "C:\\Users\\matouki\\AppData\\Local\\Temp\\arduino_build_642607/..\\arduino_cache_723206\\core\\core_arduino_avr_uno_0c812875ac70eb4a9b385d8fb077f54c.a" "-LC:\\Users\\matouki\\AppData\\Local\\Temp\\arduino_build_642607" -lm
"C:\\Program Files (x86)\\Arduino\\hardware\\tools\\avr/bin/avr-objcopy" -O ihex -j .eeprom --set-section-flags=.eeprom=alloc,load --no-change-warnings --change-section-lma .eeprom=0 "C:\\Users\\matouki\\AppData\\Local\\Temp\\arduino_build_642607/vl53l0x.ino.elf" "C:\\Users\\matouki\\AppData\\Local\\Temp\\arduino_build_642607/vl53l0x.ino.eep"
"C:\\Program Files (x86)\\Arduino\\hardware\\tools\\avr/bin/avr-objcopy" -O ihex -R .eeprom "C:\\Users\\matouki\\AppData\\Local\\Temp\\arduino_build_642607/vl53l0x.ino.elf" "C:\\Users\\matouki\\AppData\\Local\\Temp\\arduino_build_642607/vl53l0x.ino.hex"
Plusieurs bibliothèque trouvées pour "Wire.h"
Utilisé : C:\Program Files (x86)\Arduino\hardware\arduino\avr\libraries\Wire
Non utilisé : C:\Users\matouki\Documents\Arduino\libraries\VlcdsPrj
Non utilisé : C:\Users\matouki\Documents\Arduino\libraries\HundaLCDs_I2C_Ex
Utilisation de la bibliothèque Adafruit_VL53L0X version 1.1.1 dans le dossier: C:\Users\matouki\Documents\Arduino\libraries\Adafruit_VL53L0X 
Utilisation de la bibliothèque Wire version 1.0 dans le dossier: C:\Program Files (x86)\Arduino\hardware\arduino\avr\libraries\Wire 
"C:\\Program Files (x86)\\Arduino\\hardware\\tools\\avr/bin/avr-size" -A "C:\\Users\\matouki\\AppData\\Local\\Temp\\arduino_build_642607/vl53l0x.ino.elf"
Le croquis utilise 17316 octets (53%) de l'espace de stockage de programmes. Le maximum est de 32256 octets.
Les variables globales utilisent 1230 octets (60%) de mémoire dynamique, ce qui laisse 818 octets pour les variables locales. Le maximum est de 2048 octets.

Je ne vois encore moins d'où vient le problème. Avez-vous une idée ?

bonjour
les incohérences consistent en quoi ?

et quelles sont les conditions de test?

Bonjour leg2027

Est tu sûre de ça ?
As-tu fait un scan du bus i2C, assez longuement, pour constater si c'est stable ou pas?

Cordialement
jpbbricole

Ce sont des erreurs de mesure qui ne corresponde pas du tout à la réalité.
Par exemple je place un support (30x20cm environ) à 30 cm au dessus du capteur et le moniteur série renvoie un résultat oscillant vers les 125mm.

Je reviens de faire un scan I2C pendant environ 2 minutes. Le module est bien détecté à intervalle régulier avec le code suivant.

Est ce qu'il y a d'autres tests à réaliser ?

J'ai à nouveau testé aujourd'hui, le résultat est le même avec ou sans condensateur.
Le problème peut-il venir de la bibliothèque ? Je ne pense pas.
Le module est peut être défectueux