一、误差基本概念
1.1 误差的定义
做控制这么多年,我越来越觉得——误差这东西,就像影子一样甩不掉。
你设计了一个完美的PID控制器,仿真跑得漂漂亮亮。结果一上硬件,输出就是差那么零点几伏。为什么?因为真实世界从来不是理想模型。误差,说白了就是测量值或计算值与真实值之间的偏差。
用公式表达就是:
误差 = 测量值 - 真实值
嗯,看起来简单。但实际项目中,这个「真实值」往往是个哲学问题——你永远无法绝对精确地知道它。我们能做的,只是用更高精度的仪器去逼近。
1.2 误差的分类
我个人习惯把误差分成三类,这样排查问题的时候思路会清晰很多。
系统误差
这类误差有规律、可重复。比如传感器零偏、放大器温漂、ADC量化误差。我在做电机电流环的时候,遇到过霍尔传感器在25℃和85℃下输出差了2.3%。这就是典型的系统误差。
特点:
- 大小和方向固定,或按一定规律变化
- 理论上可以通过标定或补偿消除
- 重复测量不会减少
随机误差
这类误差没有固定规律,服从统计分布。比如电路热噪声、AD转换的抖动、机械振动引起的读数波动。
你想想看,同一个传感器测同一个物理量,连续读100次,每次都不一样。这就是随机误差在作怪。
特点:
- 大小和方向随机,但服从正态分布
- 无法完全消除,但可以通过多次测量取平均来减小
- 标准差决定了测量精度的极限
粗大误差
这类误差就是「出格」的数据。比如传感器突然断线、电磁干扰导致的一个异常跳变、人为读数看错。
特点:
- 明显偏离正常范围
- 必须剔除,不能参与计算
- 通常由外部异常引起
1.3 误差的表示方法
绝对误差
就是测量值减去真实值。单位与测量值相同。
绝对误差 = 测量值 - 真实值
比如你测一个5V电压,读数是4.98V,绝对误差就是-0.02V。
但绝对误差有个问题——它不告诉你这个误差相对于测量范围来说是大还是小。测5V差0.02V,和测0.1V差0.02V,严重程度完全不一样。
相对误差
相对误差 = 绝对误差 / 真实值 × 100%
还是上面那个例子:
- 测5V,绝对误差-0.02V,相对误差-0.4%
- 测0.1V,绝对误差-0.02V,相对误差-20%
你看,同样的绝对误差,相对误差差了50倍。所以做小信号测量时,我特别关注相对误差。
| 表示方法 | 公式 | 适用场景 |
|---|---|---|
| 绝对误差 | Δ = x - x₀ | 量程固定、精度要求明确的场合 |
| 相对误差 | δ = Δ / x₀ × 100% | 不同量程比较、精度等级标注 |
| 引用误差 | γ = Δ / 量程 × 100% | 仪表精度等级标定(如0.5级表) |
1.4 离散系统误差特点
离散系统和连续系统最大的区别在哪?采样和量化。
你想想看,连续系统里信号是光滑的,误差也是连续的。但离散系统里,我们只在采样时刻拿到数据,中间发生了什么?不知道。
离散系统误差的几个典型特点:
- 采样误差:采样频率不够高,会丢失高频信息。我遇到过用1kHz采样一个500Hz的信号,结果混叠成了一个低频信号——这就是奈奎斯特定理没遵守的后果。
- 量化误差:ADC把连续值变成离散数字,必然有舍入。12位ADC的量化步长是3.3V/4096 ≈ 0.8mV。这个误差是随机的,但范围固定。
- 截断误差:做定点数运算时,乘法结果要截断或舍入。我早期做DSP算法时,就因为截断方式没选对,导致一个积分器慢慢漂到了饱和。
- 时序误差:任务调度延迟、中断响应抖动,都会导致采样时刻不精确。这在高速控制系统中是致命问题。
下面这张图是我总结的离散系统误差来源框架,帮你快速定位问题:
这张图把离散系统误差分成了两大块:采样相关和量化计算相关。我每次做系统设计时,都会对着这张图逐项排查,基本能覆盖90%的误差来源。
好了,这一章的内容就到这里。误差的基本概念是后续所有补偿方法的基础。下一章我们会深入讨论系统误差的建模与标定方法——嗯,到时候我会分享一个我实际用过的分段线性插值补偿案例,挺实用的。
公众号:蓝海资料掘金营,微信deep3321