Project

General

Profile

issue #30 » 28kHz超声信号软硬结合滤波方案.md

鑫阳 张, 08/16/2026 11:46 PM

 

28kHz 超声信号直流采样 — 软硬结合滤波方案

信号源:0~3.3V 方波,50% 占空比,28kHz 载波(T ≈ 35.7μs)
后级 MCU:STM32F407VET6(Cortex-M4F @ 168MHz,无 GPU)
设计目标:单边纹波率 < 0.5%(Vpp/2/VDC),量产友好


一、方案架构

方波信号源 → [RC 硬件滤波] → STM32F407 ADC → [DMA + 软件滤波] → 闭环控制
  28kHz      3.9kΩ+100nF     直连(无运放)      去极值均值
              fc≈402Hz

核心思路:硬件 RC 滤波压低载波纹波到 ~2%,软件滤波在 F407 内部进一步压制到 < 0.5%,兼顾响应速度与采样精度,无需精密器件。

与传统方案对比

对比项 纯硬件 RC(深滤波) 纯软件方案 本方案(RC + 软件)
硬件截止频率 ~200Hz,响应慢 无/极轻 402Hz,响应适中
软件滤波 无 全靠 CPU F407 CPU 轻量处理
总纹波衰减 -43dB -15dB -49~52dB
响应速度 慢(τ≈20T) 快 τ≈10.9T,提升 1 倍
运放跟随器 需要 — 不需要(56 周期采样)
CPU 占用 0% 高 ~9%

二、硬件 RC 滤波设计

2.1 电路结构

信号源 ──R──┬──→ ADC输入
        3.9kΩ │
             C = 100nF
             │
            GND

2.2 元件选型

元件 型号/规格 说明
R 3.9kΩ(E24 标准电阻) 通用量产器件,无采购门槛
C 100nF(0.1μF,X7R 陶瓷/薄膜) 标准件,无需精密

2.3 关键参数

参数 值 说明
RC 时间常数 τ 390μs R × C = 3900 × 100nF
τ/T 10.9T T = 35.7μs
截止频率 fc ≈ 402Hz 1/(2πRC)
硬件对 28kHz 衰减 -37dB 基频处一阶滚降
Vpp(残余纹波) ≈ 75mV 精确指数计算
单边纹波率 ≈ 2.3% Vpp/2/VDC
VDC 1.65V 方波直流分量
RMS 电流 ≈ 0.38mA 极低,任意信号源均可驱动

2.4 衰减验算

一阶 RC 传递函数:

$$|H(j\omega_1)| = \frac{1}{\sqrt{1 + (\omega_1 RC)^2}}$$

其中 ω₁ = 2π × 28000 = 175929 rad/s,ω₁RC = 68.6:

$$|H(j\omega_1)| = \frac{1}{\sqrt{1 + 68.6^2}} = \frac{1}{68.6} = 0.0146$$

$$A_{dB} = 20\log_{10}(0.0146) = -37\text{dB}$$

2.5 为什么不需要运放跟随器

RC 滤波器输出阻抗 = R + R_source ≈ 3.95kΩ。STM32F407 ADC 需在采样时间内将内部采样电容(约 4pF)充至目标精度:

采样时间 最大源阻抗(典型) 最大源阻抗(最差) 3.95kΩ 可行?
15 cycles 4.8kΩ 0.5kΩ ⚠️ 典型可行,最差不够
56 cycles 36kΩ 12kΩ ✅ 充足余量
112 cycles 73kΩ 35kΩ ✅ 非常充足

结论:使用 56 周期采样时间(T_s = 1.56μs),即使最差工况下源阻抗上限 12kΩ 仍远大于 3.95kΩ,无需运放跟随器,直连 ADC。

280kHz 采样率下,56+12 = 68 cycles,68/36MHz = 1.89μs,最高支持 529kSPS > 280kHz ✓


三、STM32F407 软件滤波设计

3.1 设计约束

STM32F407 无 GPU(区别于 STM32H723 方案),软件滤波由 Cortex-M4F CPU 承担。168MHz 主频 + DSP 指令 + DMA 硬件采集足以胜任,CPU 占用可控。

3.2 ADC 采样配置

参数 配置 说明
触发方式 TIM2 定时触发 ADC1 周期精确,无 CPU 干预
采样率 280kHz(10× 载波) 保证单周期多点采样
分辨率 12-bit 满足精度要求
采样时间 56 cycles 适配 3.95kΩ 源阻抗,无需运放
ADC 时钟 36MHz F407 12-bit 模式上限
DMA 循环模式,双缓冲 半传输中断 + 完成中断各处理 16 点

DMA 双缓冲流程:

ADC → DMA → Buffer[0..15]  → 半传输中断 → 处理前 16 点
         → Buffer[16..31] → 完成中断   → 处理后 16 点
         → 循环回填 Buffer[0..15] ...

3.3 滤波算法:去极值均值

窗口 N = 32 点:

  1. DMA 填充 32 点 ADC 原始值到缓冲区
  2. 部分选择排序:找出 8 个最大值 + 8 个最小值
  3. 剩余 16 个有效值求和取平均
  4. 输出均值作为直流采样值,送入闭环控制算法

算法复杂度与 CPU 占用:

项目 估算
比较次数 ~450 次(部分选择排序)
单窗口运算耗时 < 10μs(Cortex-M4F DSP 指令加速)
窗口间隔 32/280kHz ≈ 114μs
CPU 占用率 ≈ 9%
残余 CPU 资源 91%(PID、扫频、保护、通信等)

轻量替代方案(N = 16 点):

参数 N=32(推荐) N=16(轻量)
剔除 8 大 + 8 小 4 大 + 4 小
有效点 16 8
额外衰减 -12~15dB -9~10dB
CPU 占用 ~9% ~4%
综合纹波率 0.32~0.45% 0.72~1.0%

若 CPU 资源紧张,N=16 仍满足 < 1% 目标;追求精度用 N=32。

3.4 注意事项

  1. 窗口长度固定:运行时禁止修改 N,避免闭环带宽波动导致功率振荡
  2. DMA 中断优先级:设为中优先级,低于 PID/保护中断,高于显示/通信
  3. 溢出保护:求和用 32 位整型(16 × 4095 = 65520,16 位不溢出但留余量)
  4. 除法优化:N=32 时除以 16(有效点数),用右移 4 位替代除法
  5. 采样时间不可低于 56 周期:保证 3.95kΩ 源阻抗下 12-bit 精度

四、综合性能

4.1 纹波衰减汇总

层级 机制 衰减 残余单边纹波率
1. RC 硬件 一阶 -20dB/dec 滚降 -37dB 2.3%
2. 软件 32 点去极值均值 统计滤波 -12~15dB —
综合 -49~52dB 0.32~0.45%

4.2 响应速度

项目 值 说明
硬件 τ 390μs = 10.9T 阶跃 63% 恢复
硬件 95% 恢复 ≈ 1.17ms 3τ
软件窗口延迟 114μs 32 点 @ 280kHz
总响应延迟 ≈ 1.3ms 满足超声扫频、恒功率闭环

较原 200Hz 纯硬件方案(τ≈20T,95% 恢复 ≈ 2.3ms)提升约 1 倍。

4.3 性能对比表

对比项 原纯硬件方案(200Hz) 本方案(402Hz + 软件)
截止频率 200Hz 402Hz
响应速度 慢,闭环易滞后 提升 1 倍,动态响应优秀
28kHz 纹波衰减 -43dB -49~52dB(纹波更小)
器件通用性 通用 通用标准阻容,量产无忧
运放跟随器 需要 不需要
适配场景 仅静态采样 动态扫频、恒功率闭环全场景

五、最终方案总结

5.1 硬件

信号源 ── 3.9kΩ ──┬── STM32F407 ADC输入
                   │
                 100nF (104)
                   │
                  GND
  • R = 3.9kΩ(E24),C = 100nF(X7R),均为通用量产器件
  • 无运放跟随器,直连 ADC(56 周期采样)
  • 硬件衰减 -37dB,残余 Vpp ≈ 75mV

5.2 软件

  • TIM2 触发 ADC1 @ 280kHz,56 周期采样,DMA 循环双缓冲
  • 32 点去极值均值(去 8 大 8 小,剩 16 点取平均)
  • CPU 占用 ~9%,168MHz 下运行稳定
  • 软件额外衰减 -12~15dB

5.3 综合指标

指标 值
总纹波衰减 -49~52dB
单边纹波率 0.32~0.45%
VDC 1.65V
残余 Vpp ≈ 10~15mV
响应延迟(95%) ≈ 1.3ms
CPU 占用 ~9%
器件成本 R + C(约 0.1 元)

六、关键公式速查

公式 表达式 用途
RC 截止频率 $f_c = \frac{1}{2\pi RC}$ 确定硬件带宽
RC 基频衰减 $|H| = \frac{1}{\sqrt{1+(\omega_1 RC)^2}}$ 验证硬件纹波
RC 纹波 Vpp $V_{pp} = V_{cc} \times \frac{1-e^{-T/(2\tau)}}{1+e^{-T/(2\tau)}}$ 精确纹波计算
单边纹波率 $\text{Rate} = \frac{V_{pp}/2}{V_{DC}}$ 纹波评估指标
软件衰减估算 $A_{sw} \approx 20\log_{10}(\sqrt{N_{eff}})$ $N_{eff}$ 为有效点数
ADC 源阻抗约束 $R_{AIN} \leq \frac{T_s}{C_s \cdot \ln(2^{N+2})} - R_{ADC}$ 验证是否需要运放

七、工程落地注意事项

  1. 采样时间 ≥ 56 周期:R = 3.9kΩ 时源阻抗较高,短采样时间会导致精度下降。56 周期在 36MHz ADC 时钟下 T_s = 1.56μs,最高支持 529kSPS,满足 280kHz 需求
  2. 软件窗口固定 32 点:禁止动态修改窗口长度,避免闭环带宽波动、功率振荡
  3. DMA 中断不阻塞 PID:滤波中断设为中优先级,PID/保护中断为高优先级
  4. 电容选型:优先 X7R 陶瓷或薄膜电容,避免 Y5V(DC 偏压下容量大幅缩水)
  5. PCB 布局:RC 滤波器靠近 ADC 引脚,走线短捷,减少寄生干扰
(9-9/9)