Merge branch 'issue/21-calibration' of mhu/reflow-oven-control-sw into dev
This commit is contained in:
commit
d51c73d694
@ -132,7 +132,7 @@ and
|
||||
.. doxygenfunction:: adc_pt1000_get_resistance_calibration
|
||||
:outline:
|
||||
|
||||
are used to set the reistance calibration internally. For a guide on how to calibrate the deivce, see the corresponding :ref:`usage_calibration` usage page.
|
||||
are used to set the resistance calibration internally. For a guide on how to calibrate the deivce, see the corresponding :ref:`usage_calibration` usage page.
|
||||
|
||||
The calibration is calculated the following way:
|
||||
|
||||
@ -147,13 +147,13 @@ The calibration is calculated the following way:
|
||||
OFFSET [label="Offset", description="Offset Correction :math:`O`"];
|
||||
OUT [shape=endpoint, description="Corrected Value"];
|
||||
|
||||
LF -> SENS -> OFFSET -> OUT
|
||||
LF -> OFFSET -> SENS -> OUT
|
||||
}
|
||||
|
||||
The final calibrated PT1000 resistance is calculated as:
|
||||
|
||||
.. math::
|
||||
R_{PT1000_{corr}} = R_{PT1000_{LF}} \cdot (1 + \sigma) + O
|
||||
R_{PT1000_{corr}} = (R_{PT1000_{LF}} - O) \cdot (1 + \sigma)
|
||||
|
||||
The default values, if no calibration is loaded / executed, are:
|
||||
|
||||
|
1
stm-firmware/.gitignore
vendored
1
stm-firmware/.gitignore
vendored
@ -14,3 +14,4 @@ reflow-controller.includes
|
||||
*.includes
|
||||
*.config
|
||||
*.files
|
||||
*.user.*
|
||||
|
@ -216,7 +216,7 @@ void adc_pt1000_get_resistance_calibration(float *offset, float *sensitivity_dev
|
||||
static inline float adc_pt1000_apply_calibration(float raw_resistance)
|
||||
{
|
||||
if (calibration_active)
|
||||
return pt1000_res_raw_lf * (1.0f + pt1000_sens_dev) + pt1000_offset;
|
||||
return (raw_resistance - pt1000_offset) * (1.0f + pt1000_sens_dev);
|
||||
else
|
||||
return raw_resistance;
|
||||
|
||||
|
@ -30,9 +30,9 @@
|
||||
enum calibration_shell_state {CAL_START = 0, CAL_WAIT_RES1, CAL_MEAS_RES1, CAL_WAIT_RES2, CAL_MEAS_RES2};
|
||||
|
||||
void calibration_calculate(float low_measured, float low_setpoint, float high_measured, float high_setpoint,
|
||||
float *sens_deviation, float *sens_corrected_offset)
|
||||
float *sens_deviation, float *offset)
|
||||
{
|
||||
if (!sens_deviation || !sens_corrected_offset)
|
||||
if (!sens_deviation || !offset)
|
||||
return;
|
||||
|
||||
float delta_y;
|
||||
@ -45,7 +45,7 @@ void calibration_calculate(float low_measured, float low_setpoint, float high_me
|
||||
sens_corr_mult = delta_x / delta_y;
|
||||
*sens_deviation = sens_corr_mult - 1.0f;
|
||||
|
||||
*sens_corrected_offset = low_setpoint - low_measured * sens_corr_mult;
|
||||
*offset = (high_setpoint * low_measured - low_setpoint * high_measured) / (high_setpoint - low_setpoint);
|
||||
}
|
||||
|
||||
|
||||
|
@ -27,7 +27,7 @@
|
||||
#include <shellmatta.h>
|
||||
|
||||
void calibration_calculate(float low_measured, float low_setpoint, float high_measured, float high_setpoint,
|
||||
float *sens_deviation, float *sens_corrected_offset);
|
||||
float *sens_deviation, float *offset);
|
||||
|
||||
float *calibration_acquire_data_start(uint32_t count, volatile int *flag);
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user