Единицы измерения и перевод
Урок про дисциплину единиц: половина ошибок измерений — это перепутанные кПа и Па, °C и K, мВ и В.
Размерность — это «тип» величины (длина, давление, температура); единица — конкретный масштаб внутри размерности (м, кПа, °C).
Самая обидная ошибка в сенсорике — не физика и не алгоритм, а перепутанные единицы. Датчик отдал милливольты, а вы посчитали как вольты; даташит в фунтах на квадратный дюйм, а вы ждали паскали. Дисциплина единиц спасает измерения.
SI-приставки и перевод
Приставки — это просто степени десяти. Перевод сводится к умножению на коэффициент:
$$ x_{[\text{целевая}]} = x_{[\text{исходная}]} \cdot k $$
# Перевод давления между единицами
factors = {
"Pa": 1.0,
"kPa": 1000.0,
"bar": 100000.0,
"psi": 6894.76,
}
def convert(value, src, dst):
pa = value * factors[src] # в паскали
return pa / factors[dst] # в целевые
print(convert(1, "bar", "kPa"), "кПа")
print(round(convert(100, "kPa", "psi"), 3), "psi")Вывод:
100.0 кПа 14.504 psi
Температурные шкалы
Температура коварна тем, что у шкал разный нуль. Цельсий и Кельвин отличаются сдвигом, Фаренгейт — и сдвигом, и масштабом:
$$ K = °C + 273{,}15, \qquad °F = °C \cdot \tfrac{9}{5} + 32 $$
def c_to_k(c): return c + 273.15
def c_to_f(c): return c * 9/5 + 32
for c in (0, 25, 100):
print(c, "°C =", round(c_to_k(c), 2), "K =", round(c_to_f(c), 1), "°F")Вывод:
0 °C = 273.15 K = 32.0 °F 25 °C = 298.15 K = 77.0 °F 100 °C = 373.15 K = 212.0 °F
Как работает под капотом
Хороший приём — хранить все внутренние величины в одной системе (СИ) и переводить только на входе и выходе. Тогда вся математика идёт в паскалях, кельвинах и вольтах, а пользователю показывают удобные единицы лишь в самом конце. Контроль размерностей — мощный способ ловить ошибки: если в формуле слева метры, а справа метры на секунду, значит где-то опечатка. Профессиональные системы хранят величину вместе с единицей, чтобы перевод и проверка были автоматическими.
Частые ошибки
- Путать сдвиг и масштаб у температур: Кельвин — только сдвиг, Фаренгейт — и то и другое.
- Смешивать единицы внутри расчёта (часть в кПа, часть в Па).
- Забывать, что приставки кратны 1000, а не 100 (кроме санти-/деци-).
Итог
- Перевод единиц одной размерности — умножение на коэффициент.
- Температурные шкалы различаются нулём и масштабом, будьте внимательны.
- Считайте в СИ внутри, переводите только на границах системы.