Other Parts Discussed in Thread: LMT01
Dear TI team,
We assembled the 10s design of bms(TIDA-00449) and tested. As this design is for Lithium Ion batteries and our requirement is LiFePo4, we made some modification which suit for LiFePo4 cells. The following are the modifications we made.
//Battery pack definition
#define CELL_BALANCING_EN 1 //set to 1 to enable cell balancing
#define ONE_SECOND (100) //10ms per tick
#define ONE_MINUTE ((uint32_t)60*ONE_SECOND)
//Battery pack information and threshold values
#define dCOV_THRESHOLD 3650 //COV_THRESHOLD [mV]
#define dCOV_RECOVERY_THRESHOLD 3150 //COV_RECOVERY_THRESHOLD [mV]
#define dCOV_TIME 5 //20 //COV_TIME (max value 32) [100ms]
#define dCUV_THRESHOLD 2500 //CUV_THRESHOLD [mV]
#define dCUV_RECOVERY_THRESHOLD 2700 //CUV_RECOVERY_THRESHOLD [mV]
#define dCUV_TIME 5 //20 //CUV_TIME (max value 32) [100ms]
#define dPACK_OVER_TEMP1 50 //BQ thermistor PACK_OVER_TEMP1 [st C]
#define dPACK_OT_TIME1 2000 //PACK_OT_TIME1 [ms]
#define dPACK_OVER_TEMP2 50 //MSP LMT01 PACK_OVER_TEMP2 [st C]
#define dPACK_OT_TIME2 2000 //PACK_OT_TIME2 [ms]
//PACK_END_OF_CHARGE_VOLTAGE [mV]
#define dPACK_END_OF_CHARGE_VOLTAGE (uint16_t)dCOV_THRESHOLD*NUMBER_OF_CELLS
#define dCC_CV_QUAL_TIME 20 //CC_CV_QUAL_TIME [s]
//PACK_END_OF_DISCHARGE_VOLTAGE[mV]
#define dPACK_END_OF_DISCHARGE_VOLTAGE (uint16_t)dCUV_THRESHOLD*NUMBER_OF_CELLS
#define dEND_OF_DISCHARGE_QUAL_TIME 20 //END_OF_DISCHARGE_QUAL_TIME [s]
#define dCHARGE_CURRENT 1100 //CHARGE_CURRENT [mA]
#define dOCD_CURRENT 300 //OCD_CURRENT [mA]
#define dCHARGE_TAPER_TIME (uint32_t)240*ONE_MINUTE//CHARGE_TAPER_TIME[s]
#define dMAX_CHARGE_TIME (uint32_t)200*ONE_MINUTE//MAX_CHARGE_TIME [s]
//FULL_DISCHARGE_CLEAR_VOLTS [mV]
#define dFULL_DISCHARGE_CLEAR_VOLTS dPACK_END_OF_DISCHARGE_VOLTAGE
//FULL_CHARGE_CLEAR_VOLTS [mV]
#define dFULL_CHARGE_CLEAR_VOLTS dPACK_END_OF_CHARGE_VOLTAGE
#define dDELTA_CHARGE_V 300 //DELTA_CHARGE_V [mv]
#define dCHARGE_DISCHARGE_TIME (uint32_t)5*ONE_MINUTE//CHARGE_DISCHARGE_TIME [s]
#define dDELTA_DISCHARGE_V 200 //DELTA_DISCHARGE_V [mV]
#define dSOV_THRESHOLD 3650 //SOV_THRESHOLD [mV]
#define dSOV_RECOVERY_THRESHOLD 3550 //SOV_RECOVERY_THRESHOLD [mV]
#define dSOV_TIME 3000 //SOV_TIME [ms]
#define dCELL_IMBALANCE_FAIL_THRESHOLD 200 //CELL_IMBALANCE_FAIL_THRESHOLD[mV]
#define dCELL_IMBALANCE_FAIL_TIME (uint32_t)120*ONE_MINUTE//CELL_IMBALANCE_FAIL_TIME[s]
#define dBALANCE_TIME (uint32_t)1*ONE_MINUTE //BALANCE_TIME A.K.A CB_TIME[s]
#define dBALANCE_VOLTS_THRESHOLD 3450 //BALANCE_VOLTS_THRESHOLD [mV]
#define dMIN_BALANCE_VOLTS dCUV_RECOVERY_THRESHOLD //MIN_BALANCE_VOLTS[mV]
#define dMAX_BALANCE_TIME (uint32_t)120*ONE_MINUTE//MAX_BALANCE_TIME[s]
#define dCOULOMB_COUNTING_SOC_THRESHOLD 5 //COULOMB_COUNTING_SOC_THRESHOLD [units]
#define SIMPLE_GAUGING_THRESHOLD_1 (25000) //mV, 1 LED on
#define SIMPLE_GAUGING_THRESHOLD_2 (29000) //mV, 2 LED on
#define SIMPLE_GAUGING_THRESHOLD_3 (31000) //mV, 3 LED on
#define SIMPLE_GAUGING_THRESHOLD_4 (33000) //mV, 4 LED on
#define GAUGE_LED_SHOWING_TIME (200) //2s with 10ms per tick
The highlighted portions are the changes we made.for LiFePo4 cells .Are these changes(values) correct?
Do we need to change any other code elements elsewhere?
please help