26 lines
765 B
Rust
26 lines
765 B
Rust
use libm::{log, logf};
|
|
use crate::quantity::{Kelvins, Ohms};
|
|
|
|
/// Convert thermistor resistance to a temperature using beta parameter equation
|
|
pub fn convert_beta(
|
|
resistance: Ohms<f32>,
|
|
beta: f32,
|
|
reference_temp: Kelvins<f32>,
|
|
reference_resist: Ohms<f32>,
|
|
) -> Kelvins<f32> {
|
|
let kelvins = 1.0 / ((1.0 / reference_temp.0) + (1.0 / beta) * logf(resistance.0 / reference_resist.0));
|
|
Kelvins(kelvins)
|
|
}
|
|
|
|
/// Convert thermistor resistance to a temperature using Steinhart-Hart equation
|
|
pub fn convert_steinhart(
|
|
resistance: Ohms<f64>,
|
|
a: f64,
|
|
b: f64,
|
|
c: f64,
|
|
) -> Kelvins<f32> {
|
|
let log_omhs = log(resistance.0);
|
|
let kelvins = 1.0 / (a + b * log_omhs + c * log_omhs * log_omhs * log_omhs);
|
|
Kelvins(kelvins as f32)
|
|
}
|