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.

[参考译文] BQ40Z80:校准过程 — 电池组电压的增益/ADC/施加的电压之间不一致

Guru**** 2540720 points
Other Parts Discussed in Thread: BQ40Z50, BQSTUDIO, BQ40Z80

请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/power-management-group/power-management/f/power-management-forum/1536339/bq40z80-calibration-process---inconsistency-between-gain-adc-applied-voltage-for-pack-voltage

产品型号:BQ40Z80
主题中讨论的其他器件:BQ40Z50BQSTUDIO、

最初的情况是:  

-在 6S 电池组中实施 BQ40Z50 ,通过 BQ Studio 手动完全校准,学习周期成功完成
- BQ Studio 在 DF 中写入的 Pack 增益是 43448 ,它允许 DAstatus1 0x71 命令发回正确的 PACK 电压值
-现在我们正在努力实现校准过程的工业化

问题是:  

-我们计算的 Pack 增益,准确地使用 slua868 中描述的校准过程,加起来超过 65535 (2^16)
-当读取 OutputCADCCal 0xF081 (CAL_EN=1) 时、电池组 ADC 输出在 平均电池组电压“19.5V"下“下平均为“0x3A20"</s>“

因此使用 slua868 内的校准公式: GAINpack =(Vpack / ADCpack )* 2^16

结果为 : 19500(施加 mV 电压)/ 14880 (ADC) * 2^16= 86014(增益结果?)

您能帮助我们更清楚地了解 BQstudio 的校准过程与 slua868 中所述的校准过程之间的差异吗?

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好、Maxime:

    今天是国庆节、我们将在接下来的工作日处理您的机票。

    谢谢您、
    Alan

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好 Alan、

    这是完全脱离我(法国)的头脑,我希望你享受你的假期。

    感谢您的处理、我将等待您的更新。
    马克西姆

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    我刚刚检查了 bq40z80 的 bqStudio 校准函数中的源代码。

    它计算的电池组增益与在 slua868 中读取的完全相同。 这意味着、如果 bqStudio 计算出有效的电池包增益、则 (Vpack / ADCpack)* 2^16 <= 65536。 否则、它将在 bqStudio 的状态行中引发错误。

    *packGain =(int) RoundDouble(双)PackmVolts /(双)rawCalValues -> PackVolt * 65536);
    if (* packGain > 65535) return (ERR_PACKV_CORRECTION_OUTOFRANGE);  

    请注意、“int"是“是 32 位整数(不是 16 位短整数)。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    感谢 Dominik 的准确回答。 这意味着问题更接近硬件。

    我以这种方式进行了测试,并找到了可以解决问题的东西。

    我的 bq40z80 设置如下:
    PackGain = 43216(十进制)
    施加的电压= 19530 (mV)
    从 F081 = 0x39E0 > 14816(十进制)返回的 ADC

    对于前两个值、我们应该具有更类似的 ADC 值:  
    19530/43216*65536 = 29617(十进制)

    寻找一个硬件故障,我看了这些数字的二进制版本:  

    14816 = 0011 1001 1110 0000(我得到的值)
    29617 = 0111 0011 1011 0001(我应该得到的值)

    我重点介绍了一个包含 9 个相同位及后续位的部分、这些位看起来像是某种位移问题。
    我在不同的情况下测量了这一点(>1A 充电,静息包等), MSB 在 7-11 位的范围是相同的,这进一步证明了我的理论。

    14816 << 1 = 29632 (~ 29617 理论 ADC 值)  

    如果对从 0xF081 寄存器提取的值应用任何类型的移位、您能否查看 bqStudio 的源代码?

    这样我就能确认、为了正确读取 PackVoltage 的特定值、需要进行位移位。


  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    该电量监测计对 vpack 执行以下计算:

    vpack = ((int32_t) advalue * 2 * calibration_gain + 0x8000)>>16;

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    谢谢你多米尼克,这是非常有趣!
    我以前从未见过这种计算、它是写在文档中的吗?

    最后,这种治疗是否会影响其他值?
    这样、我就可以根据每个值正确调整我的校准程序。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    我认为文档中没有提供这方面的内容。 我直接从源代码中得到了这个。 PACK 增益不影响任何其他参数。