- Датчик-дальномер VL6180X Time-of-Flight (ToF)
- Принципиальная электрическая схема
- Добавление необходимых библиотек для датчика ToF VL6180
- Программирование и объяснение работы
TOF или время полета - это широко используемый метод измерения расстояния до удаленных объектов с помощью различных датчиков измерения расстояния, таких как ультразвуковой датчик. Измерение времени, затрачиваемого частицей, волной или объектом, чтобы пройти расстояние через среду, называется временем пролета (TOF). Затем это измерение можно использовать для расчета скорости или длины пути. Его также можно использовать, чтобы узнать о частицах или свойствах среды, таких как состав или скорость потока. Движущийся объект может быть обнаружен прямо или косвенно.
Ультразвуковые дальномеры - одни из первых устройств, использующих принцип времени пролета. Эти устройства излучают ультразвуковой импульс и измеряют расстояние до твердого материала на основе времени, необходимого волной, чтобы отразиться обратно к излучателю. Мы использовали ультразвуковой датчик во многих наших приложениях для измерения расстояния:
- Измерение расстояния на основе Arduino и ультразвукового датчика
- Измерьте расстояние с помощью ультразвукового датчика Raspberry Pi и HCSR04
- Как измерить расстояние между двумя ультразвуковыми датчиками
Метод времени пролета также можно использовать для оценки подвижности электронов. Фактически он был разработан для измерения тонких пленок с низкой проводимостью, позже он был приспособлен для обычных полупроводников. Этот метод используется для органических полевых транзисторов, а также для структур металл-диэлектрик-металл. При применении лазера или импульса напряжения генерируются избыточные заряды.
Принцип TOF используется для измерения расстояния между датчиком и объектом. Время, необходимое сигналу, чтобы вернуться к датчику после отражения от объекта, измеряется и используется для расчета расстояния. По принципу TOF могут использоваться различные типы сигналов (несущих), такие как звук, свет. Когда TOF используется для определения дальности, он очень эффективен при излучении света, а не звука. По сравнению с ультразвуком он обеспечивает более быстрое считывание, более высокую точность и больший диапазон, при этом сохраняя свой низкий вес, небольшие размеры и характеристики низкого энергопотребления.
В этом руководстве мы будем использовать датчик дальномера VL6180X TOF с Arduino для расчета расстояния между датчиком и объектом. Этот датчик также сообщает значение интенсивности света в люксах.
Датчик-дальномер VL6180X Time-of-Flight (ToF)
VL6180 отличается от других датчиков расстояния тем, что в нем используются точные часы для измерения времени, затрачиваемого светом на отражение от любой поверхности. Это дает VL6180 преимущество перед другими датчиками, поскольку он более точен и невосприимчив к шуму.
VL6180 - это корпус 3-в-1, который включает в себя ИК-излучатель, датчик внешней освещенности и датчик дальности. Он общается через интерфейс I 2 C. Он имеет встроенный регулятор 2,8 В. Таким образом, даже если мы подключим напряжение выше 2,8 В, оно автоматически снизится, не повредив плату. Он измеряет диапазон до 25 см. В нем предусмотрено два программируемых GPIO.
Принципиальная электрическая схема
Здесь ЖК-дисплей Nokia 5110 используется для отображения уровня освещенности и расстояния. ЖК-дисплей Nokia 5110 работает при напряжении 3,3 В, поэтому его нельзя напрямую подключить к цифровым контактам Arduino Nano. Поэтому добавьте резисторы 10 кОм последовательно с сигналами данных, чтобы защитить линии 3,3 В от цифровых контактов 5 В. Узнайте больше об использовании ЖК-дисплея Nokia 5110 с Arduino.
VL6180 Датчик может быть подключен непосредственно к Arduino. Связь между VL6180 и Arduino осуществляется по протоколу I2C. Собственно протокол связи I2C сочетает в себе лучшие возможности SPI и UART. Здесь мы можем подключить несколько подчиненных устройств к одному мастеру, и у нас может быть несколько мастеров, управляющих одним или несколькими подчиненными. Как и связь UART, I2C использует два провода для связи SDA (последовательные данные) и SCL (последовательные часы), линию данных и линию синхронизации.
Принципиальная схема подключения датчика дальномера VL6180 ToF к Arduino показана ниже:
- Подключите вывод RST ЖК-дисплея к выводу 6 Arduino через резистор 10 кОм.
- Подключите вывод CE ЖК-дисплея к выводу 7 Arduino через резистор 10 кОм.
- Подключите вывод постоянного тока ЖК-дисплея к выводу 5 Arduino через резистор 10 кОм.
- Подключите вывод DIN ЖК-дисплея к выводу 4 Arduino через резистор 10 кОм.
- Подключите вывод CLK ЖК-дисплея к выводу 3 Arduino через резистор 10 кОм.
- Подключите вывод VCC ЖК-дисплея к выводу 3,3 В Arduino.
- Подключите контакт GND ЖК-дисплея к GND Arduino.
- Подключите контакт SCL VL6180 к контакту A5 Arduino.
- Подключите вывод SDA VL6180 к выводу A4 Arduino.
- Подключите вывод VCC VL6180 к выводу 5V Arduino.
- Подключите вывод GND VL6180 к выводу GND Arduino.
Добавление необходимых библиотек для датчика ToF VL6180
Для сопряжения датчика VL6180 с Arduino будут использоваться три библиотеки.
1. Adafruit_PCD8544
Adafruit_PCD8544 - это библиотека для монохромных ЖК-дисплеев Nokia 5110. Эти дисплеи используют SPI для связи. Для подключения к ЖК-дисплею требуется четыре или пять контактов. Ссылка для загрузки этой библиотеки приведена ниже:
github.com/adafruit/Adafruit-PCD8544-Nokia-5110-LCD-library/archive/master.zip
2. Adafruit_GFX
Библиотека Adafruit_GFX для Arduino - это основная графическая библиотека для ЖК-дисплеев, обеспечивающая общий синтаксис и набор графических примитивов (точки, линии, круги и т. Д.). Он должен быть соединен с аппаратной библиотекой для каждого устройства отображения, которое мы используем (для обработки функций нижнего уровня). Ссылка для загрузки этой библиотеки приведена ниже:
github.com/adafruit/Adafruit-GFX-Library
3. SparkFun VL6180
SparkFun_VL6180 - это библиотека Arduino с основными функциями датчика VL6180. VL6180 состоит из ИК-излучателя, датчика дальности и датчика внешней освещенности, которые обмениваются данными через интерфейс I2C. Эта библиотека позволяет вам считывать расстояние и световые выходы с датчика и выводить данные через последовательное соединение. Ссылка для загрузки этой библиотеки приведена ниже:
downloads.arduino.cc/libraries/github.com/sparkfun/SparkFun_VL6180_Sensor-1.1.0.zip
Добавьте все библиотеки одну за другой, перейдя в Sketch >> Include library >> Add.ZIP library in Arduino IDE. Затем загрузите библиотеку, которую вы скачали по указанным выше ссылкам.
Иногда вам не нужно добавлять библиотеки проводов и SPI, но если вы получаете сообщение об ошибке, загрузите и добавьте их в свою Arduino IDE.
github.com/PaulStoffregen/SPI
github.com/PaulStoffregen/Wire
Программирование и объяснение работы
Полный код с рабочим видео дан в конце этого руководства, здесь мы объясняем полную программу, чтобы понять работу проекта.
В этой программе большинство частей обрабатываются библиотеками, которые мы добавили, поэтому вам не нужно об этом беспокоиться.
В настройках часть s установить скорость передачи данных как 115200 и инициализировать библиотеку Wire для I2C. Затем проверьте, правильно ли работает датчик VL6180, если он не работает, выведите сообщение об ошибке.
В следующей части мы настраиваем дисплей, вы можете изменить контраст до желаемого значения, здесь я устанавливаю его как 50.
void setup () { Serial.begin (115200); // Запуск последовательного порта на скорости 115200 бит / с Wire.begin (); // Запуск библиотеки I2C delay (100); // задержка. if (sensor.VL6180xInit ()! = 0) { Serial.println («НЕ ИНИТАЛИЗИРОВАТЬ»); // Инициализируем устройство и проверяем на наличие ошибок }; sensor.VL6180xDefautSettings (); // Загружаем настройки по умолчанию, чтобы начать. задержка (1000); // задержка 1 с display.begin (); // init done // вы можете изменить контраст, чтобы адаптировать дисплей // для наилучшего просмотра! display.setContrast (50); display.display (); // показать заставку display.clearDisplay (); }
В ничтожной петлевой части установки инструкции для отображения значений на ЖК - экране. Здесь мы отображаем два значения: одно - это «Уровень внешней освещенности в люксах» (один люкс фактически равен одному люмену на квадратный метр площади), а второе - «Расстояние, измеренное в мм». Для отображения различных значений на ЖК-экране определите положение каждого текста, который должен отображаться на ЖК-экране, используя «display.setCursor (0,0);».
void loop () { display.clearDisplay (); // Получение уровня окружающего освещения и отчет в LUX Serial.print ("Ambient Light Level (Lux) ="); Serial.println (sensor.getAmbientLight (GAIN_1)); display.setTextSize (1); display.setTextColor (ЧЕРНЫЙ); display.setCursor (0,0); display.println («Уровень освещенности»); display.setCursor (0,12); display.println (sensor.getAmbientLight (GAIN_1)); // Получение расстояния и отчет в мм Serial.print ("Измеренное расстояние (мм) ="); Serial.println (sensor.getDistance ()); display.setTextSize (1); display.setTextColor (ЧЕРНЫЙ); display.setCursor (0, 24); display.println ("Расстояние (мм) ="); display.setCursor (0, 36); b = sensor.getDistance (); display.println (б); display.display (); задержка (500); }
После загрузки программы откройте монитор последовательного порта, и он должен показать результат, как показано ниже.
Дальномеры VL6180 TOF используются в смартфонах, портативных устройствах с сенсорным экраном, планшетах, ноутбуках, игровых устройствах и бытовой технике / промышленных устройствах.
Здесь мы отображаем уровень внешней освещенности в люксах и расстояние в мм.
Полную программу и демонстрационное видео вы найдете ниже. Также проверьте, как измерить расстояние с помощью ультразвукового датчика и уровень освещенности с помощью датчика внешней освещенности BH1750.