Index: firmware/App/Controllers/Heaters.c =================================================================== diff -u -r9b0538b33513dd1443e64c3b1c894133476255d8 -rb689a4627e86e263cb69e83b91e80802bf411c92 --- firmware/App/Controllers/Heaters.c (.../Heaters.c) (revision 9b0538b33513dd1443e64c3b1c894133476255d8) +++ firmware/App/Controllers/Heaters.c (.../Heaters.c) (revision b689a4627e86e263cb69e83b91e80802bf411c92) @@ -59,10 +59,8 @@ #define D5_HEAT_TX_P_COEFFICIENT 0.05F ///< P Term for AC primary heater control during treatment mode. #define D5_HEAT_TX_I_COEFFICIENT 0.001F ///< I Term for AC primary heater control during treatment mode. -//#define D45_HEAT_P_COEFFICIENT 0.20F ///< P Term for trimmer heater control. -//#define D45_HEAT_I_COEFFICIENT 0.05F ///< I Term for trimmer heater control. -#define D45_HEAT_P_COEFFICIENT 0.05F ///< P Term for trimmer heater control. -#define D45_HEAT_I_COEFFICIENT 0.02F ///< I Term for trimmer heater control. +#define D45_HEAT_P_COEFFICIENT 0.01F ///< P Term for trimmer heater control. +#define D45_HEAT_I_COEFFICIENT 0.005F ///< I Term for trimmer heater control. #define D45_HEAT_TX_INIT_FEED_FORWARD 0.0F ///< Initial Feed forward term for heater control #define HEATERS_DATA_PUBLISH_INTERVAL ( MS_PER_SECOND / TASK_PRIORITY_INTERVAL ) ///< Heaters data publish interval. @@ -82,7 +80,7 @@ #define D5_HEAT_CONTROL_INTERVAL_MS 3000 /// Primary heater control interval in milli seconds #define D5_HEAT_CONTROL_INTERVAL_COUNT ( D5_HEAT_CONTROL_INTERVAL_MS / TASK_GENERAL_INTERVAL ) ///< Primary heater control interval count. -#define D45_HEAT_CONTROL_INTERVAL_MS ( 1 * MS_PER_SECOND ) ///< Trimmer heater control interval in milli seconds +#define D45_HEAT_CONTROL_INTERVAL_MS ( 3 * MS_PER_SECOND ) ///< Trimmer heater control interval in milli seconds #define D45_HEAT_CONTROL_INTERVAL_COUNT ( D45_HEAT_CONTROL_INTERVAL_MS / TASK_GENERAL_INTERVAL ) ///< Trimmer heater control interval count. #define D5_TARGET_TEMP_ADJUST_LOW_QD_INTERVAL ( 3 * SEC_PER_MIN * MS_PER_SECOND / TASK_GENERAL_INTERVAL ) ///< Adjust primary target temperature - outer loop control interval for low Qd. #define D5_TARGET_TEMP_ADJUST_HIGH_QD_INTERVAL ( 1 * SEC_PER_MIN * MS_PER_SECOND / TASK_GENERAL_INTERVAL ) ///< Adjust primary target temperature - outer loop control interval for high Qd. @@ -792,7 +790,7 @@ if ( D5_HEAT == heater ) { - measuredTemperature = getD4AverageTemperature(); + measuredTemperature = getFilteredTemperatureValue( D4_TEMP ); if ( DD_MODE_HEAT != opMode ) { @@ -822,7 +820,7 @@ } else { - measuredTemperature = getD50AverageTemperature(); + measuredTemperature = getFilteredTemperatureValue( D50_TEMP ); if ( DD_MODE_HEAT != opMode ) { @@ -885,7 +883,7 @@ if ( D5_HEAT == heater ) { // Inlet temperature post heat exchanger - F32 inletTemperature = getD78AverageTemperature(); + F32 inletTemperature = getFilteredTemperatureValue( D78_TEMP ); F32 deltaTempC = targetTemperature - inletTemperature; F32 capDeltaTempC = MAX( deltaTempC, HEATERS_ZERO_DELTA_TEMP_C ); F32 flowrate = ( getTDDialysateFlowrate() + RINSE_PUMP_EST_FLOWRATE ) / LITER_IN_ML ; @@ -906,7 +904,7 @@ targetTemperature = adjustedPrimaryTargetTemp; } #if 1 - measuredTemperature = getD4AverageTemperature(); + measuredTemperature = getFilteredTemperatureValue( D4_TEMP ); deltaTempC = fabs( targetTemperature - measuredTemperature ); if ( deltaTempC >= D5_HEATER_DEADBAND_CONTROL ) @@ -915,7 +913,7 @@ control[ heater ].data = ctrl; } #else - measuredTemperature = getD4AverageTemperature(); + measuredTemperature = getFilteredTemperatureValue( D4_TEMP ); deltaTempC = targetTemperature - measuredTemperature; capDeltaTempC = fabs(deltaTempC); d5_p_gain = ( D5_HEATER_PWM_ADJ_SLOPE_FACTOR * getTDDialysateFlowrate() ) + D5_HEATER_PWM_INTERCEPT_FACTOR; @@ -956,7 +954,7 @@ } else { - measuredTemperature = getD50AverageTemperature(); + measuredTemperature = getFilteredTemperatureValue( D50_TEMP ); ctrl = runPIController( PI_CONTROLLER_ID_D45_HEAT, targetTemperature, measuredTemperature ); control[ heater ].data = ctrl;