This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

TIDA-00449: LiFePo4 BMS configuration

Part Number: TIDA-00449
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