|
|
@ -96,12 +96,19 @@ int32_t WaterCoolingTemperatureControlModule::module_set_reg(int32_t regindex, i |
|
|
|
|
|
|
|
MODULE_REG_CASE__NOT_SUPPORT(kreg_water_cooling_tmp_controler_pid_nowoutput); |
|
|
|
MODULE_REG_CASE__NOT_SUPPORT(kreg_water_cooling_tmp_controler_pid_feedbackval); |
|
|
|
MODULE_REG_CASE__NOT_SUPPORT(kreg_water_cooling_tmp_controler_pid_integral_errorval); |
|
|
|
|
|
|
|
MODULE_REG_CASE__NOT_SUPPORT(kreg_water_cooling_tmp_controler_temp0); |
|
|
|
MODULE_REG_CASE__NOT_SUPPORT(kreg_water_cooling_tmp_controler_temp1); |
|
|
|
MODULE_REG_CASE__NOT_SUPPORT(kreg_water_cooling_tmp_controler_temp2); |
|
|
|
MODULE_REG_CASE__NOT_SUPPORT(kreg_water_cooling_tmp_controler_temp3); |
|
|
|
|
|
|
|
MODULE_REG_CASE__SET_REG_FLOAT(kreg_water_cooling_tmp_controler_temp0_offset, m_temperature_sensor_offset[0], 0.1); |
|
|
|
MODULE_REG_CASE__SET_REG_FLOAT(kreg_water_cooling_tmp_controler_temp1_offset, m_temperature_sensor_offset[1], 0.1); |
|
|
|
MODULE_REG_CASE__SET_REG_FLOAT(kreg_water_cooling_tmp_controler_temp2_offset, m_temperature_sensor_offset[2], 0.1); |
|
|
|
MODULE_REG_CASE__SET_REG_FLOAT(kreg_water_cooling_tmp_controler_temp3_offset, m_temperature_sensor_offset[3], 0.1); |
|
|
|
MODULE_REG_CASE__SET_REG_FLOAT(kreg_water_cooling_tmp_controler_fanlevel_coefficient, m_fanlevel_coefficient, 0.1); |
|
|
|
|
|
|
|
default: |
|
|
|
return err::kmodule_not_find_reg; |
|
|
|
break; |
|
|
@ -127,12 +134,19 @@ int32_t WaterCoolingTemperatureControlModule::module_get_reg(int32_t regindex, i |
|
|
|
|
|
|
|
MODULE_CFG_CASE__GET_REG_FROM(kreg_water_cooling_tmp_controler_pid_nowoutput, m_output); |
|
|
|
MODULE_CFG_CASE__GET_REG_FROM(kreg_water_cooling_tmp_controler_pid_feedbackval, (m_feedbak_temperature * 10 + 0.5)); |
|
|
|
MODULE_CFG_CASE__GET_REG_FLOAT(kreg_water_cooling_tmp_controler_pid_integral_errorval, m_pidmodule.get_integral_err(), 1); |
|
|
|
|
|
|
|
MODULE_CFG_CASE__GET_REG_FROM(kreg_water_cooling_tmp_controler_temp0, (m_temperature_sensor_cache[0] * 10 + 0.5)); |
|
|
|
MODULE_CFG_CASE__GET_REG_FROM(kreg_water_cooling_tmp_controler_temp1, (m_temperature_sensor_cache[1] * 10 + 0.5)); |
|
|
|
MODULE_CFG_CASE__GET_REG_FROM(kreg_water_cooling_tmp_controler_temp2, (m_temperature_sensor_cache[2] * 10 + 0.5)); |
|
|
|
MODULE_CFG_CASE__GET_REG_FROM(kreg_water_cooling_tmp_controler_temp3, (m_temperature_sensor_cache[3] * 10 + 0.5)); |
|
|
|
|
|
|
|
MODULE_CFG_CASE__GET_REG_FLOAT(kreg_water_cooling_tmp_controler_temp0_offset, (m_temperature_sensor_offset[0]), 0.1); |
|
|
|
MODULE_CFG_CASE__GET_REG_FLOAT(kreg_water_cooling_tmp_controler_temp1_offset, (m_temperature_sensor_offset[1]), 0.1); |
|
|
|
MODULE_CFG_CASE__GET_REG_FLOAT(kreg_water_cooling_tmp_controler_temp2_offset, (m_temperature_sensor_offset[2]), 0.1); |
|
|
|
MODULE_CFG_CASE__GET_REG_FLOAT(kreg_water_cooling_tmp_controler_temp3_offset, (m_temperature_sensor_offset[3]), 0.1); |
|
|
|
MODULE_CFG_CASE__GET_REG_FLOAT(kreg_water_cooling_tmp_controler_fanlevel_coefficient, m_fanlevel_coefficient, 0.1); |
|
|
|
|
|
|
|
default: |
|
|
|
return err::kmodule_not_find_reg; |
|
|
|
break; |
|
|
@ -228,7 +242,7 @@ void WaterCoolingTemperatureControlModule::workloop() { |
|
|
|
peltier_set_power_level(out); |
|
|
|
i++; |
|
|
|
if (i % 10 == 0) { |
|
|
|
int32_t fanspeed = prvabs(out) * 0.7; |
|
|
|
int32_t fanspeed = prvabs(out) * m_fanlevel_coefficient; |
|
|
|
if (fanspeed > 100) fanspeed = 100; |
|
|
|
if (fanspeed < m_cfg.min_fanlevel) fanspeed = m_cfg.min_fanlevel; |
|
|
|
fan_start(fanspeed); |
|
|
@ -286,6 +300,7 @@ float WaterCoolingTemperatureControlModule::read_pid_temperature_from_upper() { |
|
|
|
float WaterCoolingTemperatureControlModule::read_pid_temperature() { |
|
|
|
zlock_guard lock(m_temperature_sensor_mutex); |
|
|
|
ZITemperatureSensor* sensor = m_temperature_sensor[m_cfg.temp_fb_index]; |
|
|
|
float offset = m_temperature_sensor_offset[m_cfg.temp_fb_index]; |
|
|
|
float val[3] = {0}; |
|
|
|
for (int32_t i = 0; i < 3; i++) { |
|
|
|
val[i] = sensor->getTemperature(); |
|
|
@ -303,7 +318,7 @@ float WaterCoolingTemperatureControlModule::read_pid_temperature() { |
|
|
|
} |
|
|
|
|
|
|
|
float retval = val[1]; |
|
|
|
return retval; |
|
|
|
return (retval + offset); |
|
|
|
} |
|
|
|
|
|
|
|
void WaterCoolingTemperatureControlModule::pump_start(int32_t pump_speed) { |
|
|
@ -338,7 +353,9 @@ float WaterCoolingTemperatureControlModule::getTemperatureSensorVal(int32_t inde |
|
|
|
if (index < 0 || index >= m_n_temperature_sensor) { |
|
|
|
return 0; |
|
|
|
} |
|
|
|
return m_temperature_sensor[index]->getTemperature(); |
|
|
|
float temp = m_temperature_sensor[index]->getTemperature(); |
|
|
|
float offset = m_temperature_sensor_offset[index]; |
|
|
|
return temp + offset; |
|
|
|
} |
|
|
|
int32_t WaterCoolingTemperatureControlModule::temp_controler_set_peltier_power_level(int32_t level) { |
|
|
|
if (level == 0) { |
|
|
|