استفاده از حساس(حس کننده) فاصله لیزری VL53L1X برای اندازهگیری فاصلهها تا ۴ متر
حساس(حس کننده) فاصلهسنج لیزری VL53L1X یک حساس(حس کننده) زمان پرواز است که قادر به اندازهگیری فواصل تا ۴ متر با دقت بالا میباشد. این حساس(حس کننده) از طریق I2C ارتباط برقرار میکند و برای کاربردهای مختلف، مانند رباتیک و اتوماسیون، بسیار کاربردی است. در این آموزش، نحوه راهاندازی حساس(حس کننده) VL53L1X با آردوینو و خواندن مؤثر مقادیر فاصله را بررسی خواهیم کرد.
حساس(حس کننده) با ولتاژ ۳.۳ ولت یا ۵ ولت تغذیه میشود و دارای چندین پایه برای ارتباط I2C است، از جمله SDA و SCL. حساس(حس کننده) قادر است فاصلهها را با فرکانس ۵۰ هرتز اندازهگیری کند که این امکان را برای خواندن سریع فاصلهها فراهم میکند. این آموزش شما را در فرآیند سیمکشی و شِفر (کود) لازم برای عملکرد روان حساس(حس کننده) راهنمایی میکند. برای توضیحات بیشتر، میتوانید ویدیو را مشاهده کنید (در ویدیو در ۰۰:۰۰).
تجهیزات توضیح داده شده
مولفه اصلی این پروژه حساس(حس کننده) لیزری فاصله VL53L1X است که از فناوریای به نام زمان پرواز (ToF) برای اندازهگیری فاصلهها استفاده میکند. این بدان معناست که این حساس(حس کننده) فاصله تا یک شیء را با زمانسنجی اینکه برای بازگشت پالس لیزر پس از برخورد با یک شیء چقدر طول میکشد، محاسبه میکند. این حساس(حس کننده) دارای ارتباط I2C است که امکان ادغام آسان با میکروکنترلرهایی مانند آردوینو را فراهم میکند. به علاوه حساس(حس کننده)، شما به یک بورد آردوینو برای پردازش نیاز خواهید داشت. آردوینو ارتباط با VL53L1X را مدیریت کرده و فاصلههای اندازهگیری شده را نمایش میدهد. راهاندازی این سیستم ساده است، زیرا حساس(حس کننده) میتواند مستقیماً از پایههای خروجی آردوینو تغذیه شود.
جزئیات برگه مشخصات
| تولیدکننده | اس تی میکروالکترونیکส์ |
|---|---|
| شماره قطعه | VL53L1X |
| ولتاژ منطقی/ورودی و خروجی | ۳.۳ - ۵ ولت |
| ولتاژ تأمین | ۲.۶ - ۵.۵ ولت |
| جریان خروجی (به ازای هر کانال) | غیرقابل اعمال |
| جریان اوج (به ازای هر کانال) | غیر قابل کاربرد |
| راهنمایی فرکانس PWM | نامشخص |
| آستانههای منطق ورودی | 0.3 × VCC (پایین)، 0.7 × VCC (بالا) |
| افت ولتاژ / RDS(on)/ اشباع | غیر قابل کاربرد |
| محدودیتهای حرارتی | ۰ تا ۸۵ درجه سانتیگراد |
| بسته | ۴.۹ × ۲.۵ × ۱.۶ میلیمتر |
| یادداشتها / انواع | حساس(حس کننده) زمان پرواز از راه دور |
- حساس(حس کننده) را با ۳.۳ ولت یا ۵ ولت طبق نیاز تغذیه کنید.
- از پایههای I2C، SDA و SCL برای ارتباط استفاده کنید.
- مدل فاصله را بر اساس نیازهای خود تنظیم کنید (کوتاه، متوسط، بلند).
- اطمینان حاصل کنید که حساس(حس کننده) برای اندازهگیری دقیق فاصله کالیبره شده است.
- شرایط نور محیطی را با احتیاط بررسی کنید زیرا میتواند بر اندازهگیریها تأثیر بگذارد.
دستورالعملهای سیمکشی

برای متصل کردن حساس(حس کننده) VL53L1X به یک Arduino، پایه VCC حساس(حس کننده) را با استفاده از یک سیم قرمز به پایه 5V روی Arduino متصل کنید. پایه زمین (GND) حساس(حس کننده) را با استفاده از یک سیم قهوهای به GND Arduino متصل کنید. برای ارتباط I2C، پایه SDA حساس(حس کننده) را با استفاده از یک سیم زرد به پایه A4 Arduino و پایه SCL را با استفاده از یک سیم سبز به پایه A5 متصل کنید. اگر میخواهید از پایههای اختیاری وقفه و خاموشی استفاده کنید، پایه خاموشی را به پایه دیجیتال 2 و پایه وقفه را به پایه دیجیتال 3 متصل کنید، اما اینها برای عملیات پایه ضروری نیستند.
نمونههای شِفر (کود) و راهنمایی
در شِفر (کود)، ابتدا کتابخانههای لازم را وارد کرده و پایههای حساس(حس کننده) را تعریف میکنیم. با خط زیر یک نمونه از حساس(حس کننده) ایجاد میکنیم:
SFEVL53L1X distanceSensor;این خط حساس(حس کننده) را راهاندازی میکند و به ما اجازه میدهد که بعداً در برنامه از متدهای آن استفاده کنیم. سپس ارتباط I2C را تنظیم کرده و حساس(حس کننده) را راهاندازی میکنیم:
void setup(void)
{
Wire.begin();
Serial.begin(9600);
Serial.println("VL53L1X Qwiic Test");
if (distanceSensor.begin() == 0) //Begin returns 0 on a good init
{
Serial.println("Sensor online!");
}
}در این بخش، ارتباط I2C را با شروع میکنیمWire.begin()و بررسی کنید که آیا حساس(حس کننده) با موفقیت راهاندازی شده است. در نهایت، برای خواندن فاصله، از شِفر (کود) زیر در حلقه استفاده میکنیم:
void loop(void)
{
int distance = distanceSensor.getDistance(); // Get distance
Serial.print("Distance: ");
Serial.println(distance);
}این شِفر (کود) اندازهگیری فاصله را بازیابی کرده و آن را به نمایشگر مسلسل چاپ میکند. حلقه به طور مداوم فاصله را میخواند و بهروزرسانیهای آنی را امکانپذیر میسازد. برای یک مثال کامل از شِفر (کود)، لطفاً به شِفر (کود) کامل بارگذاری شده در زیر مقاله مراجعه کنید.
معرفی / چه انتظاری داشته باشیم
وقتی حساس(حس کننده) به درستی تنظیم شده باشد، میتوانید انتظار داشته باشید که اندازهگیریهای فاصله تا ۴ متر را با دقت ارائه دهد. ممکن است نوسانات جزئی در قرائتها مشاهده کنید، به ویژه در شرایط نوری متغیر (در ویدئو در ۱۰:۳۰). مهم است که اطمینان حاصل کنید که حساس(حس کننده) تمیز و بدون مانع است تا نتایج دقیقی بدست آورید. اگر با قرائتهای غیرعادی برخورد کردید، بررسی کنید که آیا حساس(حس کننده) به درستی روشن است و اتصالات I2C امن هستند. عملکرد حساس(حس کننده) ممکن است تحت تأثیر محیط قرار گیرد، بهویژه در نور شدید یا سطوح بازتابنده.
زمانبندی ویدئوها
- ۰۰:۰۰ شروع
- 00:40 مقدمه
- 03:42 برگه مشخصات مشاهده شد
- :48 سربازان که پایههای هدر را میزنند
- 08:22 توضیحاتی درباره سیمکشی
- شِفر (کود) توضیح داده شد: ۰۹:۰۶
- ۱۱:۵۳ نمایش
- ۱۶:۰۳ نمایش در تاریکی کامل
/*
* This is a code example using the VL53L1X Laser Range Sensor from STMicroelectronics
* Using a library from SparkFun (see below)
*
* Watch a video instruction for this code: https://youtu.be/Sc_iVfeocvg
* A wiring diagram is available at https://robojax.com/RJT232
* Updated by Ahmad Shamshiri on November 4, 2019
* in Ajax, Ontario, Canada. www.robojax.com
*
* Get this code and other Arduino codes from Robojax.com.
Learn Arduino step by step in a structured course with all materials, wiring diagrams and libraries
all in one place.
If you found this tutorial helpful, please support me so I can continue creating
content like this.
or make a donation using PayPal http://robojax.com/L/?id=64
*
* https://www.st.com/content/ccc/resource/technical/document/user_manual/group0/98/0d/38/38/5d/84/49/1f/DM00474730/files/DM00474730.pdf/jcr:content/translations/en.DM00474730.pdf
* https://www.st.com/resource/en/datasheet/vl53l1x.pdf
*
Reading distance from the laser-based VL53L1X
By: Nathan Seidle
Revised by: Andy England
SparkFun Electronics
Date: April 4th, 2018
License: This code is public domain but you buy me a beer if you use this and we meet someday (Beerware license).
SparkFun labored with love to create this code. Feel like supporting open-source hardware?
Buy a board from SparkFun! https://www.sparkfun.com/products/14667
This example prints the distance to an object.
Are you getting weird readings? Be sure the vacuum tape has been removed from the sensor.
* * This code is "AS IS" without warranty or liability. Free to be used as long as you keep this note intact.*
* This code has been downloaded from Robojax.com
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program. If not, see <https://www.gnu.org/licenses/>.
Copyright (c) 2015, Majenko Technologies
All rights reserved.
Redistribution and use in source and binary forms, with or without modification,
are permitted provided that the following conditions are met:
* * Redistributions of source code must retain the above copyright notice, this
list of conditions and the following disclaimer.
* * Redistributions in binary form must reproduce the above copyright notice, this
list of conditions and the following disclaimer in the documentation and/or
other materials provided with the distribution.
* * Neither the name of Majenko Technologies nor the names of its
contributors may be used to endorse or promote products derived from
this software without specific prior written permission.
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR
ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
#include <Wire.h>
#include "SparkFun_VL53L1X.h"
//Optional interrupt and shutdown pins.
#define SHUTDOWN_PIN 2
#define INTERRUPT_PIN 3
SFEVL53L1X distanceSensor;
//Uncomment the following line to use the optional shutdown and interrupt pins.
//SFEVL53L1X distanceSensor(Wire, SHUTDOWN_PIN, INTERRUPT_PIN);
void setup(void)
{
Wire.begin();
Serial.begin(9600);
Serial.println("VL53L1X Qwiic Test");
if (distanceSensor.begin() == 0) //Begin returns 0 on a good init
{
Serial.println("Sensor online Robojax Says!");
}
Serial.print("I2C Address of VL53L1X:");
Serial.println(distanceSensor.getI2CAddress());
// set distance mode to Short or long
distanceSensor.setDistanceModeShort();
//distanceSensor.setDistanceModeLong();
}
منابع و مراجع
-
خارجیکتابخانه VL53L0X پولولو (گیتهاب)github.com
فایلها📁
هیچ فایلی موجود نیست.