forked from M-Labs/thermostat
config: convert steinhart_hart::Parameters to SteinhartHartConfig for f32 storage
This commit is contained in:
parent
daa398cb5e
commit
5a293a0ada
|
@ -3,6 +3,8 @@ use postcard::{from_bytes, to_slice};
|
||||||
use uom::si::{
|
use uom::si::{
|
||||||
electric_potential::volt,
|
electric_potential::volt,
|
||||||
electric_current::ampere,
|
electric_current::ampere,
|
||||||
|
electrical_resistance::ohm,
|
||||||
|
thermodynamic_temperature::degree_celsius,
|
||||||
};
|
};
|
||||||
use crate::{
|
use crate::{
|
||||||
channels::{CHANNELS, Channels},
|
channels::{CHANNELS, Channels},
|
||||||
|
@ -41,7 +43,7 @@ pub struct ChannelConfig {
|
||||||
center: CenterPoint,
|
center: CenterPoint,
|
||||||
pid: pid::Parameters,
|
pid: pid::Parameters,
|
||||||
pid_target: f32,
|
pid_target: f32,
|
||||||
sh: steinhart_hart::Parameters,
|
sh: SteinhartHartConfig,
|
||||||
pwm: PwmLimits,
|
pwm: PwmLimits,
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -53,13 +55,30 @@ impl ChannelConfig {
|
||||||
center: state.center.clone(),
|
center: state.center.clone(),
|
||||||
pid: state.pid.parameters.clone(),
|
pid: state.pid.parameters.clone(),
|
||||||
pid_target: state.pid.target as f32,
|
pid_target: state.pid.target as f32,
|
||||||
sh: state.sh.clone(),
|
sh: (&state.sh).into(),
|
||||||
pwm,
|
pwm,
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#[derive(Clone, Serialize, Deserialize)]
|
||||||
|
struct SteinhartHartConfig {
|
||||||
|
t0: f32,
|
||||||
|
r0: f32,
|
||||||
|
b: f32,
|
||||||
|
}
|
||||||
|
|
||||||
|
impl From<&steinhart_hart::Parameters> for SteinhartHartConfig {
|
||||||
|
fn from(sh: &steinhart_hart::Parameters) -> Self {
|
||||||
|
SteinhartHartConfig {
|
||||||
|
t0: sh.t0.get::<degree_celsius>() as f32,
|
||||||
|
r0: sh.r0.get::<ohm>() as f32,
|
||||||
|
b: sh.b as f32,
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
#[derive(Clone, Serialize, Deserialize)]
|
#[derive(Clone, Serialize, Deserialize)]
|
||||||
struct PwmLimits {
|
struct PwmLimits {
|
||||||
max_v: f32,
|
max_v: f32,
|
||||||
|
@ -90,7 +109,7 @@ mod test {
|
||||||
center: CenterPoint::Override(1.5),
|
center: CenterPoint::Override(1.5),
|
||||||
pid: pid::Parameters::default(),
|
pid: pid::Parameters::default(),
|
||||||
pid_target: 93.7,
|
pid_target: 93.7,
|
||||||
sh: steinhart_hart::Parameters::default(),
|
sh: (&steinhart_hart::Parameters::default()).into(),
|
||||||
pwm: PwmLimits {
|
pwm: PwmLimits {
|
||||||
max_v: 1.65,
|
max_v: 1.65,
|
||||||
max_i_pos: 2.1,
|
max_i_pos: 2.1,
|
||||||
|
|
Loading…
Reference in New Issue