File size: 6,341 Bytes
b24351f
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
BQ27542-G1: Tracking charge of a primary battery

Part Number: BQ27542-G1 Hi, I have a primary battery (non-rechargeable) and would like to track how much charge has been used to calculate remaining battery capacity. What is the best way to do this with this particular fuel gauge? I have looked in depth at the data sheet and reference manual and do see that there are many available commands. Are there any commands that can provide the information I am looking for? Thank you

The bq27542 is intended for rechargeable batteries. There is no direct way to read the coulomb count from the bq27542. There's PassedCharge() but this will be cleared during relax and the gauge can adjust this not just by coulomb count but also when it tries to measure cell impedance and needs to correct the coulomb count.company has the bq35100 for primary cells. This one uses a coulomb counter to determine remaining capacity.

Thank you for your response. I appreciate the feedback. The BQ27542-G1 Fuel Gauge was selected in the early design process and has already been implemented in circuitry. Due to budget concerns, we are hoping to not have to make a design change by replacing the BQ27542 with the BQ35100, which would require ordering new boards. Is there anyway to get a measurement that would be close to what we are looking for? You mentioned using the PassedCharge() command as a potential option. Our previous approach was going to be to read the NomAvailableCapacity() with the assumption that this is relative to the design capacity stored in Flash. We are willing to make the change to the BQ35100 if there are absolutely no other options, but we are looking to explore any options that might be available with the BQ27542 first.

If the OCV curve (OCV vs. depth of discharge) is steep enough that the gauge can take accurate DOD vs. OCV lookup for your primary cell, then the impedance tracking gauge may still give you good results. If the OCV vs. DOD curve is flat then it's probably futile to try to make this gauge work well. One work-around would be to use PassedCharge() as a coulomb count information source and disregard all other gauging information from the gauge. On your uC, add code that detects if PassedCharge was reset (or the absolute value dropped) and accumulate the true coulomb count since start of use of the primary cell. You'd have to catch the point when the gauge sets PassedCharge to 0 to make this reliable. Passed Charge = 10, 20, 30, 40, 0, 5, 6, 17... Accumulated charge = 10, 20, 30, 40, 45, 46, 57... With this you'd effectively reduce the gauge to a coulomb counter.

A few questions: 1. Our OCV curve is flat. Are you saying that the PassedCharge() could be a work around either way, steep OCV curve or flat? Or would this work around only be applicable if our OCV curve were steep? 2. For PassedCharge(), you mentioned that is cleared during relax. Is there a way to force reset of PassedCharge() so that it happens at a known time? 3. Also, is there a way to know when cell impedance is being measured or to prevent it from being measured at all? 4 Going back to the NomAvailableCapacity() command. What are the specific concerns with using this approach? Could you provide more detail on why this would or wouldn't work? 5. Another concern we have is that the maximum value of Design Capacity that can be stored according to the datasheet is 14,500 mAh, while our selected battery has a capacity of 19,000 mAh. What impact would this have, if any, on the available measurements? Thank you

#1: If the OCV curve is flat then trying to shoehorn the IT algorithm is not going to work. This algorithm doesn't just use coulomb count but discharge simulations that depend on depth of discharge calculations which rely on OCV measurements and an OCV curve that is steep enough for the voltage measurement accuracy of the gauge hardware. If you are able to write your driver to accumulate the passed charge (which the IT algorithm will reset to 0 during relax if cell voltage is not drifting) then you can use the total accumulated passed charge in your driver to estimate how much is left in your primary cell. You would effectively only use the coulomb counter of the gauge and ignore all other gauging results (like RM, FCC, SOC etc - none of these will return accurate values for your primary cell). This is independent from OCV curve shape. #2: Yes, issue IT_ENABLE. This will restart the gauging process and should reset the passed charge. #3: Cell impedance won't be measured until the gauge measured QMax. The gauge indicates Ra learning in Update Status and with bit RUPDIS #4: The IT algorithm won't work with a primary cell that has a flat OCV because every time the cell relaxes long enough, the algorithm will calculate DOD based on OCV and if that is flat, the gauge will have a large DOD error which will affect all capacity simulations. So all you can do with a cell like that is move to a gauge that was developed for a primary cell or use the coulomb counter approach / workaround as described in this thread. Nominal Available Capacity still relies on accurate DOD. #5: As you effectively have to discard the IT algorithm and only use the coulomb counter via PassedCharge(), DesignCapacity won't matter. You really can't use the gauging algorithm for this type of cell - the meaningful gauge info for this type of cell is current, voltage, temperature and passed charge. All other Impedance Tracking data is meaningless for a primary cell with flat OCV.

Thank you. Yes, we have the capability to write our own driver to track the passed charge. Would it be possible to get valid PassedCharge() readings without ever enabling the IT algorithm? That way QEN would not be set, and in turn QMax would never be updated?

Hello Sarah, I think this has been tried before. You may want to test this on an EVM. I don't know if there's a global 5 hour reset time for the gauge even without QEN. When Dominik gets back next week, I'll check with him on this.

Thank you, please let me know any additional information you find out

The QMax timer will expire after 5 hours in relax regardless of IT_ENABLE status. You'll have to write code on the host controller / driver to accumulate all passed charge. The gauge will eventually reset the passed charge counter based on relax conditions / timing.