اندازه‌گیری فاصله با ماجیول لیزری VL53L0X 6 پایه برای آردوینو

اندازه‌گیری فاصله با ماجیول لیزری VL53L0X 6 پایه برای آردوینو

در این آموزش، یاد می‌گیریم چگونه با استفاده از حساس(حس کننده) فاصله‌سنج لیزری VL53L0X با ماجیول 6 پینی فاصله را اندازه‌گیری کنیم. این حساس(حس کننده) کوچک اما قدرتمند از فناوری زمان پرواز (time-of-flight) استفاده می‌کند تا اندازه‌گیری‌های فاصله دقیق تا 200 cm را فراهم کند. با دنبال کردن این راهنما، خواهید توانست حساس(حس کننده) را با یک آردوینو راه‌اندازی کرده و مقادیر فاصله را مستقیماً از نمایشگر مسلسل خود بخوانید.

VL53L0X 200cm range sensor

برای این پروژه از حساس(حس کننده) VL53L0X استفاده خواهیم کرد که جمع‌وجور است و ادغام آن در کاربردهای مختلف آسان می‌باشد. این حساس(حس کننده) از طریق I2C ارتباط برقرار می‌کند که اتصال آن به برد Arduino را ساده می‌سازد. در ویدیو می‌توانید توضیحات و نمایش‌های بیشتری از فرایند راه‌اندازی ببینید (در ویدیو در 04:00).

سخت‌افزار به زبان ساده

VL53L0X یک حساس(حس کننده) فاصله زمان‌پرواز است که یک پرتو لیزر منتشر می‌کند و زمان بازگشت نور پس از برخورد با یک جسم را اندازه‌گیری می‌کند. این به آن اجازه می‌دهد تا فاصله تا جسم را به‌طور دقیق محاسبه کند. این حساس(حس کننده) در ولتاژی بین 2.6 V تا 3.5 V کار می‌کند، اما به لطف رگولاتور ولتاژ داخلی می‌تواند با 5 V تغذیه شود.

ماجیول شش پایه دارد: VCC، GND، SDA (خط داده)، SCL (خط کلاک)، GPIO1 (ورودی/خروجی چندمنظوره) و XSHUT (پایه خاموش‌سازی). پایه GPIO1 در این پیکربندی استفاده نمی‌شود اما می‌توان آن را بدون اتصال رها کرد. پایه XSHUT به شما امکان می‌دهد حساس(حس کننده) را خاموش کنید تا هنگام عدم استفاده مصرف انرژی کاهش یابد.

جزئیات دیتاشیت

تولیدکنندهاس‌تی میکروالکترونیکس
شماره قطعهVL53L0X
ولتاژ منطق/ورودی-خروجی۲٫۶ ولت تا ۳٫۵ ولت (۵ ولت با رگولاتور)
دمای کاری-20 °C تا 70 °C
دامنه اندازه‌گیری30 mm تا 2000 mm
فرکانس ارتباط I2C400 کیلوهرتز
اندازه4.4 میلی‌متر × 2.4 میلی‌متر × 1 میلی‌متر

  • از تأمین منبع تغذیه مناسب اطمینان حاصل کنید (5 ولت توصیه می‌شود).
  • SDA و SCL را به پایه‌های مناسب I2C روی آردوینو وصل کنید.
  • در صورت نیاز، از مقاومت‌های پول-آپ روی خطوط I2C استفاده کنید.
  • GPIO1 را بدون اتصال رها نکنید؛ می‌توان آن را شناور گذاشت.
  • در حین کار، پایه XSHUT را در وضعیت ولتاژ بالا نگه دارید.
  • برای دقت بهتر، فاصله‌ها را در محیطی با نور کافی اندازه‌گیری کنید.
  • حساس(حس کننده) را برای اندازه‌گیری‌های دقیق کالیبره کنید.
  • محدوده حساس(حس کننده) را با قرار دادن اشیاء در فواصل مختلف آزمایش کنید.
  • خروجی سریال را برای خوانش‌های فاصله و پیام‌های تایم‌اوت بررسی کنید.

دستورالعمل‌های سیم‌کشی

Arduino wiring VL53L0X laser distance sensor
Arduino wiring VL53L0X laser distance sensor

برای سیم‌کشی حساس(حس کننده) VL53L0X به آردوینو خود، با اتصال پایه VCC حساس(حس کننده) به پایه 5V روی آردوینو شروع کنید. سپس پایه GND را به GND آردوینو وصل کنید. پایه SDA حساس(حس کننده) باید به پایه A4 روی آردوینو متصل شود (یا به پایه SDA اگر برد شما پایه‌های اختصاصی I2C دارد). به همان ترتیب، پایه SCL حساس(حس کننده) را به پایه A5 وصل کنید (یا به پایه SCL). پایه GPIO1 را بدون اتصال رها کنید چون برای این پروژه لازم نیست.

در نهایت، پایه XSHUT را به پایه دیجیتال 12 روی آردوینو متصل کنید. از این پایه برای کنترل وضعیت خاموش‌‌شدن حساس(حس کننده) استفاده خواهد شد. مطمئن شوید همه اتصالات محکم باشند تا از بروز هرگونه مشکل در ارتباط جلوگیری شود.

نمونه‌های شِفر (کود) و راهنمای گام‌به‌گام

در شِفر (کود)، ابتدا کتابخانه‌های لازم را وارد کرده و حساس(حس کننده) VL53L0X را مقداردهی اولیه می‌کنیم. تابع setup حساس(حس کننده) را پیکربندی کرده و اندازه‌گیری‌های فاصله پیوسته را آغاز می‌کند. در اینجا یک قطعه از تابع setup آمده است:

void setup() {
  pinMode(12, INPUT_PULLUP);
  digitalWrite(12, HIGH);
  Serial.begin(9600);
  Wire.begin();
  sensor.init();
  sensor.setTimeout(500);
  sensor.startContinuous();
}

در این قطعه شِفر (کود)، پایه 12 را به‌عنوان ورودی با مقاومت پول‌آپ تنظیم می‌کنیم و ارتباط سریال را در 9600 baud مقداردهی اولیه می‌کنیم. همچنین حساس(حس کننده) را راه‌اندازی کرده و یک تایم‌اوت برای خوانش‌ها تعیین می‌کنیم تا اطمینان حاصل شود که به‌طور پیوسته کار می‌کند.

سپس، فاصله را در تابع loop می‌خوانیم، جایی که مقدار اندازه‌گیری‌شده در نمایشگر مسلسل چاپ می‌شود:

void loop() {
  int distance = sensor.readRangeContinuousMillimeters();
  Serial.print("Distance: ");
  Serial.print(distance);
  Serial.print("mm");
  if (sensor.timeoutOccurred()) { Serial.print(" TIMEOUT"); }
  Serial.println();
  delay(100);
}

این شِفر (کود) فاصله را بر حسب میلی‌متر می‌خواند و آن را در نمایشگر مسلسل چاپ می‌کند. اگر تایم‌اوت رخ دهد، نشان می‌دهد که حساس(حس کننده) خوانش معتبری دریافت نکرده است.

نمایش / چه انتظاری داشته باشید

وقتی برنامه را اجرا می‌کنید، باید شروع به مشاهدهٔ اندازه‌گیری‌های فاصله در نمایشگر مسلسل کنید. خروجی هنگام نزدیک یا دور کردن اجسام نسبت به حساس(حس کننده) نوسان خواهد داشت. ممکن است گهگاهی پیام‌های timeout را ببینید اگر حساس(حس کننده) نتواند خوانشی بگیرد (در ویدئو در 10:30). برای افزایش دقت، میانگین چندین اندازه‌گیری را در نظر بگیرید.

تصاویر

VL53L0X 200cm range sensor
VL53L0X 200cm range sensor
Arduino wiring VL53L0X laser distance sensor
Arduino wiring VL53L0X laser distance sensor
103-Measureing distance using VL53L0X TOF range sensor
زبان: C++
کپی شد!

مواردی که ممکن است به آن‌ها نیاز داشته باشید

فایل‌ها📁

فایل Fritzing

سایر فایل‌ها