main/task_driver.c

changeset 116
bafc2d6a0790
parent 113
ac0c31c38959
equal deleted inserted replaced
115:8a67450424b7 116:bafc2d6a0790
18 #define SSR_MLT CONFIG_SSR_MLT_GPIO ///< GPIO SSR MLT pin 18 #define SSR_MLT CONFIG_SSR_MLT_GPIO ///< GPIO SSR MLT pin
19 #define SSR_HLT CONFIG_SSR_HLT_GPIO ///< GPIO SSR HLT pin 19 #define SSR_HLT CONFIG_SSR_HLT_GPIO ///< GPIO SSR HLT pin
20 #define SSR_PUMP CONFIG_SSR_PUMP_GPIO ///< GPIO Pump relay pin 20 #define SSR_PUMP CONFIG_SSR_PUMP_GPIO ///< GPIO Pump relay pin
21 #define PWM_MLT CONFIG_PWM_MLT_GPIO ///< GPIO PWM MLT pin 21 #define PWM_MLT CONFIG_PWM_MLT_GPIO ///< GPIO PWM MLT pin
22 22
23 #define HENDI_SWITCH 6 ///< Hendi power on/off at %
23 24
24 bool outEnable = false; ///< Enable outputs flag 25 bool outEnable = false; ///< Enable outputs flag
25 DRIVER_State * driver_state; ///< Driver state 26 DRIVER_State * driver_state; ///< Driver state
26 SemaphoreHandle_t xSemaphoreDriver = NULL; ///< Driver state lock 27 SemaphoreHandle_t xSemaphoreDriver = NULL; ///< Driver state lock
27 int MLT_pin = 0; ///< MLT state 28 int MLT_pin = 0; ///< MLT state
134 MLT_time = xTaskGetTickCount(); 135 MLT_time = xTaskGetTickCount();
135 } 136 }
136 137
137 /* 138 /*
138 * If the Hendi is on, the lowest setting is 500 Watt. So, if we need less then 139 * If the Hendi is on, the lowest setting is 500 Watt. So, if we need less then
139 * 10% power, turn it off, just like the manual knob. 140 * HENDI_SWITCH power, turn it off, just like the manual knob.
140 */ 141 */
141 MLT((val >= 10) ? 1:0); 142 MLT((percent >= HENDI_SWITCH) ? 1:0);
142 143
143 if (val != oldval) { 144 if (val != oldval) {
144 log_msg(TAG, "MLT_PWM(%d) val=%d %.0f watt", percent, val, (percent / 100.0) * equipment.MLT_watt); 145 log_msg(TAG, "MLT(%d) MLT_PWM(%d) val=%d %.0f watt pv: %.3f", (percent >= HENDI_SWITCH) ? 1:0,
146 percent, val, (percent / 100.0) * equipment.MLT_watt, driver_state->mlt_pv);
145 ledc_set_duty(LEDC_HIGH_SPEED_MODE, LEDC_CHANNEL_0,/* 1024 - */val); 147 ledc_set_duty(LEDC_HIGH_SPEED_MODE, LEDC_CHANNEL_0,/* 1024 - */val);
146 ledc_update_duty(LEDC_HIGH_SPEED_MODE, LEDC_CHANNEL_0); 148 ledc_update_duty(LEDC_HIGH_SPEED_MODE, LEDC_CHANNEL_0);
147 if (val >= 10) { 149 if (val >= HENDI_SWITCH) {
148 runtime.MLT_usage += (xTaskGetTickCount() - MLT_time) * (percent / 100.0); 150 runtime.MLT_usage += (xTaskGetTickCount() - MLT_time) * (percent / 100.0);
149 } 151 }
150 MLT_time = xTaskGetTickCount(); 152 MLT_time = xTaskGetTickCount();
151 } 153 }
152 oldval = val; 154 oldval = val;
327 int PWMout = (int)((Output * 100) / 255.0); 329 int PWMout = (int)((Output * 100) / 255.0);
328 330
329 if ((PID_GetMode() == PID_AUTOMATIC) && (MLT_Mode == MLT_MODE_PID)) { 331 if ((PID_GetMode() == PID_AUTOMATIC) && (MLT_Mode == MLT_MODE_PID)) {
330 /* Mash power limited */ 332 /* Mash power limited */
331 PWMout = (PWMout * equipment.MashPower) / 100; 333 PWMout = (PWMout * equipment.MashPower) / 100;
332 // if (PWMout > equipment.MashPower)
333 // PWMout = equipment.MashPower;
334 } 334 }
335 335
336 /* 336 /*
337 * Do not send power values < 10%. 337 * Do not send power values < HENDI_SWITCH.
338 */ 338 */
339 if (PWMout >= 10) { // Hendi minimum power is 500 Watt, this is 10% 339 if (PWMout >= HENDI_SWITCH) { // Hendi minimum power is 500 Watt, this is 10%
340 if ((((PWMout / 100.0) * equipment.MLT_watt) + equipment.HLT_watt) > equipment.Max_watt) { 340 if ((((PWMout / 100.0) * equipment.MLT_watt) + equipment.HLT_watt) > equipment.Max_watt) {
341 if (HLT_pin) { 341 if (HLT_pin) {
342 ESP_LOGI(TAG, "Current %.0f Watt above %d limit, shutdown HLT", 342 ESP_LOGI(TAG, "Current %.0f Watt above %d limit, shutdown HLT",
343 ((PWMout / 100.0) * equipment.MLT_watt) + equipment.HLT_watt, equipment.Max_watt); 343 ((PWMout / 100.0) * equipment.MLT_watt) + equipment.HLT_watt, equipment.Max_watt);
344 HLT_Output = 0; 344 HLT_Output = 0;

mercurial