Уравнение B
Уравнение B, также называемое методом бета-параметра (Beta parameter method), — самый простой способ перевести сопротивление термистора в температуру. Оно использует одну константу материала, которую предоставляет производитель, чтобы приблизительно описать поведение термистора.
Формула уравнения B
\[ \frac{1}{T} = \frac{1}{T_0} + \frac{1}{B} \ln \left( \frac{R}{R_0} \right) \]
В этом уравнении T — искомая температура в кельвинах. R — измеренное сопротивление при неизвестной температуре T.
\( T_0 \) — опорная температура, обычно 298,15 К (25 °C), при которой известно сопротивление термистора. \( R_0 \) — сопротивление при опорной температуре \( T_0 \), для распространённых термисторов часто 10 кОм.
B — бета-значение термистора, константа материала. А ln — натуральный логарифм.
Понимание параметров
R₀ (опорное сопротивление):
Это сопротивление термистора при известной температуре, обычно 25 °C. Например, «термистор на 10 кОм» имеет R₀ = 10 000 Ом при 25 °C. Это значение должно быть указано в даташите.
B (бета-значение):
Значение B — константа, которую обычно предоставляют производители. Оно описывает, насколько быстро сопротивление меняется с температурой. Распространённые значения лежат в диапазоне от 3000 до 4000 К.
В даташите B часто задаётся для диапазона температур, например B₂₅/₈₅ = 3950, что означает, что бета-значение равно 3950 между 25 °C и 85 °C.
Температура в кельвинах:
Температура в уравнении B должна быть выражена в кельвинах (Кельвин = Цельсий + 273,15), а не в градусах Цельсия. Перед использованием уравнения переведите температуру в кельвины, а результат переведите обратно в градусы Цельсия, вычтя 273,15.
Пример расчёта
Допустим, измеренное сопротивление термистора составляет 10 475 Ом — это и есть R в уравнении. Чтобы вычислить температуру, подставим это значение вместе с опорной температурой \( T_0 = 298{,}15 K \) (25 °C), опорным сопротивлением \( R_0 = 10 k\Omega \) и бета-значением термистора 3950 в уравнение B.
Шаг 1: вычисляем отношение сопротивлений \[ \frac{R}{R_0} = \frac{10475}{10000} = 1.0475 \]
Шаг 2: вычисляем натуральный логарифм отношения \[ \ln(1.0475) = 0.04641 \]
Шаг 3: применяем уравнение B \[ \frac{1}{T} = \frac{1}{298.15} + \frac{1}{3950} \times 0.04641 \]
\[ \frac{1}{T} = 0.003354 + 0.00001175 = 0.003366 \]
Шаг 4: вычисляем T, взяв обратное значение \[ T = \frac{1}{0.003366} = 297.1 K \]
Шаг 5: переводим в градусы Цельсия \[ T = 297.1 - 273.15 = 23.95 °C \]
Измеренное сопротивление 10 475 Ом соответствует температуре примерно 24 °C.
Функция на Rust
fn calculate_temperature(current_res: f64, ref_res: f64, ref_temp: f64, b_val: f64) -> f64 {
let ln_value = (current_res/ref_res).ln();
// let ln_value = libm::log(current_res / ref_res); // для no_std используйте этот крейт
let inv_t = (1.0 / ref_temp) + ((1.0 / b_val) * ln_value);
1.0 / inv_t
}
fn kelvin_to_celsius(kelvin: f64) -> f64 {
kelvin - 273.15
}
fn celsius_to_kelvin(celsius: f64) -> f64 {
celsius + 273.15
}
const B_VALUE: f64 = 3950.0;
const V_IN: f64 = 3.3; // Входное напряжение
const REF_RES: f64 = 10_000.0; // Опорное сопротивление в омах (10 кОм)
const REF_TEMP: f64 = 25.0; // Опорная температура 25 °C
fn main() {
let t0 = celsius_to_kelvin(REF_TEMP);
let r = 10475.0; // Измеренное сопротивление в омах
let temperature_kelvin = calculate_temperature(r, REF_RES, t0, B_VALUE);
let temperature_celsius = kelvin_to_celsius(temperature_kelvin);
println!("Temperature: {:.2} °C", temperature_celsius);
}