forked from M-Labs/thermostat
Compare commits
1 Commits
b3a6d16c3d
...
8b0ad14311
Author | SHA1 | Date | |
---|---|---|---|
8b0ad14311 |
@ -24,7 +24,7 @@ pub struct Channel<C: ChannelPins> {
|
|||||||
pub vref_meas: ElectricPotential,
|
pub vref_meas: ElectricPotential,
|
||||||
pub shdn: C::Shdn,
|
pub shdn: C::Shdn,
|
||||||
pub vref_pin: C::VRefPin,
|
pub vref_pin: C::VRefPin,
|
||||||
pub itec_pin: C::ITecPin,
|
pub itec_pin: C::ItecPin,
|
||||||
/// feedback from `dac` output
|
/// feedback from `dac` output
|
||||||
pub dac_feedback_pin: C::DacFeedbackPin,
|
pub dac_feedback_pin: C::DacFeedbackPin,
|
||||||
pub tec_u_meas_pin: C::TecUMeasPin,
|
pub tec_u_meas_pin: C::TecUMeasPin,
|
||||||
|
@ -61,7 +61,7 @@ pub trait ChannelPins {
|
|||||||
type DacSync: OutputPin;
|
type DacSync: OutputPin;
|
||||||
type Shdn: OutputPin;
|
type Shdn: OutputPin;
|
||||||
type VRefPin;
|
type VRefPin;
|
||||||
type ITecPin;
|
type ItecPin;
|
||||||
type DacFeedbackPin;
|
type DacFeedbackPin;
|
||||||
type TecUMeasPin;
|
type TecUMeasPin;
|
||||||
}
|
}
|
||||||
@ -76,7 +76,7 @@ impl ChannelPins for Channel0 {
|
|||||||
type DacSync = PE4<Output<PushPull>>;
|
type DacSync = PE4<Output<PushPull>>;
|
||||||
type Shdn = PE10<Output<PushPull>>;
|
type Shdn = PE10<Output<PushPull>>;
|
||||||
type VRefPin = Channel0VRef;
|
type VRefPin = Channel0VRef;
|
||||||
type ITecPin = PA6<Analog>;
|
type ItecPin = PA6<Analog>;
|
||||||
type DacFeedbackPin = PA4<Analog>;
|
type DacFeedbackPin = PA4<Analog>;
|
||||||
type TecUMeasPin = PC2<Analog>;
|
type TecUMeasPin = PC2<Analog>;
|
||||||
}
|
}
|
||||||
@ -91,7 +91,7 @@ impl ChannelPins for Channel1 {
|
|||||||
type DacSync = PF6<Output<PushPull>>;
|
type DacSync = PF6<Output<PushPull>>;
|
||||||
type Shdn = PE15<Output<PushPull>>;
|
type Shdn = PE15<Output<PushPull>>;
|
||||||
type VRefPin = Channel1VRef;
|
type VRefPin = Channel1VRef;
|
||||||
type ITecPin = PB0<Analog>;
|
type ItecPin = PB0<Analog>;
|
||||||
type DacFeedbackPin = PA5<Analog>;
|
type DacFeedbackPin = PA5<Analog>;
|
||||||
type TecUMeasPin = PC3<Analog>;
|
type TecUMeasPin = PC3<Analog>;
|
||||||
}
|
}
|
||||||
@ -108,7 +108,7 @@ pub struct ChannelPinSet<C: ChannelPins> {
|
|||||||
pub dac_sync: C::DacSync,
|
pub dac_sync: C::DacSync,
|
||||||
pub shdn: C::Shdn,
|
pub shdn: C::Shdn,
|
||||||
pub vref_pin: C::VRefPin,
|
pub vref_pin: C::VRefPin,
|
||||||
pub itec_pin: C::ITecPin,
|
pub itec_pin: C::ItecPin,
|
||||||
pub dac_feedback_pin: C::DacFeedbackPin,
|
pub dac_feedback_pin: C::DacFeedbackPin,
|
||||||
pub tec_u_meas_pin: C::TecUMeasPin,
|
pub tec_u_meas_pin: C::TecUMeasPin,
|
||||||
}
|
}
|
||||||
|
@ -26,7 +26,11 @@ pub struct Parameters {
|
|||||||
impl Parameters {
|
impl Parameters {
|
||||||
/// Perform the resistance to temperature conversion.
|
/// Perform the resistance to temperature conversion.
|
||||||
pub fn get_temperature(&self, r: ElectricalResistance) -> ThermodynamicTemperature {
|
pub fn get_temperature(&self, r: ElectricalResistance) -> ThermodynamicTemperature {
|
||||||
let temp = (self.t0.recip() + (r / self.r0).get::<ratio>().ln() / self.b).recip();
|
let t0 = TemperatureInterval::new::<kelvin_interval>(self.t0.get::<kelvin>());
|
||||||
|
|
||||||
|
let inv_temp = 1.0 / t0 + (r / self.r0).get::<ratio>().ln() / self.b;
|
||||||
|
let temp = 1.0 / inv_temp;
|
||||||
|
|
||||||
ThermodynamicTemperature::new::<kelvin>(temp.get::<kelvin_interval>())
|
ThermodynamicTemperature::new::<kelvin>(temp.get::<kelvin_interval>())
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user