_SKU_SEN0259_TF_Mini_LiDAR_ToF__激光测距传感器 - jimaobian/DFRobotWikiCn GitHub Wiki
TF Mini LiDAR是一款基于飞行时间技术(ToF)的单向激光测距仪。它由特殊的光学和电子设备构成,内部集成了面向室内室外各种应用环境的适配算法,雷达身材小巧但测距性能优良。可作为测距工具用来检测前方障碍物的距离;亦可以作为机器人的眼睛,为机器人的安全避障和路线选择提供距离信息;在各种机器控制的场景,支持系统的自动化;因为它体积小、重量轻及功耗低的特点,同样适合用作无人机定高和地形跟随。 TF Mini最大探测距离12m,支持100Hz采样分辨率,6米内精度为在4cm以内;6~12米,精度在6厘米以内,FOV视场2.3°,抗干扰性强,可在室外强光下工作,整体重量轻至4.7g。 TF Mini LiDAR采用UART (TTL)通讯接口,可用标准5V供电,平均功耗0.6W,兼容各种arduino控制器。配合DFRobot Gravity IO Expansion Shield,可直插Arduino,无需额外接线。配合DFRobot开发的Arduino库,可以非常方便地集成到系统中。
注意事项: |
产品在探测高反射率物体,如镜面、光滑地砖时, 会有失效的风险。
当产品与被测目标之间有透明物体,如玻璃、水时,会有失效的风险。
请勿直接用手触碰线路板。如有需求,请佩戴静电手环或防静电手套。 |
TFmini Plus是基于我们前面推出的TFmini的升级项目,它是一款小型化,单点测距的产品,配合独特的光学、电学、算法设计,能实现稳定、精准、高灵敏度和高速的距离测量的功能。 TFmini Plus基于TOF(Time of Flight)即飞行时间原理。工作时,产品周期性的向外发出近红外光调制波,调制波遇物体后反射。通过测量调制波往返相位差,得到飞行时间,从而计算出产品与被测目标之间的相对距离。 产品本身既具有TFmini的低成本、小体积、低功耗、测距远等几大优势外,还进一步提升了产品的整体性能。提高了产品的输出帧率,由原来的100Hz提升到了1000Hz,反应更为灵敏;缩小了测距盲区,盲区缩小至10cm;提高了数据准确性及稳定度,还增加了IP65等级防护,能有效防尘防水,在室外强光、不同温度、不同反射率等不同环境下适应性更强,功耗更低,探测频率也更加灵活。同时兼容UART和IIC通信接口,可通过发送指令进行切换。采用标准5V供电,平均功耗仅0.55W,兼容各种Arduino控制器,配合DFRobot开发的Arduino库,可以非常方便地集成到系统中,使用起来更加便捷。 产品尺寸仅为35*21*18.5mm,和我们的大拇指大小相当,身材小巧但测距性能优良,可作为测距工具用来检测前方障碍物的距离;也可在我们的创客爱好者手中成为机器人的眼睛,为机器人的安全避障和路线选择提供距离信息;亦可应用到汽车上作为防撞预警;为无人机定高辅助无人机降落等各类场景中。
注意事项: |
本产品只能由合格的专业人员维修,且只能使用原厂备件,以保证产品的性能和安全性。
产品本身无极性保护和过电压保护,请按说明书内容正确接线和供电。
产品的工作温度为 -20℃~60℃,请勿在此温度范围外使用,以免产生风险。
产品的存储温度为 -20℃~75℃,请勿在此温度范围外存储,以免产生风险。
请勿打开外壳进行本使用说明以外的装配或保养,以免影响产品防护性能,造成产品失效。
产品在探测高反射率物体,如镜面、光滑地砖、平静的牛奶液面时,会有失效的风险。
当产品与被测目标之间有透明物体,如玻璃、水时,会有失效的风险。
当产品发射接收窗口被污物覆盖时,会有失效的风险,请保持窗口干净。发射接收窗口为红透亚克力材质,请勿让产品接触酒精,会导致产品损坏。
本产品线缆较细,请在使用时不要用力拉拽线缆,会导致产品损坏。 |
- 电压适用范围:4.5V~6V
- 通讯接口:UART(TTL)
- 工作范围:0.3m~12m(@室内)
- 10%反射率时最大范围:5m
- 平均功耗:0.6W
- 接收角:2.3°
- 最小分辨率:5mm
- 刷新频率:100Hz
- 测距精度:1% (<6m),2%(6~12m)
- 测距单位:mm
- 波段:850nm
- 尺寸:42mm×15mm×16mm
- 工作温度: 0℃~60℃
- 存储温度:为 -20℃~75℃
- 抗环境光:70Klux
- 重量:4.7g
产品性能
- 测量范围:0.1m~12m
- 准确度:±5cm@(0.1-6m),±1%@(6m-12m)
- 距离分辨率:5mm
- 帧率:1-1000Hz(可调)
- 抗环境光能力:70klux
- 工作温度:-20℃~60℃
- 防护等级:IP65
- 光学参数
- 光源:LED
- 中心波长:850nm
- 信号接收角:3.6°
电学参数
- 输入电压:5V±0.5V
- 平均电流:≤110mA
- 功耗:550mW(低功耗模式:85mW)
- 峰值电流:500mA
- 通信电平:LVTTL(3.3V)
- 通信接口:UART、IIC、I/O
其他
- 壳体材质:ABS+PC
- 存储温度:-20℃~75℃
- 重量:12g
- 尾线线长:30cm
| | | | ------------------------------------------- | | | | |
标号 | 名称 | 功能描述 |
黑线 | GND | 电源负极 |
红线 | VCC | 电源正极 |
蓝线 | RXD | 串口接收 |
绿线 | TXD | 串口发射 |
| | | | --------------------------------------------------- | | | | |
标号 | 名称 | 功能描述 |
黑线 | GND | 电源负极 |
红线 | VCC | 电源正极 |
蓝线 | RXD | 串口接收 |
绿线 | TXD | 串口发射 |
此处共列出两种方式,旨在让大家对单点激光测距仪有一个直观的认识。
- Arduino使用方法
- PC上位机调试
- 黑白线检测(巡线检测)
-
硬件
- 1 x DFRduino UNO R3
- 1 x IO 传感器扩展板 V7.1
- 1 x Gravity: I2C LCD1602彩色背光液晶屏(部分项目使用)
- 1 x 7.4V 2500MA 锂电池(带充放电保护板)
- 1 x USB to Serial 转串口
- 若干 杜邦线
-
软件
- Arduino IDE 点击下载Arduino IDE
- DFRobot TF Mini库 点击下载TF Mini库
- DFRobot LCD库文件 点击下载DFRobot_RGBLCD(Github)
鉴于TF mini为串口设备,而普通Arduino只有一个硬件串口,所以推荐使用软串口来配合传感器使用,用户也可以使用多串口设备,诸如Arduino Leonardo,Arduino Mega2560等设备,此处使用最常见的Arduino UNO作为控制器,定义D12和D13为软串口。
- 使用PC端的串口软件来显示检测的距离以及对整个系统供电
- 需要使用PC串口工具,读到的数据会显示在串口工具界面
|
/*
* @File : DFRobot_TFmini_test.ino
* @Brief : This example use TFmini to measure distance
* With initialization completed, we can get distance value and signal strength
* @Copyright [DFRobot](http://www.dfrobot.com), 2016
* GNU Lesser General Public License
*
* @version V1.0
* @date 2018-1-10
*/
#include <DFRobot_TFmini.h>
SoftwareSerial mySerial(12, 13); // RX, TX
DFRobot_TFmini TFmini;
uint16_t distance,strength;
void setup(){
Serial.begin(115200);
TFmini.begin(mySerial);
}
void loop(){
if(TFmini.measure()){ //Measure Distance and get signal strength
distance = TFmini.getDistance(); //Get distance data
strength = TFmini.getStrength(); //Get signal strength data
Serial.print("Distance = ");
Serial.print(distance);
Serial.println("cm");
Serial.print("Strength = ");
Serial.println(strength);
delay(500);
}
delay(500);
}
|}
- 串口软件显示数据格式如下
Distance = 1000 mm
Strength = 688
实际应用场景中,传感器一般会在脱机状态下工作,我们特别提供了一个使用案例,使用锂电池供电,用LCD来显示距离测量数据,非常适合室外使用。
|
/*
* @File : DFRobot_TFmini_test.ino
* @Brief : This example use TFmini to measure distance
* With initialization completed, we can get distance value and signal strength
* @Copyright [DFRobot](http://www.dfrobot.com), 2016
* GNU Lesser General Public License
*
* @version V1.0
* @date 2018-1-10
*/
#include <Wire.h>
#include <DFRobot_RGBLCD.h>
#include <DFRobot_TFmini.h> //TF Mini header file
SoftwareSerial mySerial(12, 13); // RX, TX
DFRobot_TFmini TFmini;
uint16_t distance,strength;
unsigned int lcd_r = 0, lcd_g = 0, lcd_b = 0;
unsigned long delaytime = 0, lighttime = 0;
DFRobot_RGBLCD lcd(16, 2);
void setup()
{lcd.init();
delay(5000);
Serial.begin(115200);
Serial.println("hello start");
TFmini.begin(mySerial);
lighttime = millis();
lcd.setCursor(0, 0);
lcd.print("Dis:");
lcd.setCursor(0, 1);
lcd.print("Str:");
lcd.setRGB(255, 255, 000);
}
void loop() {
/******************LCD*******************/
lcd_r = random(256);
delayMicroseconds(10);
lcd_g = random(256);
delayMicroseconds(10);
lcd_b = random(256);
if (millis() - lighttime > 3000)
{
lcd.setRGB(lcd_r, lcd_g, lcd_b);
lighttime = millis();
}
//delay(100);
/**************TF Mini***************/
if(TFmini.measure()){ //Measure Distance and get signal strength
distance = TFmini.getDistance(); //Get distance data
strength = TFmini.getStrength(); //Get signal strength data
lcd.setCursor(5, 0); //LCD display
lcd.print( distance / 10000);
lcd.print( distance/ 1000 % 10);
lcd.print('.');
lcd.print( distance / 100 % 10);
lcd.print( distance / 10 % 10);
lcd.print( distance % 10);
lcd.print(" m");
lcd.setCursor(5, 1);
lcd.print(strength / 10000);
lcd.print(strength / 1000 % 10);
lcd.print(strength / 100 % 10);
lcd.print(strength / 10 % 10);
lcd.print(strength % 10);
}
}
|}
- LCD显示屏上显示下列数据格式
Dis: 05.000 m
Str: 00600
除了通过单片机来读取数据外,调试阶段,我们还可以使用PC上位机来读取距离输出。点击此处下载
将TF Mini通过一个USB转TTL模块连接到电脑上,通过上位机读取数据
TF Mini激光测距雷达是一种光学传感器,但凡光学传感器,对于光的敏感度会比较高。我们可以利用这一特性实现近距离黑白线检测。(注:黑色的反射率低;白色的反射率高;) 我们利用信号强度“Strength”来分辨两种颜色。
- 注意:代码需与TF Mini库配合使用
|
/*
* @File : DFRobot_TFmini_test.ino
* @Brief : This example use TFmini to measure distance
* With initialization completed, we can get distance value and signal strength
* @Copyright [DFRobot](http://www.dfrobot.com), 2016
* GNU Lesser General Public License
*
* @version V1.0
* @date 2018-1-10
*/
#include <DFRobot_TFmini.h>
SoftwareSerial mySerial(12, 13); // RX, TX
DFRobot_TFmini TFmini;
uint16_t distance,strength;
void setup(){
Serial.begin(115200);
TFmini.begin(mySerial);
}
void loop(){
if(TFmini.measure()){ //Measure Distance and get signal strength
strength = TFmini.getStrength(); //Get signal strength data
Serial.print("Strength = ");
Serial.println(strength);
}
}
|}
- 下载好程序后,在同一距离连续地反复测量黑色和白色纸张,通过串口绘图工具可见信号强度的变化情况
(此处添加TF Mini常见问题解答)
| 更多问题及有趣的应用,可以 访问论坛 进行查阅或发帖。 |