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.

BQ76952: Raw current data conversion and more

Part Number: BQ76952
Other Parts Discussed in Thread: BQSTUDIO, , BQ40Z80

Hello:

1. According to data sheet CC3 read give 32 bits current data. How to make conversion to mA? what is the FS (full scale) of the ADC in that  case?

 "periodic current measurements can be read out through the digital communication interface..." 

How to convert 32 bits cell current data read by 0x0072,3,4,5 to mA?

2. "integrated passed charge is available as a 64-bit value.."  Is it also available when low side FETs switch applied? If so, how 64 bits data is treated?

REgards

Dan Groswirth

info@cellkey.biz

  • Hi Dan,


    The 32-bit value is used for representation, although the data is really limited to only 24-bits signed.  The LSB for current measurements in 32-bit mode is VREF2 / (5 * 2^23) = 29.564nV across the sense resistor.  The value is limited by the hardware, since the recommended measurement range for the coulomb counter input is +/-200mV, which is far below where the digital value will saturate.

    The integrated passed charge is broken into two 32-bit values for representation, it is the same no matter if you use high-side or low-side FETs, it is using the coulomb counter measurement of the voltage across the low-side sense resistor, so it still works even if there are no FETs in the system at all.

    The Accum Charge portion (32-bit) is in units of userAh and is signed.  The Accum Charge Fraction is unsigned, you can think of it as the MSB having units of userAh/2, the MSB-1 having units of userAh/4, etc.  Note that the Accum Charge Fraction is initialized to 0.5-userAh when RESET_PASSQ() is sent.

    Thanks,

    Terry

  • Hello Terry:

    Thanks for your response to my questions.

    Is the  equation VREF2 / (5 * 2^23) = 29.564nV can be found in the manual , because I have not found it when looked for the conversion method....

    Regards

    Dan

  • Hi Dan,

    It isn't listed explicitly, I just took the 16-bit LSB equation from the datasheet ( VREF2 / (5 x 2^15) = 7.6µV ) and extended it for the 24-bit case.  We'll consider adding that if we update the documents later.

    Thanks,

    Terry

  • Hi again:

    Based on your previous answer,  is the eq. 1 bit = VREF2 / (5 * 2^23) = 29.564nV for current calculation is also applied for calculation of the 24 bits cell current data that can be read by reading registers 0x0071, 72 etc. ?

    Please advise the right conversion to userA data.

    Thanks

    Dan

  • Hi Dan,

    Yes, that is the correct equation for the Raw CC2 Counts and Raw CC3 Counts in 0x0076, and the Cell # Current Counts in 0x0071~0x0074.  The userA setting does not change the values reported in Raw Counts, but it does change the values reported as CC1 Current, CC2 Current, and CC3 Current.

    The userA setting just changes the LSB used in the CC1/2/3 Current calculation, this can be 0.1mA, 1mA (default), 10mA, or 100mA.  Since CC# Current are 16-bit numbers, you can select the LSB value based on the maximum current range you need to report.  If you choose userA=1mA, then the value is limited to -32768mA to +32767mA.  If  your current is higher, you can consider using userA=10mA, then you can represent currents from -327680mA to +327670mA, etc.

    Thanks,

    Terry

  • Thanks.

    it is resolved, as I never find the resolved button that is suppose to be some where...

  • Hi Terry:

    Still need some assistance as getting deeper and deeper into it...

    I read CC2 16 bits value to have charge/discharge  current data in my board. 

    I am using the Evaluation board of BQ76852 and BQstudio as refference and notice the values of CC2 as shown in the studio are mot stable and changing 

    in steps of  about 7 .. like 7, 15, 15, 7.. is that make sense? I just connected 12V power supply between BAT+  input and the PSCK-. FETs are not involved.

    Current must be constant, as I understand it. (16 resistors of 200 ohm are active- expecting 12000/3200 mA). 

    is reading raw adc counts of CC2 (by 0076) is more accurate?

    Any thing concerning that issue? 

    Thanks

    Dan

  • Hi Terry:

    Cell # Current Counts in 0x0071~0x0074.:

    Is the 24 bits value read from 0x0071~0x0074 is a voltage representation of current and resistance ?

    If so, calculation of the current value must be based on resistance value which I am not yet know about..

    If not, how 29.564nV bit value is used?

    Please advise (may be again..) Cell # Current Counts conversion to current method.. I missed some thing, I guess..

    Thanks for your patient...

    Dan  

  • Hi again:

    In Refference manual I read:

    4.12 Current Calibration
    The BQ76952 device coulomb counter ADC measures the differential voltage between the SRP and SRN pins to
    calculate the system current. The device includes the optional capability for the customer to calibrate the
    coulomb counter offset and current gain on the production line.
    The Calibration:Current Offset:CC Offset configuration register contains an offset value in units of 32-bit
    coulomb counter ADC counts / Calibration:Current Offset:Coulomb Counter Offset Samples. The value of
    Calibration:Current Offset:CC Offset / Calibration:Current Offset:Coulomb Counter Offset Samples is
    subtracted from the raw coulomb counter ADC counts, then the result is multiplied by Calibration:Current:CC
    Gain and scaled to provide the final result in units of userA.
    The BQ76952 device uses the Calibration:Current:CC Gain and Calibration:Current:Capacity Gain
    configuration values to convert from the ADC value to current. The CC Gain reflects the value of the sense
    resistor used in the system, while the Capacity Gain is simply the CC Gain multiplied by 298261.6178.
    Both the CC Gain and Capacity Gain are encoded using a 32-bit IEEE-754 floating point format. The effective
    value of the sense resistor is given by:
    CC Gain = 7.4768 / (Rsense in mΩ)

    is CC2 data already affected  by the above parameters settings and can be evaluate directly with no further math ? 

    Is manual conversion of raw ADC counter to current must include the above params or params already used to to produce the raw ADC counts value?

    Thanks

    Dan

  • Hi Dan,

    The values reported using the CC1 Current(), CC2 Current(), and CC3 Current() commands already have been calculated using the CC Gain values, so you do not need to do further math on those.  You do not necessarily even need to use the Current Counts data unless you want to do your own calculations - the data here is included for customers who want access to the additional 8-bits of data for their own analysis.

    Note that the CC2 Current() data does have moderate noise level, which is why you see the value jumping around. The noise level versus the speed of the conversion are a tradeoff, so noise can be lowered if the conversion takes more time.  However, since some customers do care about having fast data, we provide CC2 Current() every ~3ms when FASTADC=0, or every ~1.5ms when FASTADC=1.  Note that noise will be higher when using FASTADC=1.

    This is also why we included the CC3 Current() reading, which is an averaged value of multiple CC2 Current readings.  So if a customer does not need such fast data, they can instead simply read CC3 Current() and set the Settings:Configuration:CC3 Samples to the number of samples to average.  For example, if using FASTADC=0 and CC3 Samples = 100, the device will average 100 samples from the CC2 Current and provide a CC3 Current result every ~300ms.

    Additional comment - you mentioned the 12V across the 16 200-Ohm resistors on the EVM.  Note that this current through those series resistors does not flow through the sense resistor, so the EVM is not measuring that current.

    The Current Counts data is 24-bit data that is represented using a 32-bit format.  Each LSB of the Current Counts data will have units of VREF2 / 5 / (2^23) = 29.56nV using the typical VREF2 value of 1.24V.  So if you read a Current Counts value of, for example, 147, this represents a voltage across the sense resistor of 147 * 29.56nV = 4.35uV.  If your sense resistor is 1mOhm, this represents a current of 4.35uV / 1mOhm = 4.35mA. 

    The values in 0x0071~0x0074 are raw Voltage Counts and Current Counts taken at the same time for each cell.  Some customers want to analyze the impedance of each cell individually, and for that they need the simultaneously measured voltage and current on the cell.  If you do not need to analyze this information, you can ignore this data.

    The Cell # Voltage Counts data has each LSB in units of VREF1 * 5 / (2^23) = 722.4nV using the typical VREF1 value of 1.212V.  In order to calculate the cell impedance, you can convert the Voltage Counts into volts, the Current counts into amps, then divide to get resistance in Ohms.

    Thanks,

    Terry

  • Hi  Terry:

    Thanks for your quick and helpful answer to my questions.

    I do want to calculate cell internal impedance as my board is used to analyze different cells behavior in different charge/discharge C levels and situations.

    Board designed to charge up to 300A...low side switching circuit!

    Do you have any  knowledge or source about internal impedance calculation (ignoring ext. resistance in the current loop)?

    Reading cell voltage/current is the main task of my board but while voltage measurement is strait forward the current measurement still does not clear to me:

    What the 24 current data read by 0x0071 etc. represent? is it voltage across some internal sense resistor and must be converted to mA by dividing the value by that resistor? is so, what is the value of that resistor? I guess it not so as I have not seen any thing about it at the manual..

    What I am missing concerning the cell current reading and converting to mA?

    (English is not my "mother language"  so probably I  miss some data here and there...)

    Thanks again for your patient...

    Dan

  • Hi Dan,

    You can use the Cell # Voltage Counts and Cell # Current Counts from 0x0071~0x0074 to determine the simultaneous voltage and current of a cell.  The Cell # Current Counts represents an ADC conversion of the differential voltage between the SRP and SRN pins of the device, which are effectively the voltage across your external low-side sense resistor.

    If you need to measure currents as large as 300A, then you need to select your sense resistor such that the maximum voltage across it is within +/-200mV.  If I assume your maximum current is 300A, then the sense resistor must be less than 667uOhms.  

    For example, assume your sense resistor = 500uOhms, and Cell 5 Voltage Counts = 5500000, and Cell 5 Current Counts = 200000.

    I can convert the voltage counts into volts by:

    Cell voltage = (voltage counts) * VREF1 * 5 / (2^23) = 5500000 * 1.212V * 5 / (2^23) = 3.9732V

    Cell current = (current counts) * VREF2 / 5 / (2^23) / Rsense = 200000 * 1.24V / 5 / (2^23) / 500uOhms = 11.826A

    Regarding cell impedance, this gets more complex and is not practical to explain in depth here.  Our battery gauges integrate cell impedance calculations and use this information together with the measured voltage, current, and temperature, to calculate the battery state-of-charge, state-of-health, and many other parameters.  You can see more information on that at  .

    What is generally of interest is the "small signal resistance" of a cell, which is represented by the delta-V / delta-I of a cell (note that it changes with temperature).  Our battery gauge products which use our Impedance Track algorithm calculate the cell impedance of each cell during operation.  You might consider looking into those products in more depth, if they can accommodate the number of series cells you have in your system.  The bq40z80 can accommodate up to 6 series cells.

    Thanks,

    Terry

  • Hi Terry:

    Thanks for helpful answer.

    Wow, I thought the cell current is the current drown from each cell individually while measuring it voltage, like  when balancing..!

    As I understand the current that  flows through the current sense resistor is the total current that flows between charger's poles or discharging load and

    I don't see how cell # unique voltage and the total system current are related...

    I do using 0.0005 ohm sense resistor .

    I will look into your suggestion regarding cell impedance calculation, as it part of the cell behavior under charge/discharge study that we are conducting, including cell temperature influence.

    Right now I dont know how to use the cell voltage and current as I dont see the relations between those values!!

    Thanks again

    Dan

  • Hi Dan,

    The expectation is that the cells are all in series with the sense resistor, so the current through every cell and the sense resistor is the same (except when balancing is active).  So it is only necessary to measure current at the sense resistor.

    However, the complication when calculating a cell's impedance is the timing of the voltage vs the current measurements.  It is important for the analysis to use voltage and current data captured at the same time on a particular cell.  Since the voltage ADC is muxed between all the cell voltages and other measurements (such as thermistors, stack, and diagnostic measurements), the cell voltages are measured at different times.  So the coulomb counter captures a current measurement at the same time as each cell voltage is being measured, and stores that together in the Cell # Voltage Counts and Cell # Current Counts.  So these represent data captured at the same time.

    Thanks,

    Terry

  • Hi Terry:

    Well, I understand that if I would like to have voltage and current measured at same time for further analyzis I can get it by reading particular cell data by 0x0071 etc....

    Right now I dont see how I can use it directly. I will try to look into  the Cell Gauge option in order to study the cell impedance measurements issue.

    Thanks for your support.

    Dan