Дальномер VL6180 не корректные показания
- Войдите на сайт для отправки комментариев
Всем доброго времени суток!
Пришел сюда со следующей проблемой: имеется ардуино нано и 2 дальномера VL6180. Сделан делитель напряжения на 2,8 В для запитки датчика. Проверял на всех библиотеках, которые доступны в библиотеках (polulo, SparkFun и др.) из ардуино ИДЕ на тестовых программах. Результат измерения получился одинаково неожидаемым: очень большой шум (до 20 мм) и не линейная зависимость от препятствий. При реальных 25 мм показывает "шумный" ноль при приближении на более близкие расстояния показания увеличиваются, при отдалении от этой точки также увеличиваются. Более/менее измеряет расстояние от 90 до 140 мм. Такое поведение наблюдается на обоих подопытных. При разных условиях освещения и с разными предметами большими и маленькими, черными и белыми
Вот такие применялись модули.
модули были куплены в России.
Может кто сталкивался с подобной проблемой и имеет решение?
Схема включения и скетч есть?
Нужна Ваша схема, а не из документации. Например, я не вижу на приведённой схеме, где
Сделан делитель напряжения на 2,8 В для запитки датчика.
а подозреваю, что проблема именно в нём.
это схема моя, вернее нашего конструктора. справа 5В преобразуются в 2,7 на транзисторах.
напряжение стабильное без провалов и прочего. По i2c данные считываются с любых регистров без проблем.
Напряжение питания датчика по даташиту от 2,6 до 3В
справа 5В преобразуются в 2,7 на транзисторах.
Да, нет, на транзисторах там преобразователь уровней. А источник напряжения 2.7В у Вас внешний (горизонтальная палочка в самом верхнем правом углу схемы). Вот и непонятно что у Вас там и как.
да, вы правы! Честно говоря я в схемах не силен, больше по программированию. Вот та часть схемы которая отвечает за питание.
точно помню, что этот датчик обсуждался год назад на этом форуме. Но найти топик не смог - давно было. Смутно помню, что обсуждение свелось к оптическому фильтру, линзе и термостабилизации. Но подробности напроч забыл. Может кто вспомнит чего подробнее.
да, вы правы! Честно говоря я в схемах не силен, больше по программированию. Вот та часть схемы которая отвечает за питание.
При этих номиналах R32 и R35 напряжение на выходе будет около 5 вольт без нагрузки; под нагрузкой будет падать без стабилизации.
http://cxem.net/calc/tl431_calc.php
http://cxem.net/calc/lm317_calc.php
я пытлася на этом форуме найти темы связанные с этим датчиком, но нашел только ту в которой хотели завязать на одну шину несколько
По поводу напряжения, я написал еще в самом начале, что на вход датчика подается номинальные 2.8 В. проверялось мультиметром и осцилографом на предмет шумов. Схема приведена с этапа начала прототипирования, в дальнейшем резисторы были изменены на подходящие, которые обеспечивают 2.8 В, а схему перерисовать времени не было.
Еще раз повторю, на всякий случай: напряжение на датчик приходит 2,8 вольт
Общение по шине I2C есть. Сомневаюсь, что датчик который должен работать от 2,6 до 3 В смог бы долго отдавать по шине I2C данные, при напряжении 5 В
Информация по поводу оптического фильтра - интересна, если кто помнит подробности напишите, пожалуйста.
Тему закрываю.
Купил у другого поставщика по цене почти в 4 раз дешевле (350 р) рабочий модуль. Те два вернули (цена 1500р каждого).
Всем, кто принимал участие, спасибо!
А какая точность измерения?
Полагаю, что можно добиться даташитовской точности, но, вероятно, нужны оптические фильтры о которых упоминали выше.
В моей задаче точность особой роли не играет, нужна линейность.
Могу сказать только, что датчик чувствителен к границам сред и к цвету поверхности до которого измеряет расстояние (к примеру, у меня датчик измеряет уровень в трубке из оргстекла с водой до пластикового белового поплавка).
К слову, пробовал использовать калибровку как указано в даташите, чтобы получить приемлемые коэффициенты, но полученные коэффициенты особой точности не дали.
В итоге сделал свою калибровку и полученные данные от датчика значения преобразую, используя map.
Процесс каллибровки следующий:
для минимума: устанавливаю для поплавка с водой минимум и в ручную запускаю калибровку, полученное значение записываю в EEPROM
для максимума: устанавливаю для поплавка с водой максимум и в ручную запускаю калибровку, полученное значение записываю в EEPROM
При старте значения считываются из EEPROM и в дальнейшем пересчитываются с помощью функции map.
Как-то так...