====== Датчик приближения и освещённости 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]]