Не удалось загрузить VL53L0X: Ошибка VL53L0X: -6
Я использую датчик VL53L0X в своем проекте. Он работал нормально, когда внезапно начал показывать ошибку "Не удалось загрузиться". Я попытался отладить, но безрезультатно. Я запустил скетч сканера I2C, и он обнаружил датчик на 0x29.
Я получаю следующую ошибку -
23:38:27.797 -> Adafruit VL53L0X test
23:38:27.830 -> VL53L0X Info:
23:38:27.830 -> Device Name: VL53L0X ES1 or later, Type: VL53L0X, ID: VL53L0CBV0DH/1$1
23:38:27.830 -> Rev Major: 1, Minor: 1
23:38:27.864 -> VL53L0X: StaticInit
23:38:27.932 -> VL53L0X: PerformRefSpadManagement
23:38:27.932 -> refSpadCount = 2226323456, isApertureSpads = 92
23:38:27.932 -> VL53L0X Error: -6
23:38:27.932 -> Failed to boot VL53L0X
Это код, который я использовал (это пример кода, в котором только 0x29 и true передаются в функции begin для подробного вывода):
#include "Adafruit_VL53L0X.h"
Adafruit_VL53L0X lox = Adafruit_VL53L0X();
void setup() {
Serial.begin(115200);
// подождать, пока откроется последовательный порт для собственных USB-устройств
while (! Serial) {
delay(1);
}
Serial.println("Adafruit VL53L0X test");
if (!lox.begin(0x29,true)) {
Serial.println(F("Failed to boot VL53L0X"));
while(1);
}
// мощность
Serial.println(F("VL53L0X API Simple Ranging example\n\n"));
}
void loop() {
VL53L0X_RangingMeasurementData_t measure;
Serial.print("Reading a measurement... ");
lox.rangingTest(&measure, false); // введите "true", чтобы получить распечатку отладочных данных!
if (measure.RangeStatus != 4) { // Сбои фазы имеют неверные данные
Serial.print("Distance (mm): "); Serial.println(measure.RangeMilliMeter);
} else {
Serial.println(" out of range ");
}
delay(100);
}
Я использую Arduino nano - ниже приведены соединения
ARDUINO->VL53L0X
3v3->Vin
GND->GND
A4->ПДД>
A5->SCL
Я перепроверил подключение и напряжения, которые датчик принимает 3 в3 и gnd.
Мне нужна помощь с этим как можно скорее.
Заранее спасибо :)
@Vineet Tambe, 👍1
Обсуждение4 ответа
Из документации по API VL53L0X Ошибка отображается как
#define VL53L0X_ERROR_RANGE_ERROR ((VL53L0X_Error) -6)
Не очень полезно, но, может быть, у вас все еще установлена заводская защитная крышка?
Кроме того, ИМХО библиотека Adafruit немного глючит. Теперь я использую библиотеку Pololu (помимо прочего, библиотека Pololu позволяет использовать аппаратные шины I2C WIRE1, WIRE2 и WIRE3.
Обновление от 27 сентября 2020 года: На форуме технической поддержки Adafruit я провел поиск "ОШИБКА VL53L0X". В нескольких потоках упоминались проблемы с ОШИБКОЙ -6, но большинство из них были вызваны плохим или отсутствующим припоем на выводах заголовка VL53L0X. Может быть, это ваша проблема?
Я снял заводскую защитную крышку. Я понимаю, что сообщение об ошибке не очень полезно, я не знаю, что еще я могу из него сделать. Я постараюсь использовать библиотеку Pololu, как было предложено., @Vineet Tambe
Поскольку это вроде как работало раньше, я предполагаю, что оно подключено правильно. Однако вы не упомянули подтягивающие резисторы на шине I2C. Если их там нет или они слабы, это может привести к тому, что вы видите.
Я попробовал тот же код с другим датчиком, без каких-либо подтягиваний, он отлично работает с ним. Однако именно этот конкретный датчик выдает ошибку, которую я не могу устранить., @Vineet Tambe
IIRC, модули VL53L0X уже имеют 10K подтягиваний на SDA/SCL - нет необходимости добавлять, @user3765883
Я столкнулся с той же проблемой, теперь моя проблема решена здесь.
Эта проблема в основном возникает, когда мы подключаем источник питания к микроконтроллеру, на выходе которого есть конденсаторы. Повышающееся напряжение этого типа источника питания выглядит так, как вы можете видеть на изображении:
Если вы посмотрите на технические характеристики микроконтроллеров, вы увидите, что большинство микроконтроллеров могут работать при напряжении от 1,8 В до 5,5 В. Здесь повышение напряжения происходит медленно; микроконтроллер начинает работать при 1,8 В и посылает сигналы на VL53L0x, но датчик не работает при 1,8 В.
Итак, что вам нужно сделать, это добавить некоторую задержку (сначала источник питания стабилизируется, а затем начнется связь с датчиком) в свой код, чтобы избежать этой проблемы. Не добавляйте задержку в цикл; это повлияет на работу микроконтроллера, где именно вам нужно добавить задержку. Изменения кода приведены в видео ниже:
https://youtu.be/QEiNbTB8nNE
или вы просто можете поискать на Youtube: Как исправить ошибку VL53L0X
Я нашел новое возможное решение этой проблемы, так как потратил на ее решение 2 дня, я чувствую, что мне нужно поделиться им с вами, ребята. Я также мог найти датчик с помощью сканера i2C, но не смог его инициализировать.
Вот краткое изложение решений:
- Проблема с питанием 1: добавьте задержку в 50 мс в функцию настройки (очевидно, до ввода датчика). Таким образом, у Vin будет достаточно времени, чтобы достичь уровня, необходимого датчику, как описано в предыдущем сообщении (ocrdu).
- Проблема питания 2: Этот датчик требует больше, чем другие, обычно вывод 5 В на вашей плате делает это лучше, чем 3 В 3. Если одновременно подключено много датчиков, отключите их все, чтобы проверить, используют ли они питание, необходимое для vl53l0x.
- Проблема питания 3: Если вы питаете его от внешнего источника, объедините его с платой, не забывайте об этом
- Слабые сигналы SCL - SDA: добавьте подтяжку (2k2 - 4k7 от каждого канала до vin), таким образом, сигналы будут работать лучше, это может быть проблемой
- Проблема пайки: Убедитесь, что каждый вывод заголовка хорошо припаян. Я обнаружил много случаев плохой пайки. Крошечные подушечки не помогают. Рекомендуется проверить непрерывность с помощью мультиметра между коллекторами и колодками, к которым они должны быть подключены
- XSHUT не поднялся: моя проблема заключалась в том, что плата доставки AZDelivery говорит, что в XSHUT есть подтягивание (которое работает как включение). Но это может быть либо ложным, либо плохо реализованным. Xshut должен быть высоким, 3 в3/5В, иначе датчик не будет работать. Соедините XSHUT с Vin или выполните подтягивание, и проблема будет решена.
- Я использую библиотеку adafruit 1.1.2, и она работает с подтягиваниями, без подтягиваний, подключена к 5 В, а также подключена к 3 В3, с задержка 50 мс и подключение XSHUT к high (3V3 / Vin)
- Моя плата vl53l0x от AZDelivery (5€ amazon)
- Я протестировал датчик с помощью arduino nano и ESP32, оба работают нормально
Надеюсь, вы, ребята, найдете это полезным <3
[esp32] [датчик] [i2c] [загрузка] [ошибка]
- avrdude ser_open() can't set com-state
- Загрузка Arduino Nano дает ошибку: avrdude: stk500_recv(): programmer is not responding
- Какое максимальное энергопотребление Arduino Nano 3.0?
- Как навсегда изменить скорость передачи данных ESP8266 (12e)?
- Питание светодиодной ленты - Сколько ампер?
- Arduino nano как клавиатура HID
- Как я могу запитать Arduino Nano от батареи LiPo, желательно 3,7 В
- В чем разница между библиотеками Software Serial? Какая из них совместима с Arduino Nano?
каково фактическое описание ошибки? ...
Serial.println(F("Не удалось загрузить VL53L0X"));
с таким же успехом может бытьSerial.println(F("небо голубое"));
, @jsotolaЭто все сообщение об ошибке, не могли бы вы сообщить мне, что вы ищете?, @Vineet Tambe