TF Mini LiDAR (ToF) 激光测距 (12m)

简介

TFmini

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

TF Mini LiDAR (ToF) 激光测距 (12m)

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℃,请勿在此温度范围外存储,以免产生风险。
  • 请勿打开外壳进行本使用说明以外的装配或保养,以免影响产品防护性能,造成产品失效。
  • 产品在探测高反射率物体,如镜面、光滑地砖、平静的牛奶液面时,会有失效的风险。
  • 当产品与被测目标之间有透明物体,如玻璃、水时,会有失效的风险。
  • 当产品发射接收窗口被污物覆盖时,会有失效的风险,请保持窗口干净。发射接收窗口为红透亚克力材质,请勿让产品接触酒精,会导致产品损坏。
  • 本产品线缆较细,请在使用时不要用力拉拽线缆,会导致产品损坏。

TFLuna

TF-Luna LiDAR(8m)激光测距

TF-Luna 是一款基于 ToF 原理的单点测距雷达,采用 850nm 红外光源,配合独特的光学,电学设计,可以实现稳定、精准、高灵敏的距离测量。
产品内置多种应用环境及目标的适配算法,并开放了多种可调节配置和参数。可以保证在复杂环境中具有优良的测距性能,满足客户复杂的应用场景需求。

⚠注意事项:

  • 本产品只能由合格的专业人员维修,且只能使用原厂备件,以保证产品的性能和安全性。
  • 产品本身无极性保护和过电压保护,请按说明书内容正确接线和供电。
  • 产品的工作温度为 -10℃~60℃,请勿在此温度范围外使用,以免产生风险。
  • 产品的存储温度为 -20℃~75℃,请勿在此温度范围外存储,以免产生风险。
  • 请勿打开外壳进行本使用说明以外的装配或保养,以免影响产品防护性能,造成产品失效。
  • 产品在探测高反射率物体,如镜面、光滑地砖、平静的牛奶液面时,会有失效的风险。
  • 当产品与被测目标之间有透明物体,如玻璃、水时,会有失效的风险。
  • 当产品发射接收窗口被污物覆盖时,会有失效的风险,请保持窗口干净。
  • 由于产品线路板直接裸露,请勿直接用手触碰线路板。如有需求,请佩戴静电手环或防静电手套。否则产品会有失效的风险,具体表现为产品无法正常工作。

技术规格

TFmini

  • 电压适用范围: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

TFmini Plus

产品性能

  • 测量范围: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

TFLuna

产品性能

  • 测量范围 0.2m~8m@90%反射率
  • 准确度 c6cm@ (0.2m-3m) ²±2%@(3m-8m)
  • 距离分辨率 1cm
  • 帧率 100Hz³
  • 抗环境光能力 70KIux
  • 工作温度 -10℃-60℃

光学参数

  • 光源 VCSEL
  • 中心波长 850nm
  • 人眼安全 Class1 (EC60825)
  • 视场角 2°4
  • 电学参数
  • 供电电压 5V±0.1V
  • 平均电流≤70mA
  • 功耗≤0.35W
  • 峰值电流 150mA
  • 通信电平 LVTTL(3.3V)
  • 通信接口 UART、I2C、I/O

其他

  • 尺寸 35mmx21.25mmx13.5mm(长x宽x高)
  • 壳体材质 ABS/PC
  • 储存温度 -20°C~75℃
  • 重量<5g

引脚说明

TFmini

标号 名称 功能描述
黑线 GND 电源负极
红线 VCC 电源正极
蓝线 RXD 串口接收
绿线 TXD 串口发射

TFmini Plus



标号 名称 功能描述
黑线 GND 电源负极
红线 VCC 电源正极
蓝线 RXD 串口接收
绿线 TXD 串口发射

TFLuna

TF-Luna LiDAR(8m)激光测距
标号 名称 功能描述
黑线 GND 电源负极
红线 VCC 电源正极
蓝线 RXD 串口接收
绿线 TXD 串口发射

使用教程

此处共列出两种方式,旨在让大家对单点激光测距仪有一个直观的认识。

  1. Arduino使用方法
  2. PC上位机调试
  3. 黑白线检测(巡线检测)

准备

Arduino调试方法(PC串口)

鉴于TF mini为串口设备,而普通Arduino只有一个硬件串口,所以推荐使用软串口来配合传感器使用,用户也可以使用多串口设备,诸如Arduino Leonardo,Arduino Mega2560等设备,此处使用最常见的Arduino UNO作为控制器,定义D12和D13为软串口。

Arduino连线图

  • 使用PC端的串口软件来显示检测的距离以及对整个系统供电
TF Mini 与 Arduino UNO 连接 串口显示接法 (使用IO扩展板)


TF Mini Plus 与 Arduino UNO 连接 串口显示接法


TF Luna 与 Arduino UNO 连接 串口显示接法


Arduino调试代码

  • 需要使用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](https://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 cm
Strength = 600

Arduino LCD距离数值显示

实际应用场景中,传感器一般会在脱机状态下工作,我们特别提供了一个使用案例,使用锂电池供电,用LCD来显示距离测量数据,非常适合室外使用。

Arduino连接图

TF Mini 与 Arduino UNO 连接 LCD显示接法 (使用IO扩展板)


##### TF Mini Plus 与 Arduino UNO 连接 LCD显示接法

Arduino测试代码

/*
  * @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](https://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 / 1000);
    lcd.print(  distance / 100 % 10);
    lcd.print('.');
    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上位机显示

除了通过单片机来读取数据外,调试阶段,我们还可以使用PC上位机来读取距离输出。点击此处下载

连接图

将TF Mini通过一个USB转TTL模块连接到电脑上,通过上位机读取数据

TF Mini 上位机显示接法


##### TF Mini Plus 上位机显示接法

上位机数据显示



黑白线检测

TF Mini激光测距雷达是一种光学传感器,但凡光学传感器,对于光的敏感度会比较高。我们可以利用这一特性实现近距离黑白线检测。(注:黑色的反射率低;白色的反射率高;)
我们利用信号强度“Strength”来分辨两种颜色。

接线图

TF Mini 识别黑白色接法 (使用IO扩展板)



#### TF Mini Plus识别黑白色接法

Arduino代码

  • 注意:代码需与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](https://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);
    }
}
  • 下载好程序后,在同一距离连续地反复测量黑色和白色纸张,通过串口绘图工具可见信号强度的变化情况

常见问题

更多问题及有趣的应用,可以 访问论坛 进行查阅或发帖。

更多

DFshopping_car1.png DFRobot商城购买链接