4. 测距原理
超声测距的底层物理量只有一个:声波从换能器出发,遇到目标后返回,被同一或另一换能器接收。硬件系统真正要做的,是把这段“看不见的往返”转换成可被 MCU 读取的时间、相位或频率差,再换算成距离。不同方法对硬件的要求差异很大,选错方法往往导致电路复杂度和成本成倍上升。
一、脉冲回波法:最常用的飞行时间方案
脉冲回波法(Pulse-Echo)让换能器发射若干个周期的超声脉冲,随后立即切换为接收状态,等待回波。设声速为 c,往返时间为 t,则距离 d = c·t/2。空气中声速受温度影响明显,常用近似式 c ≈ 331.4 + 0.607·T(m/s,T 为摄氏度)。例如 25 ℃ 时 c ≈ 346.6 m/s,若测得 t = 5.8 ms,则 d ≈ 346.6 × 0.0058 / 2 ≈ 1.005 m。
硬件上,脉冲回波法的关键是“发射—接收切换”和“阈值检测”。发射时驱动电压可达几十伏,接收回波却只有毫伏级,因此需要收发隔离、限幅保护和可变增益放大。回波到达时刻通常由比较器在超过阈值时产生中断,MCU 用定时器捕获该时刻。
二、相位法:用相位差提高分辨率
相位法发射连续正弦超声,接收回波与发射信号之间存在相位差 Δφ。由于 Δφ 与往返距离呈周期性关系,单频测量只能得到“距离对波长取模”的结果,存在多值模糊。设波长为 λ,则 Δφ = 2π·(2d/λ) mod 2π。要得到绝对距离,必须配合粗测(如脉冲法)或采用多频解模糊。
相位法的优势在于分辨率高:相位检测可分辨到几度,对应距离分辨率可达 λ/几十。例如 40 kHz 超声在空气中 λ ≈ 8.6 mm,若相位分辨率为 5°,理论分辨率约 0.12 mm。但硬件需要正交解调、低通滤波和相位计算,对 ADC 采样率和信号链噪声要求较高。
三、频率调制法:用扫频解距离
频率调制法(FMCW 思路)发射频率随时间线性变化的扫频信号,回波与当前发射信号混频后得到差频 f_b。差频与往返时间成正比:f_b = (B/T_sweep)·t,其中 B 为扫频带宽,T_sweep 为扫频周期。再结合 t = 2d/c,可得 d = c·T_sweep·f_b/(2B)。
该方法把“时间测量”转化为“频率测量”,在硬件上更利于数字信号处理,且抗干扰能力较强。但超声换能器本身带宽窄,扫频范围受限,实际系统中常用于中短距离、高精度场景,或与脉冲法形成互补。
四、飞行时间测量与距离计算流程
无论采用哪种方法,最终都要落到“时间—距离”换算。典型流程如下:
- MCU 触发发射,同时启动定时器;
- 换能器发射脉冲或扫频信号,经过收发切换;
- 回波到达,比较器或 ADC 产生到达标志;
- 定时器捕获时间戳,得到原始 t;
- 扣除固定延迟 t0,代入温度补偿后的声速 c;
- 计算 d = c·(t − t0)/2,并做中值滤波或滑动平均。
其中 t0 是硬件链路延迟,包括驱动延时、比较器响应、线缆传输等,通常通过已知距离标定获得。忽略 t0 会在近距离产生明显偏差,例如 t0 = 200 μs 时,对应距离误差约 3.5 cm。
五、方法对比与选型清单
| 方法 | 核心测量量 | 典型分辨率 | 硬件复杂度 | 适用场景 |
|---|---|---|---|---|
| 脉冲回波法 | 往返时间 t | 厘米级 | 低 | 倒车雷达、避障、液位 |
| 相位法 | 相位差 Δφ | 亚毫米级 | 高 | 精密测距、位移监测 |
| 频率调制法 | 差频 f_b | 毫米级 | 中高 | 中短距高精度、抗干扰 |
| 飞行时间计算 | t 与 c 的换算 | 取决于前端 | — | 所有方法的最终环节 |
六、常见误区与复盘
误区一:只测一次就输出距离。超声回波易受多径、噪声和温度影响,单次测量抖动可达数厘米。工程上应连续采样 5~9 次,取中值或剔除异常值后再输出。
误区二:忽略声速温度补偿。0 ℃ 与 40 ℃ 的声速相差约 24 m/s,在 2 m 距离上可造成约 7 cm 误差。低成本方案可用温度传感器实时修正 c。
误区三:把 t 直接当单程时间。回波时间是往返时间,忘记除以 2 会使距离翻倍,这是初学者最常见的错误。
调试建议:先用已知距离(如 0.5 m、1 m、2 m)标定 t0 和声速系数,再观察不同目标材质(纸板、玻璃、人体)的回波幅度差异,最后加入温度补偿和滤波。只有把“物理量—电信号—时间戳—距离”这条链路逐段验证,测距结果才稳定可信。
// 距离计算示例(温度补偿 + 固定延迟扣除)
float temperature = 25.0f; // 摄氏度
float c = 331.4f + 0.607f * temperature; // m/s
float t_us = 5800.0f; // 往返时间,微秒
float t0_us = 200.0f; // 硬件固定延迟,微秒
float d = c * (t_us - t0_us) * 1e-6f / 2.0f;
// 结果约 0.970 m
总结来看,脉冲回波法适合大多数低成本测距场景,相位法和频率调制法用于更高精度需求,而飞行时间测量与距离计算是所有方法的公共收口。硬件设计时应先明确精度、量程、成本和抗干扰要求,再反向选择发射驱动、接收链路和计时方案,避免“先画电路、后补原理”的被动局面。