آموزش راه اندازی ماژول فاصله سنج لیزری VL53L0X با آردوینو

فهرست مطالب

ویژگی های ماژول فاصله سنج لیزری VL53L0X

ماژول VL53L0X یک فاصله‌سنج لیزری می‌باشد. ابتدا سنسور یک پالس لیزر ارسال می‌کند و با اندازه گیری زمان رفت و برگشت لیزر، فاصله جسم تا سنسور تخمین زده می‌شود. با توجه به اینکه سرعت نور بسیار بالاست، این سنسور در کاربردهای کمتر از میلی متر استفاده نمی‌شود.
این ماژول می‌تواند حداکثر فاصله 2 متر را اندازه‌گیری کند. ولتاژ کاری آن 2.8 تا 5 ولت است و از پروتکل I2C برای ارتباط با میکروکنترلر استفاده می‌کند.

دیتاشیت سنسور VL53L0X را می توانید از اینجا دانلود کنید.

معرفی پایه های (Pinout) ماژول فاصله سنج لیزری VL53L0X

ماژول VL53L0X دارای 4 پایه به شرح زیر است:

  • VCC: تغذیه ماژول
  • GND: زمین
  • SDA: سیگنال دیتا
  • SCL: سیگنال کلاک

پین اوت (Pinout) این ماژول را می توانید در تصویر زیر مشاهده کنید.

لوازمی که به آن احتیاج دارید

قطعات مورد نیاز

آردوینو UNO R3 × 1
ماژول فاصله سنج لیزری VL53L0X × 1
سیم جامپر × 1

نرم افزارهای مورد نیاز

آردوینو IDE

راه اندازی ماژول فاصله سنج لیزری VL53L0X با آردوینو

گام اول: سیم بندی

مطابق مدار زیر ماژول را به آردوینو وصل کنید.

گام دوم: نصب کتابخانه

به Library manager رفته و کتابخانه ی Adafruit_VL53L0X را سرچ کرده و آن را نصب کنید.

توجه

اگر برای نصب کتابخانه نیاز به راهنمایی بیشتر دارید، به اینجا مراجعه کنید.

گام سوم: کد

کد زیر را برروی آردوینو خود آپلود کنید.

/*
  VL53L0X Distance Sensor
  modified on 26 oct 2020
  by Amir Mohammad Shojaee @ Electropeak
  
Home
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 (20)

  • اخمد Reply

    تشکر از راهنمایتان ..اما یک قسمت را نگفته اید …سوال من این است که چگونه فایل hex این سنسور را باید برای run کردن در pretous پیدا کرد …مثلا برای سنسور ultrasonic یک فایل hex دارد .اما برای این سنسورvl530x فایل hex برای proteus وجود ندارد ..ممنون میشوم پاسخ مرا بدهیید

    ژوئن 30, 2021 at 5:10 ب.ظ
    • مهران ملکی Reply

      سلام،
      برای دریافت فایل hex که بتونید توی پروتئوس شبیه‌سازی رو انجام بدید، موقعی که کدتون در نرم‌افزار آردوینو بازه میتونید از مسیر Sketch -> Export compiled Binary فایل hex رو دریافت کنید. میتونید به جای اون مسیر از کلید ترکیبی ctrl+alt+s هم استفاده کنید. با این کار، فایل hex تو پوشه اصلی که کد داخلش بوده تشکیل میشه.
      یک راه دیگه‌ای هم که وجود داره اینه که پروژه‌های آردوینو رو مستقیما تو پروتئوس اجرا کنید. یعنی خود کد رو هم داخل پروتئوس بنویسید. برای این کار میتونید لینک زیر رو مطالعه کنید. “https://maker.pro/arduino/projects/how-to-simulate-arduino-projects-using-proteus”

      جولای 3, 2021 at 9:20 ق.ظ
  • محمد Reply

    سلام خسته نباشید مقدار فاصله تو کدوم متغییر ریخته می شه چون می خوام تو ادامش یه تیکه دیگه هم اضافه کنم تا اگه مقدار فاصله از یک مقداری کمتر شد یه کاری رو واسم انجام بده ممنون

    اکتبر 3, 2021 at 10:12 ق.ظ
    • مهران ملکی Reply

      سلام. خیلی ممنون
      فاصله تو خط 39 و توسط دستور measure.RangeMilliMeter خونده میشه، ولی تو متغیری ذخیره نمیشه و مستقیما پرینت میشه. شما میتونید توسط این دستور فاصله رو بخونید و تو یه متغیر ذخیره کنید تا واسه کاربردتون بتونید ازش استفاده کنید.

      اکتبر 3, 2021 at 1:49 ب.ظ
  • محمد Reply

    سلام ببخشید زاویه دید این سنسور چقدر هست؟؟؟

    اکتبر 13, 2021 at 3:42 ب.ظ
    • آراش کماندور Reply

      هنگام کاربرد متوجه شدم که به هیچ وجه زاویه ای نداره و بصورت خطی تا 70 سانتی متر کار میکنه.

      ژانویه 2, 2023 at 10:03 ب.ظ
      • علی عبدالملکی Reply

        سلام وقت بخیر
        طبق دیتا شیت که بنده بررسی کردم زاویه دید emitter لیزر تا 35 درجه هست
        ضمنا رنج یا فاصله قابل تشخیص توسط این ماژول تا 2 متر است اما این بستگی به reflector شما داره
        قسمتی از دیتا شیت رو براتون گذاشتم
        – Measures absolute range up to 2m
        – Reported range is independent of the
        target reflectance

        فوریه 27, 2023 at 5:06 ب.ظ
      • علی عبدالملکی Reply

        سلام
        زاویه سنسور 35 درجه هست

        فوریه 27, 2023 at 5:16 ب.ظ
    • علی عبدالملکی Reply

      سلام
      طبق دیتا شیت 35 درجه EMITTER و 25 درجه COLLECTOR

      فوریه 27, 2023 at 5:12 ب.ظ
  • محمد Reply

    سلام می شه به جای این سنسور از سنسور ماژول فاصله سنج لیزری VL53L0Xاستفاده کرد این ارزون تر هم هست ؟؟؟؟

    اکتبر 13, 2021 at 4:05 ب.ظ
    • علی عبدالملکی Reply

      سلام
      ببخشید متوجه نشدم، این هم مدل VL53L0X هست

      فوریه 27, 2023 at 5:08 ب.ظ
  • آراش کماندور Reply

    این ماژول به زحمت تا 70 سانتی متر رو اندازه گیری کرد . در توضیحات نوشتید 2 متر .

    ژانویه 2, 2023 at 10:01 ب.ظ
    • علی عبدالملکی Reply

      سلام
      روش استفادتون صحیح نیست
      طبق دیتاشیت تا 2 متر اندازه گیری میکند و برد مسافت دارد

      فوریه 27, 2023 at 5:15 ب.ظ
  • راستین Reply

    سلام. وقت بخیر
    آیا میشه خروجی این ماژول رو به ورودی ماژول مبدل دیجیتال به آنالوگ MCP4725 که ورودی I2C داره وصل کرد؟
    سپاس

    می 3, 2023 at 12:00 ب.ظ
    • محمد دمیرچی Reply

      با سلام
      IC MCP4725 مبدل دیجیتال به آنالوگ می باشد. یعنی شما دستور ها را به صورت I2C می دهید و تبدیل به آنالوگ میکند. هر دو این ماژول ها Slave هستند و از خودشان دستوری را اجرا نمیکنند. باید یک میکروکنترلر این دستور ها را بهشان بدهد. برای استفاده در PLC نمیدانم اما فکر میکنم پروتکل I2C را نیز باید ساپورت کنند در غیر این صورت شما باید از یک میکروکنترلر واسط استفاده کنید تا دیتا ها پردازش کنید و به چیزی که PLC شما می تواند دریافت کند تبدیل کنید.

      می 6, 2023 at 11:04 ق.ظ
  • محمد Reply

    سلام ببخشید من میخوام در نوک نازل دستگاه لیزر استفاده کنم و وقتی فاصله کانونی نازل با سطح کار کم و زیاد میشه سنسور دستور بده تا استپ موتور تغییر کنه و فاصله نازل رو حفظ کنه
    شدنی هست؟

    می 24, 2023 at 10:06 ق.ظ
    • محمد دمیرچی Reply

      با سلام فکر میکنم شدنی باشه اما یک مشکل فکر میکنم پیش بیاید. آن هم این می باشد که نور دستگاه لیزر شما تداخل با سنسور روی این ماژول به وجود می آورد از این رو تنظیمات دستگاه شما به هم میخورد.
      برای کار شما پیشنهاد میکنم یا یک فاصله انداز یا چیزی قرار بدهید که نور لیزر شما با نور لیزر این سنسور به هم نخورند که باعث خرابی بشود.
      راه دیگر نیز این می باشد که یک قلتک طور درست کنید و به صورت شفتی از بقل لیزر خود بیاورد بالا و در انتها این شفت یک صفحه ای قرار بدهید که سنسور این صفحه را اندازه گیری کنید و به این صورت کامل میتوانید نور لیزر را نسبت به صفحه ایزوله کنید.

      می 24, 2023 at 12:53 ب.ظ
      • محمد Reply

        حالا اگر بخوایم بدون روش غلطک این کار رو بکنیم این ماژول یا »ازول دیگه با دقت بالاتر استفاده کنیم شما برنامه آردوینو رو میتونید انجام بدین یا اگر هزینه داشته باشه تقدیمتون کنم

        ممنون

        می 24, 2023 at 2:16 ب.ظ
  • ابوالفضل Reply

    سلام دقت اندازه گیری این ماژول چند میلیمتر هست؟

    آوریل 12, 2024 at 5:17 ب.ظ
    • محمد دمیرچی Reply

      باسلام
      با توجه به توضیحات داخل اینترنت مربوط به این سنسور بسته به شرایط متفاوت می باشد اما نرمال 77 میلی متر دقت دارد.
      برای اطلاعات بیشتر می توانید به این لینک مراجعه فرمایید.

      آوریل 13, 2024 at 9:48 ق.ظ

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد.