首页/文章/ 详情

用仿真弹一曲“小星星”--扬声器多物理场仿真中的机电声耦合实践

3月前浏览2004

当我们把耳机或音箱接上电源, 声音就会自然地“跑”出来。 但很少有人认真想过: 这一点点音乐,背后其实发生了多少物理过程?

电流如何变成结构的运动? 振膜是怎样推动空气? 结构的振动又是如何反过来影响电路?

这些问题,单靠“听”是很难回答的, 但数值仿真却给了我们一种新的视角。

本文基于 Abaqus 的多物理场仿真方法, 以一首非常熟悉的《一闪一闪亮晶晶》为例, 把扬声器内部的 电、结构与声学响应 放在同一条时间轴上进行观察。

借助这首简单的旋律, 我们可以非常直观地看到: 声音,并不是一个抽象概念, 而是一次可以被追溯、被理解的物理过程。

01|从一个直观的问题说起:扬声器到底算什么系统?

从使用者角度看,扬声器好像只是一个把电信号变成声音的黑盒。 但从工程角度看,它其实是一个非常典型的机电耦合系统

电路里流过的电流,会在磁场中产生力; 结构的运动,又会反过来影响电路中的电流状态。 如果只算结构、不算电路, 或者只算电路、不考虑结构响应, 得到的结论往往是不完整的。

官方文档中采用的是 Abaqus 与 Dymola 的联合仿真方案: Dymola 负责系统级电路求解, Abaqus/Explicit 负责结构与声场计算, 两者通过传感器和执行器实时交换数据。

而在本文的实现中, 我们通过 Abaqus 用户子程序(VUAMP), 在单一求解器内完成电路逻辑与结构响应的闭环计算, 从而避免多软件耦合带来的接口复杂度。

02|动圈式扬声器的核心物理:两条公式讲清楚发声原理

几乎所有动圈式扬声器,都可以用两条最基础的物理关系来描述。

(输入: 外部电压源 V0 克服系统总阻抗Zb 和反电动势 Ve 注入电流 i。)

第一条,是大家最熟悉的洛伦兹力

当电流 i 流经位于磁感应强度 B 中、有效长度为 l 的音圈时, 会产生 F=Bl×i 的驱动力。 这股力推动振膜前后运动, 挤压空气,形成我们听到的声音。

第二条,却常常被忽略——反电动势

当结构在运动时,音圈会切割磁感线, 从而产生一个与外加电压方向相反的电压, 即 Ve=Bl×v

从电路角度看, 这相当于系统在“自己给自己刹车”; 从结构角度看, 它表现为一种与运动速度相关的阻尼

这个现象非常重要,因为正是这种电磁阻尼, 抑制了音圈在共振频率附近的无限放大, 让扬声器能够稳定、可控地工作。

在仿真中,我们利用 Abaqus 的 Sensor 功能, 实时提取音圈速度, 计算反电动势, 再由子程序更新当前时刻的电流与载荷, 从而在每一个时间步内完成一次机电“对话”。

(该公式就是子程序需要求解的公式,该公式需要记录电流的历史的信息,在abaqus 幅值曲线的子程序中需要设定状态变量。)

子程序实现了如下图所示的效果,这原本是需要在Dymola中设置的,现在通过子程序,可以无需再开启额外软件。

03|如果把仿真当成一个“自动演奏的乐器”,会发生什么?

我们平时听到的音乐,看似复杂, 但如果换一个角度,其实非常“单纯”: 音乐,本质上就是不同频率的振动,按照一定的时间顺序出现

比如《Twinkle Twinkle Little Star》, 哪怕你完全不懂乐理, 也大概知道它是一首节奏很规整、旋律很简单的曲子。

对计算机而言,这首歌并不存在“好听”或“童年回忆”, 它只关心三件事: 1)现在是什么时间? 2)这一瞬间该振动多快? 3)要持续多久?

而这三件事,恰恰是有限元求解器最擅长处理的。

可以这样理解:有限元求解,本身就是一台走得极准的“节拍器”, 每一个时间步,都在问同一个问题—— “现在该发生什么?”

于是我们做了一件看似有点“好玩”,但非常严肃的事: 把《小星星》的乐谱,翻译成求解器能听懂的语言

例如,在 C 大调中:Do ≈ 261 Hz,Sol ≈ 392 Hz,La ≈ 440 Hz。我们并不是在播放一段音频文件, 而是明确告诉系统:

“在接下来的 0.5 秒内,只允许你以 261 Hz 的方式振动”;

“然后切换到 392 Hz,再坚持 0.5 秒”;

“再往下,按照乐谱继续。”

子程序的实现逻辑:通过向系统输入(或输出)不同频率的交变电流(Alternating Current, AC),从而驱动物理模型产生对应频率的机械振动,进而“播放”出音乐。

对应的英文歌词音节切分与程序时间轴映射如下:

  1. Twin- (1): 0.0s ~ 0.5s,频率 (261.626Hz),持续时长 dur = 0.5s
  2. kle, (1): 0.5s ~ 1.0s,频率 (261.626Hz),持续时长 dur = 0.5s
  3. twin- (5): 1.0s ~ 1.5s,频率 (391.995Hz),持续时长 dur = 0.5s
  4. kle, (5): 1.5s ~ 2.0s,频率 (391.995Hz),持续时长 dur = 0.5s
  5. lit- (6): 2.0s ~ 2.5s,频率 (440.000Hz),持续时长 dur = 0.5s
  6. tle (6): 2.5s ~ 3.0s,频率 (440.000Hz),持续时长 dur = 0.5s
  7. star! (5): 3.0s ~ 4.0s,频率 (391.995Hz),持续时长 dur = 1.0s (长音延音,占用两个大拍子)

在这个逻辑中,一个完整的乐句总共持续 4.0 秒

从求解器的角度看, 这不过是一段按时间变化的激励载荷; 但从物理角度看, 它等价于让真实世界中的扬声器, 严格、逐拍地完成了一次演奏

当你意识到这一点时, “用仿真播放音乐”这件事, 就不再是噱头, 而是一次非常直观的物理过程重建

通过有限元仿真获得的声场中扬声器正上方的声压(POR)信号

04|为什么仿真“完全正确”,却往往“并不好听”?

在第一次把仿真结果转成音频时, 很多人都会有一个共同感受: 声音是对的,但听起来很“硬”

这里有一个容易被忽略的事实: 人耳,并不是一个线性测量仪器

有限元关注的是物理是否自洽, 而人耳更在意的是连续性、平滑性, 以及“听起来是否自然”。 这两者之间,并不总是自动一致。

下面我们逐一来看几个典型问题。

① 插值方式:数学正确 ≠ 听感友好

仿真结果往往是离散时间点, 直接连线(线性插值)在数学上没有问题, 但在音频里, 这相当于人为制造了大量“折角”。

这些折角在频域中, 会表现为刺耳的高频噪声, 听起来就像机械抖动。

因此,我们改用三次样条插值, 让波形在过渡时更加平滑, 就好像把“折线”换成了“圆滑的弧线”。

② 直流偏置:结构能接受,人耳不行

在仿真中, 结构振动整体偏离 0 轴并不奇怪, 但对于扬声器来说, 这意味着振膜始终被“顶”在一侧。

听感上,这会让声音发闷, 动态范围被压缩。 因此,我们在音频处理中 主动移除直流分量, 让波形重新围绕 0 对称。

③ 带通滤波:不是所有“真实振动”都该被听见

有限元模型里, 40 Hz 以下的低频、上万赫兹的高频, 在物理上可能真实存在, 但对音乐表现来说往往只有“副作用”。

低频可能让喇叭无意义地大幅摆动, 高频则容易造成刺耳感。 通过带通滤波, 我们只保留人耳真正敏感的频段, 让“音乐性”凸显出来。

④ 淡入淡出:防止“爆音”的工程细节

仿真信号如果突然开始或结束, 在音频里几乎一定会听到明显的“啪”声。

这并不是物理错误, 而是信号边界不连续带来的问题。 通过短时间的淡入淡出, 可以非常有效地消除这种爆音。

⑤ 轻微非线性:让声音更“像真的”

现实中的扬声器、电路与空气, 没有一个是绝对线性的。

在最后阶段, 我们引入非常轻微的非线性压缩, 并保留一定的安全裕量(Headroom), 让声音听起来更饱满、也更安全。

需要强调的是, 这些 DSP 并不是在“修饰”仿真结果, 而是在把物理正确的信号, 转换成更符合人耳感知的形式


现在,让我们听听第3节中通过有限元仿真获得的声压(POR)信号对应的声音,以及经过一些DSP处理后的声音对比。

音频1:原始信号  

音频2:经过DSP处理后的声音

05|写在最后:仿真,是一种理解世界的方式

从一个扬声器模型出发, 我们把电流、结构运动、空气振动与音乐旋律 放在同一条时间轴上观察。

当然,从工程角度来说,这里所用到的仿真工具并不是最佳选择,但是这个例子旨在通过仿真, 让我们不仅能“看见”结构如何振动, 还能够真正“听见”物理系统的响应。

当声音不再只是一个输出文件, 而是一个可以被追溯、被解释的物理过程时, 仿真也就从一项计算工具, 变成了一种理解复杂工程系统的语言。


来源:水木人CAE
Abaqus振动非线性电源电路声学DYMOLA
著作权归作者所有,欢迎分享,未经许可,不得转载
首次发布时间:2026-05-07
最近编辑:3月前
水木人CAE
硕士 | R&D仿真部门经... 做一个有趣的工程师
获赞 83粉丝 84文章 80课程 9
点赞
收藏
作者推荐
未登录
还没有评论
课程
培训
服务
行家
VIP会员 学习计划 福利任务
下载APP
联系我们
帮助与反馈