====== Датчик приближения и освещённости VL6180 (Troyka-модуль) ====== Используйте [[amp>product/troyka-proximity?utm_source=man&utm_campaign=troyka-proximity&utm_medium=wiki|датчик приближения (Troyka-модуль)]] для определения точного расстояния до объектов — вне зависимости от их физических свойств и условий внешнего освещения. {{ :продукты:troyka-proximity:troyka-proximity_overview.jpg?nolink |}} ===== Видеообзор ===== {{youtube>ptT35nbiKo0?large}} ===== Подключение и настройка ===== Датчик приближения общается с управляющей платой по протоколу [[Видеоуроки:7-i2c-и-processing|I²C/TWI]]. Для удобства работы с модулем используйте [[amp>product/arduino-troyka-shield?utm_source=man&utm_campaign=troyka-proximity&utm_medium=wiki|Troyka Shield]]. {{ :продукты:troyka-proximity:troyka-proximity_scheme_troykashield.png?nolink |}} Или вовсе избавьтесь от проводов с [[amp>product/arduino-troyka-slot-shield?utm_source=man&utm_campaign=troyka-proximity&utm_medium=wiki|Troyka Slot Shield]]. {{ :продукты:troyka-proximity:troyka-proximity_scheme_troykaslotshield.png?nolink |}} ==== Пример работы ==== В качестве примера выведем в Serial порт расстояние до препятствия и освещённость. Для работы ниже приведённого скетча скачайте и установите [[https://github.com/sparkfun/SparkFun_ToF_Range_Finder-VL6180_Arduino_Library|библиотеку для Arduino.]] // библиотека для работы I²C #include // библиотеку для модуля VL6180X #include // адрес датчика приближения по умолчанию #define VL6180X_ADDRESS 0x29 // создаём объект для работы с модулем VL6180x sensor(VL6180X_ADDRESS); void setup() { // открываем монитор Serial-порта Serial.begin(9600); // инициализация I2C Wire.begin(); // небольшая задержка delay(100); // проверяем инициализацию модуля while (sensor.VL6180xInit()) { Serial.println("Failed to initalize"); delay(1000); } // загружаем настройки модуля по умолочнию sensor.VL6180xDefautSettings(); // ждём 1 секунду delay(1000); } void loop() { // получаем и выводим значения расстояния до объекта // и уровень внешнего освещения Serial.print("Light = "); Serial.print(sensor.getAmbientLight(GAIN_1)); Serial.print(" Lx\t\t"); Serial.print("Distance = "); Serial.print(sensor.getDistance() ); Serial.println(" mm"); delay(100); } ===== Элементы платы ===== {{ :продукты:troyka-proximity:troyka-proximity_annotation.png?nolink |}} ==== Датчик приближения VL6180X ==== Датчик VL6180X представляет из себя датчик приближения и освещения, реализованный в миниатюрном корпусе LGA12 размерами 4,8×2,8×1,0 мм. {{ :продукты:troyka-proximity:troyka-proximity_drawing.jpg?nolink |}} Сенсор VL6180X включает в себя лазерный излучатель (IR Emitter), SPAD-приёмник (Range sensor) и датчик освещенности (Ambient Light Sensor), ОЗУ и ПЗУ, микроконтроллер. {{ :продукты:troyka-proximity:troyka-proximity_information.png?nolink |}} === Принцип работы === Лазерный диод создает мощные наносекундные импульсы в ближнем инфракрасном диапазоне, которые отражаются от препятствия и возвращаются на SPAD-приёмник. Зная время, между отправкой и получением отражённого сигнала, получаем расстояние до объекта. В модуль также входит датчик освещенности, данные которого используются для корректировки результатов измерений. Все операции производит внутренний процессор, а обработанные данные измерений доступны по I²C-интерфейсу. VL6180X способен определять расстояние до объектов в диапазоне 0–100 мм с миллиметровой точностью вне зависимости от характеристик объекта, а также измерять освещенность в широком динамическом диапазоне. ==== Troyka контакты ==== === Контакты питания: === * земля (G) — соедините с землёй микроконтроллера; * питание (V) — соедините с питанием микроконтроллера; * прерывание (Q) — пин прерывания. Датчик приближения способен генерировать прерывания при возникновения событий во время исполнения программы. Подключите к одному из пинов микроконтроллера, поддерживающих прерывания. Если вы не используете прерывания в вашей программе, подключать не обязательно. === Контакты шины I²C: === * сигнальный (D) — подключите к ''SDA'' пину микроконтроллера; * сигнальный (С) — подключите к ''SCL'' пину микроконтроллера; * не используется. ==== Обвязка для согласования уровней напряжения ==== Необходима для сопряжения устройств с разными питающими напряжениями. В нашем случае это управляющее устройство Arduino с 5 вольтовой логикой и датчик приближения ''VL6180X'' с 3,3 вольтовой логикой. ===== Принципиальная и монтажная схемы ===== {{:продукты:troyka-proximity:troyka-proximity_schematic.png?direct&350 |}} {{ :продукты:troyka-proximity:troyka-proximity_layout.png?direct&300|}} ===== Характеристики ===== * Напряжение питания: 3,3–5 В * Потребляемый ток: до 300 мкА * Выходной интерфейс: I²C (адрес: 0x29) * Три модуля в одном корпусе: * IR Emitter — излучатель; * Range Sensor — датчик приближения * Ambient Light Sensor — сенсор освещенности * Диапазон измеряемых расстояний: 0–100 мм * Диапазон измерения освещённости: 0,08–100000 лк * Температурный диапазон: −40…+85 °C * Габариты: 25,4×25,4 мм ===== Ресурсы ===== * {{:продукты:troyka-proximity:dt_vl6180x.pdf|Datasheet на VL6180X (EN)}} * {{:продукты:troyka-proximity:an_vl6180x.pdf|Руководство по эксплуатации на VL6180X(EN)}} * {{:продукты:troyka-proximity:electronics_news_vl6180x.pdf|Статья про VL6180X из журнала «Новости электроники»}} * [[https://github.com/sparkfun/SparkFun_ToF_Range_Finder-VL6180_Arduino_Library|Библиотека для Arduino]]