Нелинейность и гистерезис

Урок про два главных источника систематической погрешности: отклонение от прямой и зависимость показаний от истории.

Нелинейность — максимальное отклонение реальной характеристики от идеальной прямой, обычно выражается в процентах от полной шкалы (% 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 — её нельзя сравнить между датчиками.
  • Принимать гистерезис за шум: шум случаен, гистерезис систематичен и зависит от истории.
  • Линеаризовать характеристику с гистерезисом одной функцией — направление движения всё равно даст ошибку.

Итог

  • Нелинейность — отклонение от прямой, измеряется в % от полной шкалы.
  • Гистерезис — зависимость показания от направления изменения величины.
  • Нелинейность убирается линеаризацией, гистерезис — нет; его закладывают в бюджет.
Проверьте себя
1. Почему нелинейность принято выражать в % FSO, а не в вольтах?
AТак короче писать
BЧтобы сравнивать датчики с разными диапазонами
CПотому что вольты запрещены в даташитах
DЧтобы скрыть погрешность
2. Чем гистерезис принципиально отличается от случайного шума?
AОн больше по величине
BОн зависит от направления изменения величины (от истории)
CОн встречается только в цифровых датчиках
DЕго можно убрать усреднением