From a76b8de994f9f3aeef64e252af6483a16770e4f1 Mon Sep 17 00:00:00 2001 From: linuswck Date: Mon, 22 Jul 2024 17:36:08 +0800 Subject: [PATCH] thermostat: Save the user config-ed value directly - the firmware recorded the actual value set with quantization errors or other errors - this caused confusion for the user when they read back the settings --- src/thermostat/thermostat.rs | 19 +++++++++++-------- 1 file changed, 11 insertions(+), 8 deletions(-) diff --git a/src/thermostat/thermostat.rs b/src/thermostat/thermostat.rs index bc222b5..03d6bc2 100644 --- a/src/thermostat/thermostat.rs +++ b/src/thermostat/thermostat.rs @@ -233,36 +233,39 @@ impl Thermostat { pub fn set_i(&mut self, i_tec: ElectricCurrent) -> ElectricCurrent { let voltage = i_tec * 10.0 * R_SENSE + self.tec_settings.center_pt; - let voltage = self.max1968.set_dac(voltage, self.max1968.dac_out_range); + let _voltage = self.max1968.set_dac(voltage, self.max1968.dac_out_range); - self.tec_settings.i_set = (voltage - self.tec_settings.center_pt) / (10.0 * R_SENSE); + self.tec_settings.i_set = i_tec; self.tec_settings.i_set } pub fn set_max_v(&mut self, max_v: ElectricPotential) -> ElectricPotential { let duty = (max_v / TecSettings::MAX_V_DUTY_TO_VOLTAGE_RATE).get::(); - let duty = self + let _duty = self .max1968 .set_pwm(PwmPinsEnum::MaxV, duty as f64, TecSettings::MAX_V_DUTY_MAX); - self.tec_settings.max_v_set = duty as f32 * TecSettings::MAX_V_DUTY_TO_VOLTAGE_RATE; + + self.tec_settings.max_v_set = max_v; self.tec_settings.max_v_set } pub fn set_max_i_pos(&mut self, max_i_pos: ElectricCurrent) -> ElectricCurrent { let duty = (max_i_pos / TecSettings::MAX_I_POS_NEG_DUTY_TO_CURRENT_RATE).get::(); - let duty = self + let _duty = self .max1968 .set_pwm(PwmPinsEnum::MaxPosI, duty as f64, TecSettings::MAX_I_POS_DUTY_MAX); - self.tec_settings.max_i_pos_set = duty as f32 * TecSettings::MAX_I_POS_NEG_DUTY_TO_CURRENT_RATE; + + self.tec_settings.max_i_pos_set = max_i_pos; self.tec_settings.max_i_pos_set } pub fn set_max_i_neg(&mut self, max_i_neg: ElectricCurrent) -> ElectricCurrent { let duty = (max_i_neg / TecSettings::MAX_I_POS_NEG_DUTY_TO_CURRENT_RATE).get::(); - let duty = self + let _duty = self .max1968 .set_pwm(PwmPinsEnum::MaxNegI, duty as f64, TecSettings::MAX_I_NEG_DUTY_MAX); - self.tec_settings.max_i_neg_set = duty as f32 * TecSettings::MAX_I_POS_NEG_DUTY_TO_CURRENT_RATE; + + self.tec_settings.max_i_neg_set = max_i_neg; self.tec_settings.max_i_neg_set }