Hello,
I have some questions about this battery gauge module:
- Reading the TRM about the calibration steps I found this "Perform the following calibration sequence during battery pack manufacturing process". I have the gauge mounted on my custom board, is it useful to perform a calibration? If yes, in which stage should I perform it? At the very FW start? Why is mentioned the battery pack manufacturing If I already use a battery pack?
- About Current Calibration, I read this on TRM "CC Gain and CC Delta are two calibration parameters of concern for current calibration. A known load, typically 1000 mA, is applied to the device during this process". Considering the custom board nature is quite impossible to apply a current of this magnitude. How can I perform this (if I should calibrate the gauge of course)?
- About the Remaining Capacity process, I use a LiSOCl2 battery and want to calculate the remaining capacity percentage. Below I post my procedure, is this a proper way to evaluate the remaining percentage? Looking at TMR I also found the EOS Mode, but it is a little unclear. Where I can found the value about battery charge status? Should I read only EOS Trent Detection from the DataFlash?
My current remaining percentage procedure acts as follow:
/* Write Cell design capacity*/ data[0] = 0x4A; data[1] = 0x38; // Tadiran mod. SL-2780 19Ah {hex 0x4A38} sCmd = DF_CELL_DESIGN_CAPACITY_mAH_ADDR; writetoDF(sCmd, data, DF_I2_SIZE, TIME_WRITE_DF); // write to DataFlash memory ... while(1){ ... /* Read command DESIGN CAPACITY*/ cmd[0] = CMD_DESIGN_CAPACITY; readCommand(cmd, rx, DF_I2_SIZE, TIME_READ_ONLY); designCapacity_uAh = ((uint16_t) rx[1] << 8) | rx[0]; designCapacity_uAh *= 0x03E8; //design Capacity * 1000 /* Read command USED CAPACITY*/ cmd[0] = CMD_ACCUMULATED_CAPACITY; readCommand(cmd, rx1, DF_I4_SIZE, TIME_READ_ONLY); usedCapacity_uAh = ((uint32_t) rx1[3] << 24) | ((uint32_t) rx1[2] << 16) | ((uint32_t) rx1[1] << 8) | ((uint32_t) rx1[0] << 0); usedCapacity_uAh = (usedCapacity_uAh > designCapacity_uAh) ? designCapacity_uAh : usedCapacity_uAh; percentage = (float) (designCapacity_uAh - usedCapacity_uAh) / (float)(designCapacity_uAh); bqData = (uint16_t) (percentage * 100); ... }
It returns always 100%. Is there something wrong?
Best Regards,
Vincenzo