第四章:机械谐振——系统固有频率的识别与建模

做纳米级运动控制,最怕什么?

我个人最怕的就是机械谐振。你想想看,一个定位平台,明明控制算法算得好好的,指令发出去,结果平台在那抖啊抖,像得了帕金森一样。嗯,这就是谐振在作怪。

4.1 什么是机械谐振?

说白了,每个机械结构都有自己的"脾气"。你推它一下,它会按自己的节奏晃一晃。这个节奏,就是固有频率。

我在项目中遇到过一台气浮平台,空载时跑得稳稳当当。一装上晶圆夹具,突然在120Hz附近开始剧烈抖动。当时我排查了三天,最后发现是夹具的安装方式改变了系统的刚度分布,把谐振频率拉到了伺服带宽内。

核心概念:当外部激励频率接近系统的固有频率时,振动幅度会被急剧放大。这就是谐振。在纳米级定位中,哪怕微米级的谐振,都会毁掉整个定位精度。

3.2 固有频率的物理本质

机械系统可以简化为一个质量-弹簧-阻尼模型。固有频率由质量和刚度决定:

ωn = √(k/m)

其中:
ωn - 固有频率 (rad/s)
k  - 系统刚度 (N/m)
m  - 等效质量 (kg)

为什么这个公式重要?因为它告诉你两件事:

  • 刚度越大,谐振频率越高——所以有时候加粗结构件能解决问题
  • 质量越大,谐振频率越低——所以轻量化设计不只是为了减重

实战技巧:我曾经调试一个纳米位移台,发现低频段有谐振。检查后发现是负载太重。换了个碳纤维材质的载物台,谐振频率从80Hz提到了200Hz,问题直接解决。

4.3 如何识别谐振频率?

识别谐振,我习惯用三种方法。每种都有它的适用场景。

方法一:扫频测试(最直接)

给系统输入一个频率从低到高的正弦信号,同时记录输出响应。振幅突然变大的地方,就是谐振点。

// 扫频测试伪代码
for f = 1Hz to 500Hz step 1Hz:
    input = A * sin(2π * f * t)
    output = measure_position()
    gain = max(output) / A
    if gain > threshold:
        record_resonance(f)

方法二:冲击测试(现场快速诊断)

拿力锤敲一下结构,用加速度计测响应。FFT变换后,峰值就是谐振频率。

我记得有一次在现场调试,没带扫频设备。就用螺丝刀柄敲了一下平台,手机装个FFT app,居然也找到了谐振点。虽然精度差点,但应急够用了。

方法三:有限元分析(设计阶段)

用ANSYS或COMSOL建个模型,直接算模态。这个方法适合在设计阶段就规避谐振。

注意:仿真结果和实际总有偏差。我见过有人完全信仿真,结果实物一测,谐振频率差了20%。仿真只能做参考,最终还是要实测验证。

4.4 谐振建模:从数据到模型

识别出谐振频率后,下一步是建数学模型。有了模型,才能设计滤波器或控制器来抑制它。

最常用的模型是二阶振荡环节:

G(s) = ωn² / (s² + 2ζωn·s + ωn²)

其中:
ζ - 阻尼比(通常0.001~0.1)
ωn - 固有频率

怎么得到ζ和ωn?用曲线拟合。我一般用MATLAB的invfreqs函数:

% 从实测频响数据拟合传递函数
w = measured_frequencies;  % 频率向量
H = measured_response;     % 实测频响

% 拟合二阶系统
num = [0, 0, wn^2];
den = [1, 2*zeta*wn, wn^2];
[H_fit, err] = invfreqs(H, w, 2, 2);

4.5 多谐振系统的处理

实际系统往往不止一个谐振。我见过一个六自由度平台,在45Hz、120Hz、280Hz有三个明显的谐振峰。

处理多谐振,我的做法是:

  1. 先排序——按振幅大小排,先处理最严重的
  2. 分段建模——每个谐振单独建一个二阶模型
  3. 串联组合——把多个二阶模型串联起来
G_total(s) = G1(s) × G2(s) × G3(s)

其中每个Gi(s)对应一个谐振峰

经验之谈:别试图一次处理所有谐振。先搞定最大的那个,往往能解决80%的问题。剩下的,可以用陷波滤波器逐个击破。

4.6 谐振对控制性能的影响

谐振会带来三个典型问题:

问题 表现 后果
相位滞后 谐振点附近相位突变 系统稳定性下降,容易振荡
增益尖峰 谐振频率处增益突然增大 放大噪声,定位精度恶化
带宽受限 不敢提高伺服增益 响应速度变慢

我曾经调试一个晶圆对准系统,伺服带宽只能开到30Hz,再高就啸叫。后来发现是基座有个谐振在50Hz。加固基座后,带宽直接提到了80Hz。

4.7 知识体系总览

下面这张图,是我做培训时必讲的。它把谐振识别与建模的整个流程串起来了:

机械谐振识别与建模流程 扫频测试 冲击测试 有限元分析 获取频响数据(幅频+相频) 提取谐振频率ωn、阻尼比ζ 建立二阶振荡模型 G(s) 用于滤波器设计/控制器优化

我的习惯:每次拿到一个新系统,第一件事就是做扫频测试,把谐振频率摸清楚。这就像医生看病先量体温一样,是基本功。别偷懒,这一步省了,后面调试会花十倍时间补回来。

好了,关于谐振的识别与建模,核心就这些。记住:先识别,再建模,最后才是抑制。顺序别搞反了。