TF-NOVA

简介

TF-NOVA 是一款基于脉冲时间飞行法测距(PToF)的传感器,发射端的激光器经过发射透镜准直发射出脉冲激光信号,经被测物体的反射,回波信号进入接收透镜,被接收端的探测器检测到。内部电路可计算发射与回波信号的时间差,根据光速即可计算被测物体与LiDAR之间的距离。

一字探测区域
TF-NOVA可以实现水平14°和垂直1°的独特探测区域,可在1m外检测到25 × 1.7cm²的区域,面积相当于两根筷子平放。

体积小,更易集成
机身紧凑小巧,尺寸仅为26.5mm × 21.05mm × 12mm,体积约7 cm³,比5号电池还小,能够融入追求轻薄化、紧凑型的硬件架构之中,为系统集成提供极大的便利性与灵活性。

室外稳定检测
无论在户外强光下还是夜晚弱光环境中,TF-NOVA都能在2 m范围内准确地检测到小至5 cm的黑色低反射率障碍物,最大程度地保障设备的运行安全性。

接口齐全
提供多种主流数据接口例如UART、I²C、I/O,支持单机操作及网络组网使用。同时可配置为I/O输出模式,显著减少数据处理的工作量。

特性

  • 体积小巧,易集成
  • 角度14°x1°一字区域探测
  • 室内外皆可稳定测量
  • UART、I2C、IO三种输出方式

应用场景

  • 智动门防撞
  • 机器人避障
  • 穿梭车避障
  • 停车位检测
  • 辅助对焦

技术规格

  • 性能参数
    • 测量范围:≥14m@90%反射率0Klux,≥13m@10%反射率0Klux,≥7m@90%反射率100Klux,≥4m@10%反射率100Klux
    • 盲区:0.1m
    • 准确度:±5cm@0.1-4m
    • 精度:<1cm(1sigma)@0.1-4m
    • 距离分辨率:1cm
    • 帧率:1-900hz,默认100hz
  • 光学性能
    • 光源:VCSEL
    • 中心波长:905nm
    • 激光发射视场角:典型值14°x1°
    • 激光安全等级:Class 1 Eye-safe [EN60825]
  • 机械电气参数
    • 平均功耗:< 500mW
    • 启动峰值电流:< 850mA
    • 启动时间:< 1s
    • 供电电压:DC 5±5%V
    • 工作温度:-25℃ ~ +70℃
    • 存储温度:-30℃ ~ +80℃
    • 尺寸:典型值26.5x21.05x12.0mm
    • 重量:< 5g
    • 硬件接口:1.25mm-5Pin
    • 前窗口镜防护等级:IP65

引脚示意图

线序 颜色 功能描述
PIN1 红线 5V
PIN2 黑线 GND
PIN3 黄线 TXD(3.3V)/SCL
PIN4 绿线 RXD(3.3V)/SDA
PIN5 蓝线 IO

TF-NOVA通过指令和寄存器切换输出模式,默认为UART输出,详情指令查看使用手册。

尺寸图

接入Arduino使用教程

硬件准备

软件准备

UART模式硬件连接

演示代码

#include <DFRobot_TFmini.h>
SoftwareSerial mySerial(8, 9);  // RX, TX
DFRobot_TFmini TFmini;
char COM[6] = { 0x5A, 0x06, 0x0A, 0x01, 0x01, 0x6C };   //I2C模式指令
char COM1[4] = { 0x5A, 0x04, 0x11, 0x6F };  //保存设置指令
uint16_t distance, strength;

void setup() {
  Serial.begin(9600);
  TFmini.begin(mySerial);
  /*
   * 发送指令,需要切换为I2C输出模式时打开
   */
  // mySerial.print(COM);  
  // delay(200);
  // mySerial.print(COM1);
}

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模式硬件连接

演示代码

#include <Wire.h>  //I2C library
#define deviceaddress 0x10
uint16_t data;
uint8_t COM[4] = { 0 };
uint8_t COM1[1] = { 0x00 };        //串口模式
uint8_t COM2[2] = { 0x01, 0x02 };  //保存、重启
uint8_t COM3[1] = { 0x64 };        //帧率值,默认0x64(100hz)
uint8_t COM4[1] = { 0 };
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, COM3, 1);

  /*
   * 写入寄存器,需要切换为UART模式时打开
   */
  // i2c_writeN(0x1E, COM1, 1);  
  // delay(200);
  // i2c_writeN(0x20, COM2, 2);
}

void loop() {
  i2c_readN(0x00, COM, 2);
  data = COM[1] << 8 | COM[0];
  i2c_readN(0x26, COM4, 1);
  Serial.print("Distance =");
  Serial.print(data);
  Serial.print(" cm");
  Serial.print("  FPS =");
  Serial.print(COM4[0]);
  Serial.println(" hz");
  delay(100);
}

结果

打印采集到的距离值、帧率值。

更多资料下载

TF-NOVA 用户手册.pdf
上位机

常见问题

  • UART、I2C输出模式通过指令或寄存器进行切换
  • TF-NOVA工作电压5V,3.3V无法工作

DFshopping_car1.png DFRobot商城购买链接