9df0fe406f
Remove VREF in reports
...
Since VREF is an implementation detail, there shouldn't be a need to
include it in reports.
The ChannelState vref is removed along with it as its only use was to
save VREF measurements for later reporting.
2023-08-22 11:40:42 +08:00
b04a61c414
Turn off LED L3 only when all channels have no PID
...
Change the behaviour of LED L3 to turn off only when all channels have
PID disengaged, as opposed to when any channel disengages PID.
Otherwise, when disengaging PID on a Thermostat that has had both
channels engaged in PID, the LED would turn off, even when PID is still
engaged on the other channel.
This lets the LED better reflect the status of the Thermostat as a
whole, as it would stay on as long as PID is engaged on at least one
channel.
2023-08-07 16:09:54 +08:00
570c0324b3
implement support for fan PWM
...
Co-authored-by: Egor Savkin <es@m-labs.hk>
Co-committed-by: Egor Savkin <es@m-labs.hk>
2023-03-22 17:15:49 +08:00
26ad2f0119
rewrite PID
...
Rewrite of PID according to https://hackmd.io/IACbwcOTSt6Adj3_F9bKuw PID implementation.
To migrate:
- TEC+/- pin polarity has to be reversed.
- Some saved settings might be wiped upon flashing of new firmware, back up settings before upgrade
- Min / Max integral parameters no longer exist
- kp, ki, kd will likely need to be retuned
The software has been tested on hardware with good temperature control stability.
Reviewed-on: M-Labs/thermostat#68
Co-authored-by: topquark12 <aw@m-labs.hk>
Co-committed-by: topquark12 <aw@m-labs.hk>
2022-02-24 20:16:47 +08:00
16844a1dc1
dac: fix inconsistent current output behavior due to repeated sampling of noisy vref
2021-01-25 13:51:50 +08:00
9e4d06fdbc
clarify comment
2021-01-11 16:24:43 +08:00
193d54a0a6
pid: anti-windup when compliance voltage reached
2021-01-11 14:00:52 +08:00
3067b356c5
channels: add methods to retrieve actual voltage and current of TEC
2021-01-08 16:18:20 +08:00
3ba2cc9ddc
channels: voltage measurement refalect actual voltage across TEC
2021-01-08 15:52:35 +08:00
e9e46b29cf
pid: integrate time_delta to free gain parameters from sampling period
...
Fixes Gitea issue #22
2020-12-18 15:40:05 +01:00
b7e6cdbec2
pytec: measure interval
2020-12-16 22:14:21 +01:00
5ddd4d250e
channels: swap adc inputs
...
Fixes Gitea issue #12
2020-12-07 00:22:00 +01:00
6fd5328042
channels: rm debug output
2020-10-01 02:09:43 +02:00
6e0cf26d6a
export postfilter + s-h as json
2020-09-30 22:53:21 +02:00
d4901cbab1
channels: add dac_value to Report
2020-09-30 22:53:03 +02:00
62d89a68a1
pwm: export summary as json
2020-09-30 22:10:42 +02:00
11f2ebe961
channels: DRY get_center(), update vref if used
2020-09-30 19:14:15 +02:00
445cde6ae8
channels: add test report_to_json
2020-09-30 18:01:18 +02:00
6951489545
channels: add pid_output to Report
2020-09-30 18:00:16 +02:00
9e5a58cafd
main: switch reports to json serialization
2020-09-27 23:58:03 +02:00
61d2cd6ecf
channels: init i_set at centerpoint
2020-09-25 22:56:23 +02:00
f3ec96f425
channels: fix doc
2020-09-25 22:55:48 +02:00
a2caac0fe5
channels: power_down TEC when thermistor is not connected to ADC
2020-09-25 00:01:08 +02:00
58e648b5e0
pid::Parameters, CenterPoint: demote f32 fields to save config space
2020-09-24 20:47:02 +02:00
c5c0ce5625
channels: rm debug output
2020-09-24 19:49:11 +02:00
a84242fb1f
implement setting i_set centerpoint
2020-09-23 22:30:04 +02:00
a4dde1b8ca
delint
2020-09-18 00:55:53 +02:00
ba84295ec5
reconnect the pid controller
2020-09-18 00:09:30 +02:00
1157b73f7f
max_i_pos/max_i_neg: remove vref from calculation
...
full duty pwm is at vref already
2020-09-17 01:03:57 +02:00
f76ee9a607
separate adc and max vref
2020-09-16 23:31:49 +02:00
fc0ca8b581
calculate i_set current
2020-09-16 22:22:48 +02:00
8c80062da8
use proper units for pwm pins
2020-09-16 22:06:15 +02:00
7d45d5ad32
adc: complete temperature calculation
2020-09-16 20:50:23 +02:00
dda1f2f0b4
use ThermodynamicTemperature
2020-09-16 18:40:07 +02:00
b1b6d1ea94
fixes
2020-09-14 00:12:28 +02:00
b80fcc430b
channel_state: move adc_calibration into ChannelState
2020-09-13 23:15:48 +02:00
bb26490153
unit: replace with uom
2020-09-13 23:13:51 +02:00
c11b71cc0d
adc: don't calibrate but convert using ChannelCalibration
2020-09-09 23:10:33 +02:00
9a912392be
channels: fix dac calibration
2020-09-06 19:28:33 +02:00
3c94342448
replace tec_u_meas_adc with pins_adc
2020-05-28 02:06:32 +02:00
5418488a2f
replace channel[01].adc with pins_adc
2020-05-28 02:01:55 +02:00
35af543e33
channels: fix/optimize calibrate_dac_value()
2020-05-20 23:09:24 +02:00
cca0a77657
keep shdn high all the time
2020-05-20 23:07:03 +02:00
d326517453
channels: remove unneccessary pub qualifiers
2020-05-20 21:27:22 +02:00
e6e150dac3
add Channels::calibrate_dac_value()
2020-05-19 00:15:39 +02:00
70127491f6
add vref_pin
2020-05-18 22:46:09 +02:00
3d6e1f18a6
add tec_u_meas
2020-05-18 21:38:13 +02:00
0bc0af7487
rename dac_loopback to dac_feedback
2020-05-17 02:18:25 +02:00
34c2da4484
ad7172: fix calibration
2020-05-17 02:11:53 +02:00
ba860e52ac
control i_set dac in volts
2020-05-17 01:27:47 +02:00