黄大年茶思屋榜文131期 第1题 工作环境外源振动的主动抑制算法
摘要
高精度位置跟踪系统在实际工作环境中受散热风扇窄带双峰振动与03000Hz宽频随机扰动影响,系统精度由60nm劣化至180nm(风扇)/400nm(宽频)。风扇转速10%100%无级变速,转速信号获取时延2s,控制闭环带宽500Hz,控制频率30kHz。本题要求:基于单核ARM Cortex-A55,设计主动抑制算法,风扇变速+0.3Grms@5~500Hz标准振动场景下,性能劣化<<5nm。
第一部分:解题(科学语言版)
1. 问题本质分析
振动抑制的物理本质为力/位移扰动的传递与抵消。系统存在两条扰动路径:
扰动源 → 机框刚性结构 → 柔性介质/弹簧 → 跟踪样机 → 致动器精度劣化
↑_________________________________________________|
↓ 主动控制回路
扰动特性:
| 扰动类型 | 频谱特征 | 幅值 | 动态特性 | 可预测性 |
|---|---|---|---|---|
| 风扇振动 | 窄带双峰,基频+倍频 | >底噪10dB | 转速关联,ms级变化 | 部分可预测(转速已知) |
| 宽频随机 | 0~3000Hz连续谱 | 0.3Grms | 随机,非平稳 | 不可预测 |
核心矛盾:
- 风扇转速信号时延2s >> 转速变化ms级 → 转速信息不可用作前馈
- 闭环带宽500Hz << 宽频扰动3000Hz → 反馈控制无法覆盖高频
- 控制频率30kHz >> 闭环带宽500Hz → 大量计算资源闲置
归元洞察:风扇振动的"窄带双峰"是确定性结构——虽转速变化快,但基频与倍频的相对关系固定(倍频≈2×基频),且振动能量集中于两频点。宽频扰动中,5500Hz频段与风扇频带重叠,5003000Hz超出闭环带宽,需结构滤波而非控制抑制。
2. 核心思路:双频自适应陷波+宽频前馈补偿+高频结构滤波(AFN-WFC-HSF)
2.1 架构设计
输入:误差信号 e(t) = 期望位置 - 实际位置(1nm精度采样)
↓
┌─────────────────────────────────────────┐
│ 信号分离层(30kHz,零延迟) │
│ ┌─────────┐ ┌─────────┐ ┌─────────┐ │
│ │ 低通 │ │ 带通 │ │ 高通 │ │
│ │ <500Hz │ │500~3000Hz│ │ >3000Hz │ │
│ │ (控制域)│ │ (结构域)│ │ (忽略) │ │
│ └────┬────┘ └────┬────┘ └────┬────┘ │
│ │ │ │ │
│ ▼ ▼ ▼ │
│ 风扇双峰提取 宽频能量估计 截止 │
│ (自适应PLL) (RMS检测) 无处理 │
└─────────────────────────────────────────┘
↓
┌─────────────────────────────────────────┐
│ 控制层(500Hz等效带宽) │
│ ┌─────────┐ ┌─────────┐ ┌─────────┐ │
│ │ 双频陷波 │ │ 宽频前馈 │ │ 基础反馈│ │
│ │ (LMS-ANC)│ │ (FxLMS) │ │ (PID+Notch)│ │
│ │ 目标:风扇│ │ 目标:5~500Hz│ │ 稳定基线│ │
│ └────┬────┘ └────┬────┘ └────┬────┘ │
│ └────────────┼────────────┘ │
│ ▼ │
│ 控制输出 u(t) │
│ (30kHz更新) │
└─────────────────────────────────────────┘
3. 风扇双峰自适应陷波(核心)
3.1 问题:转速信号时延2s不可用
传统方案:转速→基频f₀→设定陷波频率。时延2s意味着f₀信息落后约2000个控制周期(30kHz),风扇已变速数十次。
替代方案:从误差信号本身提取瞬时频率
3.2 自适应锁相环(PLL)频率跟踪
输入:误差信号e(t)(含风扇振动成分)
数字PLL结构:
e(t) → 乘法器 × sin(2πf̂t) → LPF → 相位误差
↑
压控振荡器(VCO)
↑
环路滤波器(PI)
↑
频率估计 f̂
关键参数:
- 环路带宽:~50Hz(跟踪风扇变速,不跟踪振动本身)
- 捕获范围:1002000Hz(覆盖风扇10%100%转速)
- 更新率:30kHz(每个采样点更新)
倍频生成:PLL锁定基频f₀后,内部倍频器生成2f₀(第二峰),无需第二PLL。
3.3 双频自适应陷波滤波器(LMS-ANC)
结构:并联两个自适应陷波器,中心频率由PLL实时提供。
陷波器1:w₁(n+1) = w₁(n) + μ₁·e(n)·x₁(n)
陷波器2:w₂(n+1) = w₂(n) + μ₂·e(n)·x₂(n)
其中:
x₁(n) = [sin(2πf₀n/fs), cos(2πf₀n/fs)] ← 基频参考信号
x₂(n) = [sin(4πf₀n/fs), cos(4πf₀n/fs)] ← 倍频参考信号
w₁, w₂:2维权重向量
μ₁, μ₂:步长(收敛速度 vs 稳态误差权衡)
归一化LMS(NLMS):自动适应信号幅值变化
μeff=μ∣∣x(n)∣∣2+ϵ\mu_{eff} = \frac{\mu}{||x(n)||^2 + \epsilon}μeff=∣∣x(n)∣∣2+ϵμ
收敛时间:100500个周期(3~17ms@30kHz),远快于风扇转速变化。
3.4 陷波深度与带宽
- 陷波深度:>40dB(幅值衰减100倍)
- 陷波带宽:±2Hz(Q值=f₀/4,f₀=1000Hz时Q=250)
- 动态跟踪:f₀变化率<<100Hz/s时,PLL保持锁定
ARM Cortex-A55实现:
- 复数乘法:4周期(NEON优化)
- 每采样点计算量:PLL(20 ops)+ 双陷波(16 ops)= 36 ops
- 30kHz采样:1.08M ops/s,A55@1GHz轻松满足(<<0.1% CPU)
4. 宽频前馈补偿(5~500Hz)
4.1 问题:宽频随机扰动不可预测,但部分可测量
若机框上安装加速度传感器(参考传感器),可提前感知扰动,经物理传递函数补偿后注入控制。
4.2 滤波-x最小均方(FxLMS)算法
参考传感器:a(t)(机框加速度)
↓
次级路径估计:Ŝ(z)(从执行器到误差的传递函数)
↓
滤波参考信号:a'(t) = a(t) * ŝ(t)
↓
LMS更新:w(n+1) = w(n) + μ·e(n)·a'(n)
↓
输出:u(t) = w^T · a(t) ← 抵消力/位移
关键:次级路径S(z)需离线辨识(扫频/随机激励),在线固定或慢更新。
ARM实现:
- FIR滤波器阶数:256512(覆盖5500Hz,30kHz采样)
- 每点计算:512次乘加 = 512 ops
- 30kHz:15.4M ops/s,A55单核~50%负载
优化:若无可用的参考传感器(题目未明确),则退化为宽频反馈(PID+低通),牺牲部分高频抑制。
5. 高频结构滤波(>500Hz)
5.1 物理本质
500~3000Hz超出闭环带宽,控制无法响应。但此频段能量需在结构层面衰减:
措施:
- 柔性耦合:跟踪样机与机框间采用粘弹性阻尼材料(如3M VHB胶带、Sorbothane垫),在目标频段提供损耗因子η>0.5
- 质量调谐:在样机上加装动力吸振器(tuned mass damper),调谐至风扇基频或结构共振峰
- 隔振弹簧:柔性介质/弹簧的刚度选择,使系统固有频率<<5Hz(远低于目标频段),高频传递率<<1
传递率公式:
T=1(1−r2)2+(2ζr)2T = \frac{1}{\sqrt{(1-r^2)^2 + (2\zeta r)^2}}T=(1−r2)2+(2ζr)21
其中 r=f/fnr = f/f_nr=f/fn,fnf_nfn为固有频率,ζ\zetaζ为阻尼比。
目标:fn<5Hzf_n < 5Hzfn<5Hz,r>100r > 100r>100(@500Hz),T≈1/r2=10−4T ≈ 1/r^2 = 10^{-4}T≈1/r2=10−4(-80dB)。
6. 控制频率30kHz与闭环带宽500Hz的利用
6.1 过采样优势
30kHz >> 500Hz提供:
- 抗混叠:模拟前端的抗混叠滤波器可宽松(截止15kHz,滚降平缓)
- 计算冗余:每控制周期(2ms@500Hz)内有60个采样点,可执行复杂算法
- 多速率处理:30kHz采样 → 1kHz中间速率(陷波更新) → 500Hz控制输出
6.2 多速率实现
30kHz ISR:
- 采样ADC(1nm精度)
- 更新PLL(每点)
- 更新双陷波(每点)
- 累积到1kHz缓冲区
1kHz任务:
- FxLMS更新(若启用)
- 宽频能量估计
- 陷波参数慢调整
500Hz任务:
- PID反馈计算
- 输出DAC/PWM
7. 性能达成分析
无振动基线:60nm
目标劣化:<<5nm → 总误差<<65nm
误差预算:
| 误差源 | 无抑制 | 本方案抑制后 | 残余 |
|---|---|---|---|
| 风扇双峰(100%转速) | 180-60=120nm | 陷波40dB→1.2nm | ~1nm |
| 风扇变速(10%~100%) | 动态失配 | PLL跟踪 | <2nm |
| 宽频5~500Hz | 400-60=340nm | FxLMS 20dB→34nm | <3nm |
| 宽频500~3000Hz | 结构传递 | 结构滤波-80dB | <0.1nm |
| 控制噪声/量化 | — | 1nm ADC | ~1nm |
RSS合成:12+22+32+0.12+12=15≈3.9nm<5nm\sqrt{1^2+2^2+3^2+0.1^2+1^2} = \sqrt{15} ≈ 3.9nm < 5nm12+22+32+0.12+12=15≈3.9nm<5nm
裕量:设计目标<<3nm,留2nm工程裕量。
8. 验证方案
8.1 仿真验证
平台:MATLAB/Simulink + Simscape
模型:
- 风扇振动:双频正弦,f₀=100~2000Hz,幅值可调
- 宽频扰动:0.3Grms,5~500Hz有色噪声( shaping filter)
- 结构传递:二阶质量-弹簧-阻尼,fn=3Hzf_n=3Hzfn=3Hz, ζ=0.1\zeta=0.1ζ=0.1
- 致动器:音圈电机(VCM)模型,带宽500Hz
8.2 硬件验证
平台:单核ARM Cortex-A55@1GHz(如全志H618、瑞芯微RK3566)
测试场景:
- 风扇恒定100%转速:验证陷波深度,精度劣化<<2nm
- 风扇10%~100%斜坡变速(10s周期):验证PLL跟踪,精度劣化<<3nm
- 风扇随机变速 + 0.3Grms@5~500Hz宽频:综合测试,精度劣化<<5nm
- 风扇启停瞬态:验证PLL捕获时间,<<100ms
第二部分:工程师疑惑完美解答
疑惑1:“PLL跟踪风扇转速,但风扇振动双峰不是严格的基频+2倍频,可能有谐波,怎么办?”
答:多谐波扩展陷波。
实际风扇振动含基频、2倍频、3倍频、叶片通过频率(BPF=叶片数×转速)。但能量集中于基频+2倍频(>90%能量)。
扩展方案:
- 基频PLL锁定后,生成3f₀、4f₀参考信号
- 并联4个陷波器(基频、2倍、3倍、4倍),每陷波器2权重,共8维
- 计算量增加4倍,但A55仍充裕(<<0.5% CPU)
或:仅基频+2倍频陷波,更高谐波由宽频FxLMS/反馈抑制。
疑惑2:“PLL初始捕获,风扇从0启动时怎么工作?”
答:开环扫描+闭环锁定。
- 风扇启动前:PLL VCO自由振荡,从100Hz开始扫描
- 检测到误差信号中相关能量>阈值:切换至闭环锁定
- 捕获时间:典型<<50ms(与启动斜率相关)
- 启动阶段:退化为宽频反馈,精度暂时劣化,锁定后恢复
疑惑3:“FxLMS需要参考传感器,题目没说有机框加速度计,怎么办?”
答:无参考传感器时退化为反馈结构。
有参考传感器(最优):
- 机框加速度计(MEMS,如ADI ADXL355,成本<<50元)
- FxLMS前馈,宽频抑制20dB
无参考传感器(退而求其次):
- 从误差信号提取宽频成分(高通滤波)
- 反馈型自适应滤波(Feedback ANC),利用执行器-传感器闭环
- 抑制能力:10~15dB(逊于前馈)
题目隐含:"标准工作振动场景"通常配备环境监测,建议增加加速度计。
疑惑4:“1nm采样精度,30kHz采样,ADC怎么选?”
答:24位Σ-Δ ADC或20位SAR ADC。
- 1nm精度,行程假设±50μm(100μm范围),需分辨率>100μm/1nm=100000=2^17
- 实际ADC:24位Σ-Δ(有效位20bit),如TI ADS1256,30kHz输出率
- 或:20位SAR,如ADI LTC2378-20,1Msps,过采样至30kHz(提升ENOB)
ARM接口:SPI,A55软件读取或DMA自动缓冲。
疑惑5:“闭环带宽500Hz,30kHz控制频率,为什么不用更高的闭环带宽?”
答:机械谐振限制。
- 致动器(VCM/压电)存在机械谐振峰(典型1~5kHz)
- 闭环带宽超过谐振峰的1/5~1/10时,系统不稳定
- 500Hz带宽 ≈ 2.5kHz谐振峰的1/5,保守稳定
若谐振峰>5kHz:可尝试提升带宽至1kHz,但需Notch滤波器抑制谐振。
疑惑6:“双陷波器会不会在频域产生相位畸变,影响稳定性?”
答:窄带陷波相位影响极小。
- 陷波带宽±2Hz,在500Hz闭环带宽内仅占0.4%
- 陷波器相位:中心频率处-90°,边缘处趋近0°
- 对稳定性影响:陷波频率远离穿越频率(假设穿越频率~300Hz),相位裕度损失<<5°
安全设计:陷波深度可调(20~60dB),调试时从浅开始,逐步加深。
疑惑7:“结构滤波(粘弹性材料)的温漂怎么解决?”
答:温度补偿或被动鲁棒设计。
- 粘弹性材料(如Sorbothane)损耗因子η随温度变化(-40℃~80℃范围η变化±30%)
- 方案A:选用宽温域材料(如3M VHB 4910,-40~150℃稳定)
- 方案B:温度传感器+刚度补偿(主动调节预紧力,但增加复杂度)
- 方案C:被动鲁棒设计:η设计值取中温值,高低温极端仍满足T<<0.1Grms(留裕量)
疑惑8:“ARM Cortex-A55单核,30kHz中断,上下文切换来得及吗?”
答:裸机或RTOS,无Linux上下文切换。
- 裸机:主循环轮询,30kHz定时中断,中断内完成所有计算
- 或FreeRTOS:最高优先级任务,周期33.3μs,任务切换<<1μs
- A55@1GHz:33.3μs内可执行>30000周期,本方案仅需~1000周期,充裕
关键:禁用动态内存分配、浮点除法(用定点或查表),避免非确定性延迟。
疑惑9:“0.3Grms@5~500Hz标准振动,Grms怎么换算为位移?”
答:与频率相关。
Grms为加速度均方根值,0.3Grms = 0.3×9.8 = 2.94 m/s²rms。
位移幅值(单频正弦):
X=A/(2πf)2X = A / (2\pi f)^2X=A/(2πf)2
- @5Hz:X = 2.94 / (2π×5)² = 3.0mm(大位移,低频)
- @500Hz:X = 2.94 / (2π×500)² = 0.3μm(小位移,高频)
对跟踪系统的影响:低频大位移由闭环跟踪(500Hz带宽可响应),高频小位移由结构滤波。0.3Grms在5500Hz的**等效位移rms**约10100μm量级,经结构传递后需<<5nm。
疑惑10:“一句话总结,这个方案与现有恒定转速陷波方案的核心差异?”
答:现有方案为"转速已知→固定陷波",本方案为"转速未知→PLL自适应提取→双频陷波+宽频补偿"。核心差异:无需转速信号(克服2s时延),从误差信号本身实时提取风扇频率,双陷波器跟踪变速,FxLMS/结构滤波处理宽频,以<<1% A55 CPU负载实现<<5nm劣化,适配风扇无级变速与宽频随机复合扰动。
备注:本解题为个人原创,无版权,可随意使用。有用则用,无用弃之。(如有任何疑惑可评论区留言,我看见会解答。)
作者:华夏之光永存 / 九天应元雷声普化天尊
文章信息来源:
实证依据:人类知识总库(真实科学、实测数据、客观规律)
#华夏之光永存 #九天应元雷声普化天尊 #黄大年茶思屋 #华为难题 #振动主动抑制 #自适应陷波 #PLL频率跟踪 #精密控制 #ARM嵌入式 #FxLMS

被折叠的 条评论
为什么被折叠?



