leoniv.diod.club

Дальномер на основе датчика VL6180X

Дальномер реализован на основе датчика VL6180X фирмы STM, использующего технологию FlightSense. Этот датчик построен на основе VCSEL лазера с длиной волны 850 нм и массива лавинных фотодиодов. Используется принцип измерения времени распространения света до объекта и обратно. Диапазон измеряемых расстояний от 10 до 100 мм (реально до 170…180 мм).

Принципиальная схема дальномера доступна по ссылке внизу страницы. Устройство реализовано на основе микроконтроллера ATmega88. Для вывода показаний используется OLED дисплей с диагональю 0.91 дюйма и шиной SPI. Для связи с компьютером имеется порт USB, реализованный на FT232RL. Питание устройства возможно от порта USB или через внешний разъем напряжением 5…12 В.

Для питания всех узлов устройства используется напряжение 3.3 В, которое формируется микросхемой стабилизатора U1 типа LM1117MPX-3.3. На ее вход подается напряжение с разъема питания XP1 через диод VD1, или с разъема USB через полевой транзистор VT1. Этот транзистор открывается, когда отсутствует внешнее питание. В принципе, можно было обойтись просто диодом, транзистор лишь уменьшает падение напряжения, расширяя возможный диапазон входных напряжений вниз. FT232RL питается тоже от стабилизатора 3.3 В, напряжение VBUS через делитель подается на вход сброса.

OLED дисплей имеет разрешение 128x32 и выполнен на контроллере SSD1306. На плате дисплея имеется стабилизатор на 3.3 В, поэтому его можно питать от 5 В. Но все логические сигналы имеют уровни 3.3 В, поэтому нельзя напрямую работать от логики 5 В. Иначе дисплей будет паразитно питаться через защитные диоды. Можно использовать или преобразователи уровня, или делители (которые для исключения потери скорости можно компенсировать дополнительной емкостью таким образом, чтобы емкостной делитель с паразитной емкостью имел бы такой же коэффициент деления, как и резистивный). Чтобы упростить согласование уровней, был выбран вариант питания микроконтроллера и дисплея от 3.3 В, при этом на плате дисплея стабилизатор надо замкнуть перемычкой. Максимальное потребление дисплея составляет 24 мА. При разработке печатной платы надо учесть тот факт, что физический центр изображения не совпадает с центром модуля дисплея.

Датчик VL6180X использовался на готовом модуле типа TOF050C-VL6180X. Модуль имеет следующие выводы:

  1. SHUT - вход аппаратного сброса
  2. INT - выход прерывания
  3. SCL - линия тактирования шины I2C
  4. SDA - линия данных шины I2C
  5. GND - земля
  6. VIN - питание
На плате модуля установлен стабилизатор на 2.8 В, поэтому питание модуля может быть от 3 до 5 В. Линии SDA и SCL проходят через преобразователи уровней (на сборке их двух MOSFET) и притянуты резисторами к VIN. Поэтому их можно напрямую подключать к пинам микроконтроллера, работающего с напряжением питания 3…5 В. Но сигналы INT и SHUT поступают на выводы сразу с микросхемы и имеют уровни 2.8. Они на плате модуля подтянуты резисторами к напряжению 2.8 В. Сигнал INT с трудом согласуется с входом микроконтроллера при питании 5 В, поэтому желательно его питать от 3.3 В. Внутренний подтягивающий резистор на входе следует отключить.

Вход SHUT модуля можн оне использовать, но была замечена неприятная особенность. При малой скорости нарастания питающего напряжения при включении не всегда формировался внутренний сброс. Иногда при чтении STATUS возвращался код 0x11 (17), это ошибка "VCSEL Continuity Test". В норме STATUS возвращает 0x03. Для устранения таких ситуаций надо задействовать вход аппаратного сброса SHUT. Активный уровень этого входа - НИЗКИЙ. На модуле имеется подтягивающий резистор на 2.8 В, поэтому для управления можно задействовать выход с открытым стоком.

В дальномере реализован режим относительных измерений. Для его включения надо нажать кнопку SB1. На дисплее появляется надпись "REL", а из показаний будет вычитаться текущее значение, которое было в момент нажатия кнопки. Повторным нажатием вычитаемое значение можно обновить. Чтобы выйти из режима относительных измерений, надо удерживать кнопку 1 сек.

Дальномер выполнен на печатной плате размером 40.5 x 57 мм. Плата помещается в алюминиевый корпус (доступен на Aliexpress). Модуль дисплея вставляется в разъем и дополнительно крепится двумя стойками с резьбой М2. Модуль датчика закреплен винтами М2 на передней панели корпуса. Он также подключается к плате через разъем, который припаян горизонально.

Для компьютера имеется управляющая программа, которая позволяет считывать показания. Кроме того, она позволяет производить калибровку датчика, задавая значение смещения (Offset). Это значение запоминается в EEPROM микроконтроллера.

Downloads:
fsens_sch.pdf (59 kB) - принципиальная схема дальномера.
fsens_pcb.pdf (27 kB) - печатная плата дальномера.
fsens_pcad.zip (104 kB) - файлы разводки платы (PCAD 2006, gerber).
fsens_source.zip (59 kB) - прошивка, исходный текст (EWAVR, hex).
fsens_soft.zip (479 kB) - управляющий софт (С++ Builder 6, exe).
Ридико Леонид Иванович www.leoniv.diod.club e-mail: wubblick@yahoo.com