Introduction

The TFS20-L is a fully integrated single-channel dToF ranging compact module, incorporating a high-sensitivity infrared-enhanced SPAD sensor, with a measurement range of up to 20 meters. Utilizing an all-in-one SPAD chip solution, histogram statistics algorithms, and a fast TDC architecture, it achieves high-precision ranging while offering 15m@100 Klux sunlight resistance and reflectivity correction functionality.

Compact Size, High Performance
With its small dimensions, lightweight design, and exceptional accuracy and range, the TFS20-L delivers outstanding performance even under strong ambient light, making it an ideal choice for miniaturized dToF applications.

Rich Features, Broad Applications
The TFS20-L integrates a power module, operates on a 3.3V single power supply, and features built-in temperature compensation. It supports I2C and UART interfaces for easy integration and use, along with a compact and reliable optical package. Suitable for UAV altitude hold, UAV-assisted landing, robot anti-drop, and smart device triggering.

Features

  • Compact size, lightweight, and easy integration
  • Strong ambient light resistance for stable indoor/outdoor measurements
  • Dual output interfaces: UART and I2C

Applications

  • UAV altitude hold
  • UAV-assisted landing
  • Robot anti-drop
  • Smart device triggering

Specifications

  • Performance Parameter
  • Measurement range:
    0.2–20m@90%reflectivity,0Klux;0.2–12m@10%reflectivity,0Klux;
    0.2–15m@90%reflectivity,100Klux; 0.2–9m@10%reflectivity,100Klux
  • Accuracy: ±6cm @0.2–6m; 1%@≥6m
  • Precision: 2cm (0.2–6m)
  • Distance resolution: 1cm
  • Frame rate: 0/20/50/100 (default)/250Hz
  • Ambient light resistance: 100 Klux
  • Optical Performance
  • Light source: VCSEL
  • Central wavelength: 905nm
  • Field of view (FoV): <2°
  • Laser safety class: Class 1 Eye-safe [EN60825]
  • Mechanical & Electrical Parameters
  • Average power consumption: ≤0.43W
  • Peak current: <130mA @ 3.3V
  • Supply voltage: DC 3.3±9%V
  • Communication level: LVTTL (3.3V)
  • Operating temperature: -20℃ to +60℃
  • Storage temperature: -40℃ to +85℃
  • Dimensions: 21×15×7.87mm
  • Weight: 1.35g
  • Hardware interface: 0.8mm 6-pin (Model: WF08006-01207)

Board Overview

Num Label Description
PIN1 Red line 3.3V laser power supply
PIN2 Black line 3.3V power supply positive
PIN3 Yellow line TXD(3.3V)/SDA
PIN4 Green line RXD(3.3V)/SCL
PIN5 Blue line GPIO communication chip select
PIN6 White line GND

TFS20-L switches the output mode through hardware. When PIN5 is grounded, it is UART mode, and when PIN5 is left floating, it is I2C mode.

Dimensional Drawing

Tutorial

Requirements

  • Hardware
    • DFRduino UNO R3 x 1
    • Gravity: IO Expansion Shield for Arduino V7.1 x1
    • TFS20-L LiDAR x1
    • 0.8mm to 2.54mm Dupont connector cable (20cm) x1

UART Mode Connection Diagram

Connect pin 5 of TFS20-L to GND for UART mode. Adjust the VCC voltage of Arduino UNO R3 development board to 3.3V. Do not power TFS20-L with 5V. It will get hot if powered with 5V for a long time.

Sample Code

#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);
}

Expected Results

Print the collected distance value and signal strength value.

I2C Mode Connection Diagram

TFS20-L 5th pin is left floating in I2C mode, adjust the VCC voltage of Arduino UNO R3 development board to 3.3V, TFS20-L should not be powered by 5V, as it will get hot if powered by 5V for a long time.

Sample Code

#include <Wire.h>
#define deviceaddress 0x10
uint16_t data;
uint8_t COM[4] = { 0 };
uint8_t COM1[1] = { 0 };
uint8_t COM2[1] = { 0x64 }; //Frame rate value, default 100hz
uint8_t COM3[1] = { 0x01}; //Save register
uint8_t COM4[1] = { 0x02}; //Restart register
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);
/*
* Modify and save registers, open when you need to modify the frame rate
*/
// 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);
}

Expected Results

Print the collected distance value and frame rate value.

FAQ

  • UART and I2C output modes are switched via 5-pin GPIO
  • TFS20-L operates at 3.3V, do not power it with 5V, it may get hot easily

More Documents