@@ -574,18 +574,24 @@ vTaskAdjustLoad([[maybe_unused]] void *pvParameters) { // NOSONAR
574574#endif
575575 constexpr int_fast16_t V1SP_mV = 10000 ; // CONFIG - 10 V
576576 constexpr int_fast16_t V2SP_mV = 15000 ; // CONFIG - 15 V
577+ constexpr int_fast16_t V3SP_mV = 18000 ; // CONFIG - 18 V
577578 constexpr float FALL_HYSTERESIS = 0 .95f ; // CONFIG - 5% margin
579+ constexpr uint_fast8_t LOAD_GPIO_V0SP =
580+ 63 ; // CONFIG - GPIO for V1 setpoint
578581 constexpr uint_fast8_t LOAD_GPIO_V1SP =
579582 31 ; // CONFIG - GPIO for V1 setpoint
580583 constexpr uint_fast8_t LOAD_GPIO_V2SP =
581- 5 ; // CONFIG - GPIO for V2 setpoint, must be different from V1
584+ 25 ; // CONFIG - GPIO for V2 setpoint, must be different from V1
585+ constexpr uint_fast8_t LOAD_GPIO_V3SP =
586+ 5 ; // CONFIG - GPIO for V3 setpoint, must be different from V1 and
587+ // V2
582588
583589 if (INA260 ::voltage_mV <
584590 static_cast <int_fast16_t >(V1SP_mV * FALL_HYSTERESIS )) {
585591 /* Fall below minimum: (< 10*0.05 V) */
586- load.setLoadGPIO (63 );
592+ load.setLoadGPIO (LOAD_GPIO_V0SP );
587593 ESP_LOGI (TAG , " Voltage below %d mV, setting load to %d" , V2SP_mV,
588- 63 );
594+ LOAD_GPIO_V0SP );
589595 } else if ((INA260 ::voltage_mV > V1SP_mV) &&
590596 (INA260 ::voltage_mV <= V2SP_mV)) {
591597 /* Increase to stage 2: !(< 10*0.05 V) & (> 10 V & < 15 V) */
@@ -599,12 +605,26 @@ vTaskAdjustLoad([[maybe_unused]] void *pvParameters) { // NOSONAR
599605 load.setLoadGPIO (LOAD_GPIO_V1SP );
600606 ESP_LOGI (TAG , " Voltage below %d mV, setting load to %d" , V2SP_mV,
601607 LOAD_GPIO_V1SP );
602- } else if (INA260 ::voltage_mV > V2SP_mV) {
608+ } else if ((INA260 ::voltage_mV > V2SP_mV) &&
609+ (INA260 ::voltage_mV <= V3SP_mV)) {
603610 /* Increase to stage 3: !(< 10*0.05 V) & !(> 10 V & < 15 V) &
604- !(< 15*0.05 V) & (> 15 V) */
611+ !(< 15*0.05 V) & (> 15 V & <= 18 V ) */
605612 load.setLoadGPIO (LOAD_GPIO_V2SP );
606613 ESP_LOGI (TAG , " Voltage above %d mV, setting load to %d" , V1SP_mV,
607614 LOAD_GPIO_V2SP );
615+ } else if (INA260 ::voltage_mV <
616+ static_cast <int_fast16_t >(V3SP_mV * FALL_HYSTERESIS )) {
617+ /* Fall to stage 3: !(< 10*0.05 V) & !(> 10 V & < 15 V) &
618+ !(< 15*0.05 V) & !(> 15 V & <= 18 V) & (< 18*0.05 V) */
619+ load.setLoadGPIO (LOAD_GPIO_V2SP );
620+ ESP_LOGI (TAG , " Voltage below %d mV, setting load to %d" , V3SP_mV,
621+ LOAD_GPIO_V2SP );
622+ } else if (INA260 ::voltage_mV > V3SP_mV) {
623+ /* Increase to stage 4: !(< 10*0.05 V) & !(> 10 V & < 15 V) &
624+ !(< 15*0.05 V) & !(> 15 V) & !(< 18*0.05 V) & (> 18 V) */
625+ load.setLoadGPIO (LOAD_GPIO_V3SP );
626+ ESP_LOGI (TAG , " Voltage above %d mV, setting load to %d" , V3SP_mV,
627+ LOAD_GPIO_V3SP );
608628 }
609629
610630 delay (RUN ::TASK_INTERVALS ::TI_ADJUST_LOAD_mS);
0 commit comments