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.

BQ27426: How to specify a different external NTC (100K 3950K)

Part Number: BQ27426
Other Parts Discussed in Thread: BQ78350

hi everyone

I have successfully used the internal temperature sensor as well as the external 10K NTC (Semitec 103AT with B-value of 3435K according to SLUUBB0).

I need to use a different external NTC, which is 100K with a B-value of 3950K.

How do I calculate the Ext a Coef and Ext b Coef coefficients according to 7.4.5.1.4?

Perhaps TI could provide me with the values as suggested in 7.4.5.1.4.

The parts I am currently considering are:

Vishay NTCS0402E3104FHT

TKS TSM0A104F3953RZ

R/T tables attached

Thanks much in advance.

Thermistor R-T Tabel Vishay NTCS0402E3104FHT VS TKS TSM0A104F3953RZ.XLS

  • Hello Naumov,

    The bq27426 assumes the AT-103 Semitec NTC. I do not recommend changing it.

  • This doesn't answer my question. I verified that the 100K NTC works, only the temperature is wrong (obviously).

    It is my understanding that with custom A and B coefficients any NTC can be supported.

    According to 7.4.5.1.4 of SLUUBB0:

    Ext a Coef and Ext b Coef are the thermistor temperature linearization polynomial coefficients. The default values have been computed with a Semitec 103AT thermistor. If a different type of thermistor is used, then the coefficients will need to be changed. Contact TI to generate coefficients for a different thermistor.

    Please provide the formula, tool or values for the NTC specified.

    Thanks in advance.

  • Hello Max,

    It seems that this is legacy.

    However, here's the old document: http://www.ti.com/lit/an/slua398/slua398.pdf

    It has the zip file on there with an Excel calculator.

    However, for the bq27426, we still don't recommend writing the coefficients because it is a ROM gauge. You will have to have your MCU reprogram this every time the battery is removed.

  • I understand the implications and this is not a problem for me.

    I am not sure I follow the argument about it being a ROM gauge. IIUC, the only way to support external (pack) NTC in the first place, I have to do the same -- reprogram the gauge's RAM and soft-reset. Neither the NTC selection nor its coefficients are persistent as far as I understand. I don't see the difference in changing those.

    Thanks for the link. Is this officially supported by TI for BQ27426?

  • Max,

    Yes it is supported. You are correct that for every reset you have to reprogram anyway, but we try to minimize the values needed to reduce errors or issues.

    Thanks,

    Eric Vos

  • Hi Eric, Kang,

    The suggested SLUA398's spreadheet solves 3rd order polynomials (4 coefficients). Looking at the spreadsheet formulas, the polynomial is:

    t = (A3*x^3 + A2*x^2 + A1*x + A0) / 10 - 273.15

    where x is scaled by dividing by 65535.

    bq27426 requires 5 A coefficients and 4 B coefficients. Is there already a solver for this? Why are there A and B coefficients?

    Also SLUA398 connects the NTC using a series and a parallel resistor. The BQ27426's NTC connection is different. In order to calculate the coefficients by hand I need to know what is the internal schematic of the BIN pin is.

    I stumbled across the calculator for BQ78350 which uses the same number of coefficients as BQ27426. In all likelihood the polynomial in use is the same. However, I don't know what Rth (series resistor to Vref) is for BQ27426. Please advise.

    Thanks in advance.

  • Max,

    Please use 1.8V as the Vref and i have also attached the .xls sheet you should be able to use.

    Thanks,

    Eric VosAnalysis_Custom_External_Thermistor_Coeff_NewConfig_20111111.xlsx

  • Eric,

    Could you please share the internal schematic of the temperature measurement circuit for BQ27426?

    Is BQ27426's (internal) R1 (R_TH) really 19K?

    I extracted the polynomial formulas from the BQ78350 calculator XLS and confirmed that if I plug the BQ27426's default coefficient values into the formulas, the ADC to Kelvin curve almost exactly matches up against the calculated coefficients. The R_TH value in that spreadsheet is 18K and not 19K.

    I also noticed that if I specify T-R data for my desired thermistor (100K), the ADC seems to overflow and the coefficients are out of range. The resistance must be too little for this to work.

    Thanks.

  • Max,

    The R value is 18K. 

    Please use the calculator i provided and do not use the bq78350 one. 

    Thanks,

    Eric Vos

  • as far as the temperature measurement goes, I've proven that BQ27426 can be used with pretty much any thermistor, assuming the gauge is reprogrammed on every cold start.

    the "BMS-GMAP Thermistor Temperature Optimizer" spreadsheet (as it comes for BQ78350) does work for NTCs below 47K. over 47K the coefficients overflow. it can probably be tricked by editing parameters on the hidden sheets. unhide them for an interesting read.

    the "Analysis_Custom_External_Thermistor_Coeff_NewCon" spreadsheet works most of the time, but the following has to be changed:

    R1(PU) should be set to 18K

    Vref should be set to 2.5V, NOT to 1.8V as suggested. the latter gives bogus results.

    another problem with the "Analysis_Custom_External_Thermistor_Coeff_NewCon" spreadsheet is that it doesn't always produce correct coefficients. I had to play with limiting the temperature range and solver options to get coefficients that actually worked in the gauge. in cases of bad coefficients the polynomial produced a very close match "on paper" but did not work in the gauge. also note that it's worth optimising for the range of temperatures your customer cares about, as it's near impossible to get good accuracy across the full range of the NTC.

    the polynomial in use is as follows:

    pa1(x) = (x**4 / 2**60) * a4 + \
             (x**3 / 2**45) * a3 + \
             (x**2 / 2**30) * a2 + \
             (x    / 2**15) * a1 + \
                              a0
    d1_(x) = (x * 2**14) / pa1(x)
    temp1(x) = (d1_(x)**3 / 2**45) * b3 + \
               (d1_(x)**2 / 2**30) * b2 + \
               (d1_(x)    / 2**15) * b1 + \
                                     b0

    cel1(x) = temp1(x) / 10 - 273.15

    where x is "adp" in the spreadsheet (corrected ADC reading). this x will only depend on the NTC fitted as the reference voltage and the NTC connection circuit is unchangeable in BQ27426. gnuplot can be used to weed out incorrect coefficients by sweeping through the valid ADC range (~1000 - 30000).

    note that wildly different coefficients will produce almost identical results for the normal temperature range (there multiple solutions for the approximation), so there's little use in comparing coefficients.

    using the above spreadsheet I calculated coefficients for 15K, 22K, 47K and 100K NTCs and verified results with the gauge. as NTC's nominal resistance grows the accuracy will decline so it is better to stick to ~4.7K -- 22K. any beta-value NTC can also be used by calculating coefficients.

    hope this helps someone.

    my next challenge is to get SoC to work and I hope that the estimator uses computed temperature in Kelvin rather than another conversion function.