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; |