2. 飞行时间测距原理:dToF 与 iToF 的硬核拆解

好,咱们进入正题。飞行时间测距,说白了就是「光跑多远,我算多远」。但具体怎么算?这里面分了两条技术路线:直接法和间接法。我当年刚接触 ToF 时,也被这两个概念绕晕过。今天咱们彻底把它理清楚。

2.1 直接飞行时间(dToF)—— 简单粗暴,但很准

dToF 的思路非常直观:我发一个光脉冲,等它反射回来,直接掐表算时间。公式就是初中物理那个:

距离 = (光速 × 飞行时间) / 2

除以 2 是因为光走了个来回。嗯,这里要注意:光速是 3×10⁸ m/s,时间精度得做到皮秒级。1 皮秒对应约 0.15 mm 的距离分辨率。所以 dToF 的核心器件是单光子雪崩二极管(SPAD)和高速时间数字转换器(TDC)。

核心要点: dToF 测量的是「绝对时间」,精度高,但需要高精度计时电路。适合远距离、高动态场景。

我在项目中遇到过一个问题:强光环境下,SPAD 容易饱和。你想想看,太阳光里的光子比你的激光多得多,探测器直接「懵了」。后来我们用了时间门控和窄带滤波,才把信噪比拉回来。

2.2 间接飞行时间(iToF)—— 曲线救国,但更稳

iToF 不直接测时间,它测相位差。我发一个连续波(通常是正弦波或方波),反射回来的波会有相位偏移。这个偏移量就对应了飞行时间。

公式长这样:

距离 = (c × Δφ) / (4π × f_mod)

其中 f_mod 是调制频率。举个例子:100 MHz 的调制频率,一个 2π 周期对应 1.5 米。相位测量精度做到 1°,距离分辨率就是 4.2 mm 左右。

我的经验: iToF 的精度受限于调制频率和相位解调电路。我建议在选型时,先算清楚你的最大测距范围对应的相位周期数。否则容易「相位模糊」—— 距离超过一个周期,你就分不清是 1.5 米还是 3 米了。

iToF 的典型实现是 4 相位采样法。我在 0°、90°、180°、270° 四个相位点分别采样,然后通过反正切算出相位差。代码实现很简单:

// 四相位采样解算
float phase = atan2(Q3 - Q1, Q0 - Q2);
float distance = (c * phase) / (4 * PI * f_mod);

注意:Q0~Q3 是四个相位的电荷积分值。实际项目中,这些值会受到环境光、温度漂移的影响。我曾经因为没做温度补偿,测距结果在 40°C 时漂了 5%。

2.3 脉冲法与连续波法对比 —— 谁更香?

咱们直接上表格,一目了然:

对比维度 脉冲法(dToF) 连续波法(iToF)
测量原理 直接测量飞行时间 测量相位偏移
核心器件 SPAD + TDC CMOS 像素 + 解调器
精度 高(皮秒级) 中等(取决于调制频率)
最大测距 可达数百米 通常 10 米以内
抗环境光 弱(需时间门控) 较强(差分采样)
多路径干扰 严重(需算法补偿) 中等(可建模消除)
功耗 低(脉冲工作) 较高(连续发射)
典型应用 激光雷达、手机 3D 扫描 人脸识别、手势控制

避坑指南: 我曾经在一个扫地机器人项目里选了 dToF,结果因为多路径干扰(地板反射 + 墙壁反射),测距值来回跳了 20 cm。后来换成 iToF 配合多频调制,才把误差压到 2 cm 以内。所以选型时别只看精度,要看你的场景里有没有「反射地狱」。

2.4 核心逻辑框架图

下面这张图是我自己画的,把 dToF 和 iToF 的完整链路串起来了。你看一眼就能明白两者的本质区别:

dToF vs iToF 核心逻辑对比 激光发射器 脉冲法:短脉冲发射 连续波法:正弦波调制 分束器 目标物体 SPAD + TDC CMOS 像素 + 解调器 输出:绝对时间 → 距离 输出:相位差 → 距离 反射光

你看,左边 dToF 走的是「脉冲发射 → 时间测量」的直球路线,右边 iToF 走的是「连续波调制 → 相位解算」的迂回路线。两者各有千秋,没有绝对的好坏。

2.5 我的选型建议

说了这么多,到底怎么选?我个人习惯看三个维度:

  1. 测距范围: 超过 10 米,优先 dToF;10 米以内,iToF 性价比更高。
  2. 环境光强度: 户外强光下,iToF 的差分采样更抗造;室内弱光,dToF 的 SPAD 更灵敏。
  3. 多路径干扰: 如果你的场景有玻璃、镜面、多反射面,iToF 配合多频调制更容易处理。

一个小技巧: 我经常在原型阶段同时评估两种方案。先用 dToF 模块快速验证最大测距,再用 iToF 模块评估精度和稳定性。最后根据实测数据做决策,而不是拍脑袋。

好了,这一章的核心内容就是这些。记住:dToF 是「计时器」,iToF 是「相位计」。理解了这个本质区别,后面的多路径干扰消除就好办了。


专注资料整理