Нелинейность и гистерезис
Урок про два главных источника систематической погрешности: отклонение от прямой и зависимость показаний от истории.
Нелинейность — максимальное отклонение реальной характеристики от идеальной прямой, обычно выражается в процентах от полной шкалы (% FSO).
Идеальный датчик — прямая линия. Реальный изгибается. И ещё хуже: показание при подъёме величины может отличаться от показания при спуске к той же точке — это гистерезис. Оба эффекта дают систематическую ошибку, которую нельзя усреднить, но можно учесть.
Нелинейность в % FSO
Пусть полная шкала выхода $\text{FSO} = y_{max} - y_{min}$. Нелинейность — это
$$ N = \frac{\max_i \lvert y_i - y_i^{ideal} \rvert}{\text{FSO}} \cdot 100\% $$
где $y_i^{ideal}$ — значение по идеальной прямой, проведённой через концы (или методом наименьших квадратов).
# Идеальная прямая: 0.5 + 0.04*p (через концы)
def ideal(p):
return 0.5 + 0.04 * p
# реальные замеры (p в кПа -> V)
measured = {0: 0.50, 25: 1.62, 50: 2.55, 75: 3.55, 100: 4.50}
fso = 4.5 - 0.5
max_dev = 0.0
for p, v in measured.items():
dev = abs(v - ideal(p))
if dev > max_dev:
max_dev = dev
print("Макс. отклонение:", round(max_dev, 3), "В")
print("Нелинейность:", round(max_dev / fso * 100, 2), "% FSO")Вывод:
Макс. отклонение: 0.12 В Нелинейность: 3.0 % FSO
Гистерезис
Гистерезис — разница показаний в одной точке при подходе «снизу» и «сверху»:
$$ H = \frac{\max_i \lvert y_i^{up} - y_i^{down} \rvert}{\text{FSO}} \cdot 100\% $$
Причина — внутреннее трение, упругое последействие, магнитная или тепловая инерция. У механических и магнитных датчиков гистерезис заметнее, чем у оптических.
# замеры при росте и при спаде давления, В
up = {0: 0.50, 50: 2.55, 100: 4.50}
down = {0: 0.54, 50: 2.62, 100: 4.50}
fso = 4.0
max_h = max(abs(up[p] - down[p]) for p in up)
print("Макс. расхождение:", round(max_h, 3), "В")
print("Гистерезис:", round(max_h / fso * 100, 2), "% FSO")Вывод:
Макс. расхождение: 0.07 В Гистерезис: 1.75 % FSO
Как работает под капотом
Нелинейность лечится линеаризацией: либо аппроксимируют характеристику многочленом и обращают его, либо хранят таблицу с интерполяцией (раздел 4). Гистерезис принципиально не убирается одной обратной функцией, потому что показание зависит от направления движения. С ним борются механически (выбор материала), либо алгоритмически — учитывая знак производной сигнала, либо просто закладывают в бюджет погрешности.
Частые ошибки
- Указывать нелинейность в абсолютных единицах без привязки к FSO — её нельзя сравнить между датчиками.
- Принимать гистерезис за шум: шум случаен, гистерезис систематичен и зависит от истории.
- Линеаризовать характеристику с гистерезисом одной функцией — направление движения всё равно даст ошибку.
Итог
- Нелинейность — отклонение от прямой, измеряется в % от полной шкалы.
- Гистерезис — зависимость показания от направления изменения величины.
- Нелинейность убирается линеаризацией, гистерезис — нет; его закладывают в бюджет.