thermostat/src/steinhart_hart.rs

32 lines
636 B
Rust

use num_traits::float::Float;
/// Steinhart-Hart equation parameters
#[derive(Clone, Debug)]
pub struct Parameters {
pub t0: f64,
pub b: f64,
pub r0: f64,
}
impl Parameters {
/// Perform the voltage to temperature conversion.
///
/// Result unit: Kelvin
///
/// TODO: verify
pub fn get_temperature(&self, r: f64) -> f64 {
let inv_temp = 1.0 / self.t0 + (r / self.r0).ln() / self.b;
1.0 / inv_temp
}
}
impl Default for Parameters {
fn default() -> Self {
Parameters {
t0: 0.001_4,
b: 0.000_000_099,
r0: 5_110.0,
}
}
}