简介
TFS20-L是一款全集成单通道dToF测距小型模组,集成高灵敏红外增强SPAD传感器,量程可达20m。采用SPAD芯片全集成方案、直方图统计算法以及快速TDC架构等,实现高精度测距的同时,具备15m@100 Klux的抗阳光能力,并具有反射率校正功能。
小体积,高性能
尺寸小、重量轻、测得准而远,强环境光下测距能力依旧优异,是微小型dToF应用的绝佳选择。
功能丰富,应用场景广
TFS20-L集成电源模块,采用3.3 V单电源供电,内置温度补偿功能。支持I2C、UART接口,易于集成和使用,并采用紧凑可靠的光学封装,适用于无人机定高、无人机辅助降落、机器人防跌落,智能设备触发。
特性
- 体积小、重量轻,易集成
- 抗环境光强,室内外皆可稳定测量
- UART、I2C、两种种输出方式
应用场景
- 无人机定高
- 无人机辅助降落
- 机器人防跌落
- 智能设备触发
技术规格
- 性能参数
- 测量范围:0.2-20m@90%反射率0Klux,0.2-12m@10%反射率0Klux,0.2-15m@90%反射率100Klux,0.2-9m@10%反射率100Klux
- 准确度:±6cm@0.2-6m,1%@≥6m
- 精度:2cm(0.2-6m)
- 距离分辨率:1cm
- 帧率:0/20/50/100(默认)/250Hz
- 抗环境光能力:100Klux
- 光学性能
- 光源:VCSEL
- 中心波长:905nm
- 视场角:<2°
- 激光安全等级:Class 1 Eye-safe [EN60825]
- 机械电气参数
- 平均功耗:≤0.43W
- 峰值电流:< 130mA@3.3V
- 供电电压:DC 3.3±9%V
- 通信电平:LVTTL(3.3V)
- 工作温度:-20℃ ~ +60℃
- 存储温度:-40℃ ~ +85℃
- 尺寸:21x15x7.87mm
- 重量:1.35g
- 硬件接口:0.8mm-6Pin(型号WF08006-01207)
引脚示意图

线序 | 颜色 | 功能描述 |
---|---|---|
PIN1 | 红线 | 3.3V激光器供电 |
PIN2 | 黑线 | 3.3V电源正极 |
PIN3 | 黄线 | TXD(3.3V)/SDA |
PIN4 | 绿线 | RXD(3.3V)/SCL |
PIN5 | 蓝线 | GPIO 通信片选 |
PIN6 | 白线 | GND |
TFS20-L通过硬件切换输出模式,PIN5接地为UART模式,PIN5悬空为I2C模式。
尺寸图

接入Arduino使用教程
硬件准备
- Arduino UNO R3开发板 x1
- Arduino UNO IO 传感器扩展板 x1
- TFS20-L LiDAR x1
- 0.8mm转2.54mm杜邦连接线x1


软件准备
- 下载Arduino IDE: 点击下载Arduino IDE
- 下载DFRobot_TFmini库,该库为TF系列单点激光雷达通用库。
UART模式硬件连接
TFS20-L 5脚接GND为UART模式,将Arduino UNO R3开发板的VCC电压调至3.3V,TFS20-L 切勿5V供电,长时间5V供电发烫。
演示代码
#include <DFRobot_TFmini.h>
SoftwareSerial mySerial(8, 9); // RX, TX
DFRobot_TFmini TFmini;
uint16_t distance, strength;
void setup() {
Serial.begin(9600);
TFmini.begin(mySerial);
}
void loop() {
if (TFmini.measure()) {
distance = TFmini.getDistance();
strength = TFmini.getStrength();
Serial.print("Distance = ");
Serial.print(distance);
Serial.println("cm");
Serial.print("Strength = ");
Serial.println(strength);
delay(100);
}
delay(100);
}
结果
打印采集到的距离值、信号强度值。
I2C模式硬件连接
TFS20-L 5脚悬空为I2C模式,将Arduino UNO R3开发板的VCC电压调至3.3V,TFS20-L 切勿5V供电,长时间5V供电发烫。
演示代码
#include <Wire.h>
#define deviceaddress 0x10
uint16_t data;
uint8_t COM[4] = { 0 };
uint8_t COM1[1] = { 0 };
uint8_t COM2[1] = { 0x64 }; //帧率值,默认100hz
uint8_t COM3[1] = { 0x01}; //保存寄存器
uint8_t COM4[1] = { 0x02}; //重启寄存器
void i2c_writeN(uint8_t registerAddress, uint8_t *buf, size_t len) {
Wire.beginTransmission(deviceaddress);
Wire.write(registerAddress);
Wire.write(buf, len);
Wire.endTransmission();
}
int16_t i2c_readN(uint8_t registerAddress, uint8_t *buf, size_t len) {
uint8_t i = 0;
Wire.beginTransmission(deviceaddress);
Wire.write(registerAddress);
if (Wire.endTransmission(false) != 0) {
return -1;
}
Wire.requestFrom(deviceaddress, len);
delay(100);
while (Wire.available()) {
buf[i++] = Wire.read();
}
return i;
}
void setup() {
Wire.begin();
Serial.begin(9600);
/*
* 修改并保存寄存器,需要修改帧率时打开
*/
// i2c_writeN(0x26, COM2, 1);
// delay(200);
// i2c_writeN(0x20, COM3, 1);
// delay(200);
// i2c_writeN(0x21, COM4, 1);
}
void loop() {
i2c_readN(0x00, COM, 2);
data = COM[1] << 8 | COM[0];
delay(200);
i2c_readN(0x26, COM1, 1);
Serial.print("Distance =");
Serial.print(data);
Serial.print(" cm");
Serial.print(" FPS =");
Serial.print(COM1[0]);
Serial.println(" hz");
delay(100);
}
结果
打印采集到的距离值、帧率值。
常见问题
- UART、I2C输出模式通过5脚GPIO进行切换
- TFS20-L工作电压3.3V,切勿5V供电,容易发烫