سنسور ToF VL53L1X چیست؟ (مبتدی)
سنسور VL53L1X از STMicroelectronics یک سنسور ToF (Time of Flight — زمان پرواز نور) است که با ارسال پالس لیزر نادیدنی و اندازهگیری زمان بازگشت آن، فاصله را با دقت ±۱ میلیمتر در برد تا ۴ متر اندازه میگیرد — ۱۰ برابر دقیقتر از سونار HC-SR04!
این سنسور از I2C استفاده میکند و کتابخانه آردوینو SparkFun دارد. با نصب آن روی جلوی UGV و تنظیم آستانه فاصله (مثلاً ۳۰cm)، میتوان یک سیستم ترمز اضطراری ساخت که قبل از برخورد با مانع، UGV را متوقف کند.
محصولی که میسازید
سیستم ترمز اضطراری UGV با VL53L1X — اتوماتیک متوقف میشود.
- هزینه سنسور: ۵-۸ دلار
- دقت فاصله: ±۱mm
- زمان واکنش: زیر ۵۰ms
کد آردوینو — ترمز اضطراری
#include <Wire.h>
#include <SparkFun_VL53L1X.h>
SFEVL53L1X distanceSensor;
const int L_F=6,L_B=7,R_F=8,R_B=9;
const int STOP_DIST = 300; // mm — توقف در ۳۰cm
const int SLOW_DIST = 600; // mm — کاهش سرعت در ۶۰cm
void motors(int lf,int lb,int rf,int rb) {
digitalWrite(L_F,lf); digitalWrite(L_B,lb);
digitalWrite(R_F,rf); digitalWrite(R_B,rb);
}
void setup() {
Wire.begin();
distanceSensor.begin();
distanceSensor.setTimingBudgetInMs(20); // 20ms → 50Hz
distanceSensor.setIntermeasurementPeriod(22);
distanceSensor.startRanging();
int pins[]={L_F,L_B,R_F,R_B};
for(int p:pins) pinMode(p,OUTPUT);
}
void loop() {
if(distanceSensor.checkForDataReady()) {
int dist = distanceSensor.getDistance();
distanceSensor.clearInterrupt();
if(dist < STOP_DIST) {
motors(0,0,0,0); // توقف اضطراری
Serial.println("EMERGENCY STOP: " + String(dist) + "mm");
} else if(dist < SLOW_DIST) {
// کاهش سرعت (PWM analogWrite)
analogWrite(9, map(dist,STOP_DIST,SLOW_DIST,100,255));
analogWrite(11, map(dist,STOP_DIST,SLOW_DIST,100,255));
motors(1,0,1,0);
} else {
motors(1,0,1,0); // سرعت کامل
}
}
}
مقایسه سنسورهای فاصله برای UGV
| سنسور | دقت | برد | مناسب |
|---|---|---|---|
| HC-SR04 (سونار) | ±۳mm | ۲cm-۴m | اقتصادی |
| VL53L0X | ±۳mm | تا ۲m | محیط داخلی |
| VL53L1X ✓ | ±۱mm | تا ۴m | UGV بهترین |
| TF-Mini LiDAR | ±۱cm | تا ۱۲m | دوربرد |