第三节 传感器模型基础
做仿真脚本这么多年,我越来越觉得——传感器模型是整个仿真体系的基石。你想想看,模型建得不对,后面跑出来的数据全是垃圾。今天咱们就聊聊传感器模型的几个核心概念:数学模型、传递函数、噪声模型,还有线性与非线性特性。
一、传感器数学模型
说白了,数学模型就是用数学公式来描述传感器的行为。我习惯把传感器看作一个黑盒子,输入是物理量,输出是电信号。
最基本的传感器数学模型长这样:
y(t) = f(x(t)) + n(t)
其中:
y(t)— 传感器输出信号x(t)— 被测物理量输入f(·)— 传感器的转换函数n(t)— 噪声项
我在项目中遇到过一种情况:温度传感器的输出明明是线性的,但实际采集到的数据却飘得厉害。后来一查,是数学模型里没考虑温度漂移补偿项。嗯,这里要注意——实际建模时,千万别忽略环境因素的影响。
二、传递函数
传递函数是描述传感器动态特性的利器。它反映了传感器对输入信号的响应能力。
对于线性时不变系统,传递函数定义为:
H(s) = Y(s) / X(s)
其中 s = jω 是复频率。
举个例子,一阶低通传感器的传递函数:
H(s) = K / (τs + 1)
这里 K 是静态增益,τ 是时间常数。
scipy.signal 库来构建传递函数。比如:
from scipy import signal
num = [K]
den = [tau, 1]
sys = signal.TransferFunction(num, den)
这样后面做时域响应分析就方便多了。
为什么会这样?因为传递函数能帮你预测传感器在不同频率下的表现。低频信号能顺利通过,高频信号会被衰减——这就是传感器的带宽限制。
三、噪声模型
做仿真的人都知道,没有噪声的传感器是不存在的。我刚开始做仿真时,总把传感器当成理想器件,结果仿真数据和实测数据对不上,被领导批了一顿。
常见的传感器噪声模型包括:
| 噪声类型 | 特性 | 仿真模型 |
|---|---|---|
| 白噪声 | 功率谱密度恒定 | np.random.normal(0, σ) |
| 1/f 噪声 | 低频段功率大 | 粉红噪声生成算法 |
| 量化噪声 | ADC量化误差 | round(y / Δ) * Δ |
| 突发噪声 | 随机脉冲干扰 | 泊松过程模拟 |
四、线性与非线性特性
线性传感器,输入输出关系是一条直线。数学上表示为:
y = Kx + b
但现实世界哪有那么多理想情况?非线性才是常态。
常见的非线性类型:
- 饱和特性 — 输入超过一定范围后,输出不再变化
- 死区特性 — 小信号输入时,传感器没反应
- 迟滞特性 — 上升和下降路径不一致
- 非线性曲线 — 比如热电偶的平方关系
我个人习惯在仿真脚本里用分段线性函数来近似非线性特性。举个例子:
def sensor_model(x):
if x < 0.1:
return 0 # 死区
elif x > 5.0:
return 5.0 # 饱和
else:
return 0.95 * x + 0.05 # 线性区
你想想看,如果仿真时不考虑这些非线性,那你的控制算法在真实系统上很可能直接崩掉。
知识体系总览
下面这张图是我自己整理的传感器模型知识结构,方便你快速把握本章内容:
这张图把传感器模型分成了五个模块。我个人建议你从数学模型入手,先搞清楚输入输出关系,再逐步加入传递函数和噪声模型,最后处理非线性问题。这样循序渐进,不容易乱。
好了,传感器模型基础就聊到这儿。记住一句话:模型是仿真的灵魂,建好模型,后面的路就好走了。