diff --git a/Software/src/battery/DALY-BMS.cpp b/Software/src/battery/DALY-BMS.cpp index 06cabea8..d0af8a42 100644 --- a/Software/src/battery/DALY-BMS.cpp +++ b/Software/src/battery/DALY-BMS.cpp @@ -37,6 +37,9 @@ void update_values_battery() { else if (SOC > 8000) adaptive_power_limit = ((10000 - (uint32_t)SOC) * POWER_PER_PERCENT) / 100; + if (temperature_min_dC < LOW_TEMP_POWER_LIMIT_START && adaptive_power_limit > LOW_TEMP_POWER_LIMIT) + adaptive_power_limit = LOW_TEMP_POWER_LIMIT; + if (adaptive_power_limit < datalayer.battery.status.max_charge_power_W) datalayer.battery.status.max_charge_power_W = adaptive_power_limit; if (SOC < 2000 && adaptive_power_limit < datalayer.battery.status.max_discharge_power_W) diff --git a/Software/src/battery/DALY-BMS.h b/Software/src/battery/DALY-BMS.h index dfc3df02..df0c0da2 100644 --- a/Software/src/battery/DALY-BMS.h +++ b/Software/src/battery/DALY-BMS.h @@ -8,6 +8,8 @@ #define MAX_CELL_VOLTAGE_MV 4250 //Battery is put into emergency stop if one cell goes over this value #define MIN_CELL_VOLTAGE_MV 2700 //Battery is put into emergency stop if one cell goes below this value #define POWER_PER_PERCENT 50 // below 20% and above 80% limit power to 50W * SOC (i.e. 150W at 3%, 500W at 10%, ...) +#define LOW_TEMP_POWER_LIMIT 800 // max power when temperature below limit +#define LOW_TEMP_POWER_LIMIT_START 50 // start limiting when below 50 = 5.0 °C /* Do not modify any rows below*/ #define BATTERY_SELECTED