|
|
@@ -205,34 +205,20 @@ static void calibrate_soc_by_ocv(void){
|
|
|
for (int i = 0; i < CELLS_NUM; i++){
|
|
|
pack_vol += measure_value()->cell_vol[i];
|
|
|
}
|
|
|
- if (pack_vol < (2700 * CELLS_NUM)){
|
|
|
+ if (pack_vol <= (48000)){
|
|
|
_soc.capacity = 0;
|
|
|
- }else if (pack_vol < (2900 * CELLS_NUM)){
|
|
|
+ }else if (pack_vol <= 49000){
|
|
|
_soc.capacity = 5;
|
|
|
- }else if (pack_vol < (2950 * CELLS_NUM)){
|
|
|
- _soc.capacity = 15;
|
|
|
- }else if (pack_vol < (3000 * CELLS_NUM)){
|
|
|
+ }else if (pack_vol <= 50000){
|
|
|
+ _soc.capacity = 10;
|
|
|
+ }else if (pack_vol <= 51000){
|
|
|
_soc.capacity = 30;
|
|
|
- }else if (pack_vol < (3050 * CELLS_NUM)){
|
|
|
- _soc.capacity = 40;
|
|
|
- }else if (pack_vol < (3100 * CELLS_NUM)){
|
|
|
- _soc.capacity = 45;
|
|
|
- }else if (pack_vol < (3150 * CELLS_NUM)){
|
|
|
+ }else if (pack_vol <= 52000){
|
|
|
_soc.capacity = 50;
|
|
|
- }else if (pack_vol < (3200 * CELLS_NUM)){
|
|
|
- _soc.capacity = 55;
|
|
|
- }else if (pack_vol < (3250 * CELLS_NUM)){
|
|
|
- _soc.capacity = 65;
|
|
|
- }else if (pack_vol < (3300 * CELLS_NUM)){
|
|
|
- _soc.capacity = 75;
|
|
|
- }else if (pack_vol < (3400 * CELLS_NUM)){
|
|
|
- _soc.capacity = 85;
|
|
|
- }else if (pack_vol < (3500 * CELLS_NUM)){
|
|
|
- _soc.capacity = 90;
|
|
|
- }else if (pack_vol < (3550 * CELLS_NUM)){
|
|
|
- _soc.capacity = 95;
|
|
|
+ }else if (pack_vol <= 53000){
|
|
|
+ _soc.capacity = 60;
|
|
|
}else {
|
|
|
- _soc.capacity = 100;
|
|
|
+ _soc.capacity = 80;
|
|
|
}
|
|
|
_soc.coulomb_now = (_soc.coulomb_max - _soc.coulomb_min) * _soc.capacity / 100.0f + _soc.coulomb_min;
|
|
|
soc_warning("SOC: calibrate_soc_by_ocv -> capacity = %d, pack_voltage = %d\n", _soc.capacity, pack_vol);
|
|
|
@@ -368,6 +354,11 @@ static void soc_calibrate(uint8_t prev_charge_status){
|
|
|
soc_debug("calibrate Capacity to 100\n");
|
|
|
_force_capacity_full();
|
|
|
}
|
|
|
+ }else {
|
|
|
+ if (_soc.capacity && _soc_is_under_voltage()) {
|
|
|
+ _soc.capacity = 0;
|
|
|
+ }
|
|
|
+
|
|
|
}
|
|
|
}
|
|
|
}
|