- VL6180X Датчик за далекомер за време на полет (ToF)
- Електрическа схема
- Добавяне на необходимите библиотеки за VL6180 ToF сензор
- Програмиране и работно обяснение
TOF или Времето на полета е често използван метод за измерване на разстоянието на отдалечени обекти чрез различни сензори за измерване на разстояние като ултразвуков сензор. Измерването на времето, необходимо на частица, вълна или обект, за да измине разстояние през среда, се нарича Време на полет (TOF). След това това измерване може да се използва за изчисляване на скоростта или дължината на пътя. Може да се използва и за научаване на частиците или свойствата на средата, като състав или скорост на потока. Пътуващият обект може да бъде открит пряко или косвено.
Ултразвуковите устройства за измерване на разстояние са едни от най-ранните устройства, използващи принципа на времето на полета. Тези устройства излъчват ултразвуков импулс и измерват разстоянието до твърд материал въз основа на времето, необходимо на вълната да отскочи обратно до излъчвателя. Използвахме ултразвуков сензор в много от нашите приложения за измерване на разстоянието:
- Измерване на разстояние на базата на Arduino и ултразвуков сензор
- Измерете разстоянието с помощта на ултразвуков сензор Raspberry Pi и HCSR04
- Как се измерва разстоянието между два ултразвукови сензора
Методът на времето на полета може също да се използва за оценка на електронната подвижност. Всъщност той е проектиран за измерване на ниско проводими тънки филми, по-късно е адаптиран за обикновени полупроводници. Тази техника се използва за транзистори с органично поле, както и за метални диелектрично-метални конструкции. Чрез прилагането на лазер или импулс на напрежение се генерират излишните заряди.
Принципът TOF се използва за измерване на разстоянието между сензор и обект. Измерва се времето, необходимо на сигнала да достигне обратно до сензора след отразяване от обект и се използва за изчисляване на разстоянието. Различни видове сигнали (носители) като звук, светлина могат да се използват с принципа TOF. Когато TOF се използва за намиране на обхват, той е много мощен, когато излъчва светлина, а не звук. В сравнение с ултразвука, той осигурява по-бързо отчитане, по-висока точност и по-голям обхват, запазвайки ниското си тегло, малки размери и ниска консумация на енергия
Тук в този урок ще използваме датчик за далекомер VL6180X TOF с Arduino, за да изчислим разстоянието между сензора и обекта. Този сензор също така показва стойността на интензитета на светлината в LUX.
VL6180X Датчик за далекомер за време на полет (ToF)
VL6180 се различава от другите сензори за разстояние, тъй като използва прецизен часовник за измерване на времето, необходимо на светлината да отразява обратно от всяка повърхност. Това дава на VL6180 предимство пред другите сензори, защото е по-точен и устойчив на шум.
VL6180 е пакет 3 в 1, който включва IR излъчвател, сензор за околна светлина и сензор за обхват. Той комуникира чрез интерфейс I 2 C. Той има вграден регулатор 2.8V. Така че дори ако включим напрежение по-голямо от 2.8V, то автоматично ще се измести надолу, без да се повреди платката. Той измерва обхват до 25 см. В него са предвидени два програмируеми GPIO.
Електрическа схема
Тук Nokia 5110 LCD се използва за показване на нивото на светлина и разстоянието. Nokia 5110 LCD работи при 3.3V, така че не може да бъде свързан директно с цифрови щифтове Arduino Nano. Затова добавете 10k резистори последователно със сигналите за данни, за да защитите 3.3V линиите от 5V цифрови щифтове. Научете повече за използването на Nokia 5110 LCD с Arduino.
В VL6180 сензора може да бъде пряко свързан с Ардуино. Комуникацията между VL6180 и Arduino е I2C. Всъщност I2C комуникационният протокол съчетава най-добрите характеристики на SPI и UART. Тук можем да свържем множество подчинени с един главен и можем да имаме множество главни, контролиращи един или няколко подчинени. Подобно на UART комуникацията, I2C използва два проводника за комуникация SDA (серийни данни) и SCL (сериен часовник), линия за данни и линия на часовника.
Електрическа схема за свързване на датчик за далекомер VL6180 ToF с Arduino е показана по-долу:
- Свържете RST щифта на LCD към щифт 6 на Arduino чрез 10K резистор.
- Свържете CE щифта на LCD към щифт 7 на Arduino чрез 10K резистор.
- Свържете DC щифта на LCD към щифт 5 на Arduino чрез 10K резистор.
- Свържете DIN щифта на LCD към щифт 4 на Arduino чрез 10K резистор.
- Свържете CLK щифта на LCD към щифт 3 на Arduino чрез 10K резистор.
- Свържете VCC Pin на LCD с 3.3V pin на Arduino.
- Свържете GND щифта на LCD към GND на Arduino.
- Свържете SCL щифта на VL6180 към A5 щифта на Arduino
- Свържете SDA щифта на VL6180 към щифт A4 на Arduino
- Свържете VCC щифта на VL6180 към 5V щифт на Arduino
- Свържете GND щифта на VL6180 към GND щифта на Arduino
Добавяне на необходимите библиотеки за VL6180 ToF сензор
Три библиотеки ще бъдат използвани за свързване на сензор VL6180 с Arduino.
1. Adafruit_PCD8544
Adafruit_PCD8544 е библиотека за монохромните LCD дисплеи Nokia 5110. Тези дисплеи използват SPI за комуникация. За свързване на този LCD са необходими четири или пет щифта. Връзката за изтегляне на тази библиотека е дадена по-долу:
github.com/adafruit/Adafruit-PCD8544-Nokia-5110-LCD-library/archive/master.zip
2. Adafruit_GFX
Библиотеката Adafruit_GFX за Arduino е основната графична библиотека за LCD дисплеи, предоставяща общ синтаксис и набор от графични примитиви (точки, редове, кръгове и т.н.). Трябва да се сдвои със специфична за хардуера библиотека за всяко устройство за показване, което използваме (за обработка на функциите от по-ниско ниво). Връзката за изтегляне на тази библиотека е дадена по-долу:
github.com/adafruit/Adafruit-GFX-Library
3. SparkFun VL6180
SparkFun_VL6180 е библиотеката на Arduino с основна функционалност на сензора VL6180. VL6180 се състои от IR излъчвател, сензор за обхват и сензор за околна светлина, които комуникират чрез I2C интерфейс. Тази библиотека ви позволява да четете разстоянието и светлинните изходи от сензора и извежда данните чрез последователна връзка. Връзката за изтегляне на тази библиотека е дадена по-долу:
downloads.arduino.cc/libraries/github.com/sparkfun/SparkFun_VL6180_Sensor-1.1.0.zip
Добавете всички библиотеки една по една, като влезете в Скица >> Включване на библиотека >> Добавяне на.ZIP библиотека в Arduino IDE. След това качете библиотеката, която сте изтеглили от горните връзки.
Понякога няма да е необходимо да добавяте библиотеки за проводници и SPI, но ако получавате грешка, моля, изтеглете ги и ги добавете към вашата Arduino IDE.
github.com/PaulStoffregen/SPI
github.com/PaulStoffregen/Wire
Програмиране и работно обяснение
Пълен код с работещо видео е даден в края на този урок, тук ние обясняваме пълната програма, за да разберем работата на проекта.
В тази програма по-голямата част от частите се обработват от добавените от нас библиотеки, така че не е нужно да се притеснявате за това.
В настройката част е настроен на скоростта на обмен, както и 115 200 инициализира Тел библиотека за I2C. След това проверете дали сензорът VL6180 работи правилно или не, ако не работи, покажете съобщение за грешка.
В следващата част настройваме дисплея, можете да промените контраста на желаната от вас стойност тук, аз го настройвам като 50
void setup () { Serial.begin (115200); // Стартиране на сериен при 115200bps Wire.begin (); // Стартиране на I2C библиотечно забавяне (100); // забавяне. if (sensor.VL6180xInit ()! = 0) { Serial.println ("Неуспешно инициализиране"); // Инициализиране на устройството и проверка за грешки }; сензор.VL6180xDefautSettings (); // Заредете настройките по подразбиране, за да започнете. забавяне (1000); // забавяне 1s display.begin (); // init done // можете да промените контраста наоколо, за да адаптирате дисплея // за най-добро гледане! display.setContrast (50); display.display (); // показване на извеждащ екран display.clearDisplay (); }
В настройката на частта за празен цикъл инструкциите за показване на стойностите на LCD екран. Тук показваме две стойности, едната е „Нивото на околната светлина в Lux“ (Един lux всъщност е един лумен на квадратен метър площ), а втората е „Разстояние, измерено в mm“. За показване на различни стойности на LCD екран дефинирайте позицията на всеки текст, който трябва да се показва на LCD екрана, като използвате “display.setCursor (0,0);”.
невалиден цикъл () { display.clearDisplay (); // Вземете ниво на околната светлина и отчетете в LUX Serial.print ("Ниво на околната светлина (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)); // Вземете разстояние и отчетете в mm Serial.print ("Измерено разстояние (mm) ="); Serial.println (sensor.getDistance ()); display.setTextSize (1); display.setTextColor (ЧЕРЕН); display.setCursor (0, 24); display.println ("Разстояние (mm) ="); display.setCursor (0, 36); b = sensor.getDistance (); display.println (b); display.display (); забавяне (500); }
След като качите програмата, отворете серийния монитор и той трябва да показва изхода, както е показано по-долу.
Търсещите устройства VL6180 TOF се използват в смартфони, преносими сензорни устройства, таблети, лаптопи, игрални устройства и битови уреди / индустриални устройства.
Тук показваме нивото на околната светлина в Lux и разстоянието в mm.
Намерете пълната програма и демонстрационно видео по-долу. Също така проверете как да измервате разстоянието с помощта на ултразвуков сензор и нивото на осветеност с помощта на сензор за околна светлина BH1750.