ویژگی های ماژول فاصله سنج لیزری VL53L0X
ماژول VL53L0X یک فاصلهسنج لیزری میباشد. ابتدا سنسور یک پالس لیزر ارسال میکند و با اندازه گیری زمان رفت و برگشت لیزر، فاصله جسم تا سنسور تخمین زده میشود. با توجه به اینکه سرعت نور بسیار بالاست، این سنسور در کاربردهای کمتر از میلی متر استفاده نمیشود.
این ماژول میتواند حداکثر فاصله 2 متر را اندازهگیری کند. ولتاژ کاری آن 2.8 تا 5 ولت است و از پروتکل I2C برای ارتباط با میکروکنترلر استفاده میکند.
دیتاشیت سنسور VL53L0X را می توانید از اینجا دانلود کنید.
معرفی پایه های (Pinout) ماژول فاصله سنج لیزری VL53L0X
ماژول VL53L0X دارای 4 پایه به شرح زیر است:
- VCC: تغذیه ماژول
- GND: زمین
- SDA: سیگنال دیتا
- SCL: سیگنال کلاک
پین اوت (Pinout) این ماژول را می توانید در تصویر زیر مشاهده کنید.
لوازمی که به آن احتیاج دارید
قطعات مورد نیاز
نرم افزارهای مورد نیاز
راه اندازی ماژول فاصله سنج لیزری VL53L0X با آردوینو
گام اول: سیم بندی
مطابق مدار زیر ماژول را به آردوینو وصل کنید.
گام دوم: نصب کتابخانه
به Library manager رفته و کتابخانه ی Adafruit_VL53L0X را سرچ کرده و آن را نصب کنید.
توجه
اگر برای نصب کتابخانه نیاز به راهنمایی بیشتر دارید، به اینجا مراجعه کنید.
گام سوم: کد
کد زیر را برروی آردوینو خود آپلود کنید.
/*
VL53L0X Distance Sensor
modified on 26 oct 2020
by Amir Mohammad Shojaee @ Electropeak
Home<iframe class="wp-embedded-content" sandbox="allow-scripts" security="restricted" style="position: absolute; clip: rect(1px, 1px, 1px, 1px);" title="“Home” — Electropeak" src="https://electropeak.com/learn/embed/#?secret=6MDwKb2EgU" data-secret="6MDwKb2EgU" width="600" height="338" frameborder="0" marginwidth="0" marginheight="0" scrolling="no"></iframe>
Based on Adafruit Example
*/
#include "Adafruit_VL53L0X.h"
Adafruit_VL53L0X lox = Adafruit_VL53L0X();
void setup() {
Serial.begin(115200);
// wait until serial port opens for native USB devices
while (! Serial) {
delay(1);
}
Serial.println(" VL53L0X test");
if (!lox.begin()) {
Serial.println(F("Failed to boot VL53L0X"));
while(1);
}
// power
Serial.println(F("VL53L0X API Simple Ranging example\n\n"));
}
void loop() {
VL53L0X_RangingMeasurementData_t measure;
Serial.print("Reading a measurement... ");
lox.rangingTest(&measure, false); // pass in 'true' to get debug data printout!
if (measure.RangeStatus != 4) { // phase failures have incorrect data
Serial.print("Distance (mm): "); Serial.println(measure.RangeMilliMeter);
} else {
Serial.println(" out of range ");
}
delay(1000);
}
ابتدا بایستی کتابخانه سنسور تعریف شود. در گام بعدی سنسور شناسایی میشود. در قسمت اصلی برنامه فاصله سنسور تا جسم اندازهگیری میشود و مقدار آن برروی Serial Monitor قرار میگیرد. اگر دیتایی برای اندازهگیری موجود نباشد نیز عبارت “out of range” برروی خروجی ظاهر میگردد.
عکس زیر خروجی Serial Monitor میباشد. جسمی را از فاصله نزدیک از سنسور دور میکنیم. مشاهده میشود که رنج اندازهگیری شده بر حسب میلیمتر افزایش مییابد.
Comments (24)
تشکر از راهنمایتان ..اما یک قسمت را نگفته اید …سوال من این است که چگونه فایل hex این سنسور را باید برای run کردن در pretous پیدا کرد …مثلا برای سنسور ultrasonic یک فایل hex دارد .اما برای این سنسورvl530x فایل hex برای proteus وجود ندارد ..ممنون میشوم پاسخ مرا بدهیید
سلام،
برای دریافت فایل hex که بتونید توی پروتئوس شبیهسازی رو انجام بدید، موقعی که کدتون در نرمافزار آردوینو بازه میتونید از مسیر Sketch -> Export compiled Binary فایل hex رو دریافت کنید. میتونید به جای اون مسیر از کلید ترکیبی ctrl+alt+s هم استفاده کنید. با این کار، فایل hex تو پوشه اصلی که کد داخلش بوده تشکیل میشه.
یک راه دیگهای هم که وجود داره اینه که پروژههای آردوینو رو مستقیما تو پروتئوس اجرا کنید. یعنی خود کد رو هم داخل پروتئوس بنویسید. برای این کار میتونید لینک زیر رو مطالعه کنید. “https://maker.pro/arduino/projects/how-to-simulate-arduino-projects-using-proteus”
سلام خسته نباشید مقدار فاصله تو کدوم متغییر ریخته می شه چون می خوام تو ادامش یه تیکه دیگه هم اضافه کنم تا اگه مقدار فاصله از یک مقداری کمتر شد یه کاری رو واسم انجام بده ممنون
سلام. خیلی ممنون
فاصله تو خط 39 و توسط دستور measure.RangeMilliMeter خونده میشه، ولی تو متغیری ذخیره نمیشه و مستقیما پرینت میشه. شما میتونید توسط این دستور فاصله رو بخونید و تو یه متغیر ذخیره کنید تا واسه کاربردتون بتونید ازش استفاده کنید.
سلام ببخشید زاویه دید این سنسور چقدر هست؟؟؟
هنگام کاربرد متوجه شدم که به هیچ وجه زاویه ای نداره و بصورت خطی تا 70 سانتی متر کار میکنه.
سلام وقت بخیر
طبق دیتا شیت که بنده بررسی کردم زاویه دید emitter لیزر تا 35 درجه هست
ضمنا رنج یا فاصله قابل تشخیص توسط این ماژول تا 2 متر است اما این بستگی به reflector شما داره
قسمتی از دیتا شیت رو براتون گذاشتم
– Measures absolute range up to 2m
– Reported range is independent of the
target reflectance
سلام
زاویه سنسور 35 درجه هست
سلام
طبق دیتا شیت 35 درجه EMITTER و 25 درجه COLLECTOR
سلام می شه به جای این سنسور از سنسور ماژول فاصله سنج لیزری VL53L0Xاستفاده کرد این ارزون تر هم هست ؟؟؟؟
سلام
ببخشید متوجه نشدم، این هم مدل VL53L0X هست
این ماژول به زحمت تا 70 سانتی متر رو اندازه گیری کرد . در توضیحات نوشتید 2 متر .
سلام
روش استفادتون صحیح نیست
طبق دیتاشیت تا 2 متر اندازه گیری میکند و برد مسافت دارد
سلام. وقت بخیر
آیا میشه خروجی این ماژول رو به ورودی ماژول مبدل دیجیتال به آنالوگ MCP4725 که ورودی I2C داره وصل کرد؟
سپاس
با سلام
IC MCP4725 مبدل دیجیتال به آنالوگ می باشد. یعنی شما دستور ها را به صورت I2C می دهید و تبدیل به آنالوگ میکند. هر دو این ماژول ها Slave هستند و از خودشان دستوری را اجرا نمیکنند. باید یک میکروکنترلر این دستور ها را بهشان بدهد. برای استفاده در PLC نمیدانم اما فکر میکنم پروتکل I2C را نیز باید ساپورت کنند در غیر این صورت شما باید از یک میکروکنترلر واسط استفاده کنید تا دیتا ها پردازش کنید و به چیزی که PLC شما می تواند دریافت کند تبدیل کنید.
سلام ببخشید من میخوام در نوک نازل دستگاه لیزر استفاده کنم و وقتی فاصله کانونی نازل با سطح کار کم و زیاد میشه سنسور دستور بده تا استپ موتور تغییر کنه و فاصله نازل رو حفظ کنه
شدنی هست؟
با سلام فکر میکنم شدنی باشه اما یک مشکل فکر میکنم پیش بیاید. آن هم این می باشد که نور دستگاه لیزر شما تداخل با سنسور روی این ماژول به وجود می آورد از این رو تنظیمات دستگاه شما به هم میخورد.
برای کار شما پیشنهاد میکنم یا یک فاصله انداز یا چیزی قرار بدهید که نور لیزر شما با نور لیزر این سنسور به هم نخورند که باعث خرابی بشود.
راه دیگر نیز این می باشد که یک قلتک طور درست کنید و به صورت شفتی از بقل لیزر خود بیاورد بالا و در انتها این شفت یک صفحه ای قرار بدهید که سنسور این صفحه را اندازه گیری کنید و به این صورت کامل میتوانید نور لیزر را نسبت به صفحه ایزوله کنید.
حالا اگر بخوایم بدون روش غلطک این کار رو بکنیم این ماژول یا »ازول دیگه با دقت بالاتر استفاده کنیم شما برنامه آردوینو رو میتونید انجام بدین یا اگر هزینه داشته باشه تقدیمتون کنم
ممنون
سلام دقت اندازه گیری این ماژول چند میلیمتر هست؟
باسلام
با توجه به توضیحات داخل اینترنت مربوط به این سنسور بسته به شرایط متفاوت می باشد اما نرمال 77 میلی متر دقت دارد.
برای اطلاعات بیشتر می توانید به این لینک مراجعه فرمایید.
سلام وقت بخیر اگر بخوام دو تا ماژول رو با یه برد کنترل کنم کجای برنامه رو و چگونه تغییر بدم ایا برنامه اماده ای هست
با سلام
دیتاشیت ماژول صفحه 18 را به صورت کامل مطالعه بفرمایید. توضیح داده شده است که به چه صورت میتوانید 2 عددی استفاده بکنید.
روش دیگر استفاده از ماژول های افزایش دهنده I2C می باشد. یا استفاده از میکرو هایی که چندین I2C مجزا دارند.
این ماژول چند میلی متر خطا دارد و اجسام تا چه قدر کوچک را می تواند تشخیص بدهد
با سلام
صفحه 25-27 دیتاشیت دقت این سنسور در فاصله های مختلف را توضیح داده است.
در مورد چه اجسامی را میتواند بخواند چون این سنسور ها لیزری هستند حدودا بازه 2-3 درجه ای را میخوانند. که با افزایش فاصله این بازه بزرگ و بزرگ تر میشود.
این موضوع را نیز در نظر داشته باشید که از این سنسور ها در محیط های باز که نور خورشید کامل وجود دارد اکثرا استفاده نمیشود چون دچار خطا میشود