_SKU_SEN0259_TF_Mini_LiDAR_ToF__激光测距传感器 - jimaobian/DFRobotWikiCn GitHub Wiki

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库,可以非常方便地集成到系统中。

warning_yellow.png
注意事项:

产品在探测高反射率物体,如镜面、光滑地砖时, 会有失效的风险。

当产品与被测目标之间有透明物体,如玻璃、水时,会有失效的风险。

请勿直接用手触碰线路板。如有需求,请佩戴静电手环或防静电手套。 |

TFmini Plus

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,和我们的大拇指大小相当,身材小巧但测距性能优良,可作为测距工具用来检测前方障碍物的距离;也可在我们的创客爱好者手中成为机器人的眼睛,为机器人的安全避障和路线选择提供距离信息;亦可应用到汽车上作为防撞预警;为无人机定高辅助无人机降落等各类场景中。

warning_yellow.png
注意事项:

本产品只能由合格的专业人员维修,且只能使用原厂备件,以保证产品的性能和安全性。

产品本身无极性保护和过电压保护,请按说明书内容正确接线和供电。

产品的工作温度为 -20℃~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

引脚说明

| | | | ------------------------------------------- | | | TFmini | |

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

| | | | --------------------------------------------------- | | | TFmini Plus | |

标号 名称 功能描述
黑线 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串口显示接法 TFmini Plus串口显示接法

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](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

Arduino LCD距离数值显示

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

Arduino连接图

TFmini LCD显示接法 TFmini Plus 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](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

LCD数据显示

PC上位机显示

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

连接图

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

TFmini上位机显示接法 TFmini上位机显示接法

上位机数据显示

TF Mini上位机数据显示

黑白线检测

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

接线图

TFmini识别黑白色接法 TFmini 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](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常见问题解答)

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

更多

DFshopping_car1.png DFRobot商城购买链接

⚠️ **GitHub.com Fallback** ⚠️