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.

[参考译文] BQ25672:ADC 读数的偏移量

Guru**** 2539500 points
Other Parts Discussed in Thread: BQ25672, BQ25790

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

https://e2e.ti.com/support/power-management-group/power-management/f/power-management-forum/1438502/bq25672-offset-in-adc-readings

器件型号:BQ25672
Thread 中讨论的其他器件: BQ25790

工具与软件:

我目前正在执行一个项目、该项目使用 BQ25672通过太阳能电池板输入来为电池充电和监控电池。 不过、VBUS 和 VBAT 的 ADC 读数会出现一致的偏移。 下面是对设置和我所面临问题的总结:

  • 电池规格:

    • 标准容量:3600 mA 454.
    • 标称电压:3.2V
    • 充电截止电压:3.65±0.05V
    • 最大充电电流:3.6A
  • 太阳能电池板规格:

    • 开路电压(VOC):6.1V±10%
    • 短路电流(ISC):400 mA±5%
    • 最大功率点时的电压:5V±10%
    • 最大功率点时的电流:380 mA±5%

为了模拟充电和测试过程、我将为电池和太阳能电池板输入使用外部电源。

问题描述:

我观察到针对 VBUS 和 VBAT 的 ADC 读数中有一个大约600mV 的线性偏移。 具体而言:

  • 当任一输入均未施加电压时、ADC 的正确读数为0V。
  • 不过、当我施加已知电压时、ADC 读数始终比直接在引脚上测量的实际施加电压低600mV。

代码和配置:

对于驱动程序、我将遵循bq25790_charger库的示例并将其调整为 BQ25672。 我还将寄存器配置为 BQ25790示例的初始值、在自定义初始化功能中设置了特定的电荷限制。 以下是我用于读取 VBAT 的代码:

*/./...../......
*
*@简报读取 bq25672的 VBAT ADC 值、从而提供 BAT 电压。
*
*@param bq -指向 bq25672器件结构的指针。
*
二○○○年三月六日(星期一 /
int bq25672_READ_VBAT_ADC (结构 bq25672_DEVICE * bq){
uint8_t buffer[2]={0};  
uint16_t data=0;
Int ret;

uint8_t ADC_ENABLE = 0x84;  
RET = i2c_write_register (bq->address、REG2E_ADC_Control、&ADC_ENABLE);
如果(ret!= BQ25672_SUCCESS){
printf ("启用 ADC 失败。 错误:%d\n"、ret);
回流塔;
}

//读取 msb 和 lsb
RET = READ_MULTI_REGISTERS (bq->address、REG3B_VBAT_ADC_MSB、buffer、2);
HAL_DELAY (50);


如果(ret == BQ25672_SUCCESS){
DATA =(BUFFER[0]<< 8)| BUFFER[1];
其他{
printf ("读取电池电压失败\n");
}

返回数据* BQ25672_ADC_VOLT_STEP_mV;
}

此外、以下是主寄存器的初始配置:

结构 bq25672_st_reg BQ25672_regs[]={
{REG05_REG24 Input_Voltage_Limit、0x24}、
{REG06_REG05B Input_Current_Limit_、0x01}、
{REG07_LOSB, Input_Current_Limit_ 0x2C}、  
{REG08_REG08_0xc3 Precharge_Control}、
{REG09_EVM Termination_Control、0x5}、  
{REG0B_VOTG_regulation、0xdc}、
{REG0D_IOTG_regulation、0x4b}、
{REG0E_3D Timer_Control、0x3D}、  
{REG0F_REG0 Charger_Control_、0xa2}、  
{REG10_REG10_1 Charger_Control_、0x85}、
{REG11_0x40}、Charger_Control_ 2  
{REG12_REG3 Charger_Control_、0x12}、  
{REG14_REG5 Charger_Control_、0x16}、
{REG15_MPPT_Control、0xAA}、  
{REG16_RE0、Temperature_Control}、  
{REG17_NTC_Control_0、0x7a}、  
{REG18_NTC_Control_1、0x54}、  
{REG19_ICO_EVM Current_Limit、0x0}、
{REG1B_RE0 Charger_Status_、0x0}、  
{REG1C_REDF1 Charger_Status_、0x0}、
{REG1D_REG0、Charger_Status_ 2、0x0}、
{REG1E_REG0 Charger_Status_ 3、0x0}、
{REG1F_REG0 Charger_Status_ 4、0x0}、  
{REG20_FAULT_Status_0、0x0}、  
{REG21_FAULT_Status_1、0x0}、
{REG22_RE0 Charger_Flag_、0x0}、
{REG23_DSP Charger_Flag_ 1、0x0}、  
{REG24_REG2 Charger_Flag_、0x0}、  
{REG25_DSP Charger_Flag_ 3、0x0}、
{REG26_FAULT_Flag_0、0x0}、
{REG27_FAULT_Flag_1、0x0}、  
{REG28_RE0 Charger_Mask_、0x0}、
{REG29_DSP Charger_Mask_ 1、0x0}、
{REG2A_DSP Charger_Mask_ 2、0x0}、  
{REG2B_RE0 3、Charger_Mask_}、  
{REG2C_FAULT_MASK_0、0x0}、
{REG2D_FAULT_MASK_1、0x0}、
{REG2E_ADC_Control、0x40}、  
{REG2F_ADC_ADC0 Function_Disable_、0x0}、  
{REG30_ADC_0x0 1、Function_Disable_}、
{REG31_IBUS_ADC_MSB、0x0}、  
{REG32_IBUS_ADC_LSB、0x0}、  
{REG33_IBAT_ADC_MSB、0x0}、  
{REG34_IBAT_ADC_LSB、0x0}、  
{REG37_VAC1_ADC、0x0}、  
{REG39_VAC2_ADC、0x0}、  
{REG3B_VBAT_ADC_MSB、0x0}、
{REG3C_VBAT_ADC_LSB、0x0}、  
{REG35_VBUS_ADC_MSB、0x0}、  
{REG36_VBUS_ADC_LSB、0x0}、  
{REG3F_TS_ADC、0x0}、
{REG41_TDIE_ADC、0x0}、
{REG43_ADC_DP、0x0}、
{REG45_ADC_DM、0x0}、
{REG47_DPDM_DRV、0x0}、
{REG48_RE0、Part_Information}、
};

故障排除尝试次数:

  1. 换算系数验证 :我已经确保使用了数据表中指定的正确 ADC 电压步长(1mV)。 不过、这看起来不会影响失调电压。
  2. ADC 稳定延迟 :我已经尝试增加稳定延迟启用 ADC 后,没有成功。

您能帮助我确定该失调电压的可能原因吗? ADC 中是否有可以校准或补偿的内部偏移? 或者是否有特定于 BQ25672的配置设置可能导致这种偏移?

提前感谢您提供任何指导。

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

    您好、Blanca、

    遗憾的是、我们没有规定 ADC 绝对精度。  不再推荐使用12位设置、因为其读数太低。  较高位设置读取的值较高、通常不超过50-100mV。  我从未听说过600mV 的偏移。  您要在哪里测量 VBUS 和 VBAT 电压?  充电器使用 BATP 引脚测量电池电压、使用 VBUS 引脚测量 VBUS。  这些引脚处的 DMM 的测量值是多少?  VACx ADC 测量值是否与 VBUS ADC 测量值匹配?

    此致、

    Jeff

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

    尊敬的 Jeff:

    非常感谢您的快速响应。

    我将随附一个原理图、以阐明我的设置。 我将使用引脚2作为正输入、并使用 GND 作为负输入来测量引脚2和3处的 VBUS 电压。 同样、我将在引脚23、22和18处测量 VBAT、这些引脚作为正输入连接、GND 作为负输入连接。

    此外、我注意到、REG37_VAC1_ADC 寄存器中的读数与 VBUS 测量值相匹配。

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

    您好、Blanca、

    我在原理图上看不到任何明显的错误。  仅建议将 BATP 上的47nF 用于已安装 shipFET 的4S 应用。

    不幸的是、我认为该单元的 ADC 仅有一个偏移。  另一个单元可能不同。   

    此致、

    Jeff

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

    尊敬的 Jeff:

    感谢你的帮助。 我将 BQ25672替换为新单元、现在 ADC 读数是准确的。 该问题似乎确实是由原始单位的偏移引起的。

    此致、
    Blanca