Skip to content

Commit 16774cf

Browse files
committed
Updated load logic
1 parent 3e051bf commit 16774cf

1 file changed

Lines changed: 25 additions & 5 deletions

File tree

src/main.cpp

Lines changed: 25 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -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

Comments
 (0)