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.

[参考译文] BQ76920:过压和欠压计算

Guru**** 2526700 points


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

https://e2e.ti.com/support/power-management-group/power-management/f/power-management-forum/738641/bq76920-calculation-of-overvoltage-and-undervoltage

器件型号:BQ76920

以下是数据表中的过压和欠压计算公式。

剩下的只有中间的8个。、是要写入寄存器的值。

(a) OV_TRIP_FULL =(OV–ADCOFFSET)÷ADCGAIN  
(b) UV_TRIP_FULL =(UV–ADCOFFSET)÷ADCGAIN

下面是基准程序上方的计算

#define OV_THRESH_base 0x2008
#define UV_THRESH_base 0x1000
Registers.OVTrip =(unsigned char)(((unsigned short)(((OVPThreshold - Registers.ADCOffset)/增益+ 0.5)- OV_THRESH_base)>> 4)& 0xFF);
Registers.UVTrip =(unsigned char)((((unsigned short)((UVPThreshold - Registers.ADCOffset)/增益+ 0.5)- UV_THRESH_base)>> 4)& 0xFF);

我验证的参考例程与直接移动到低8位相同。

Registers.UVTrip =(unsigned char)((((unsigned short)((UVPThreshold - Registers.ADCOffset)/增益))>> 4)& 0xFF);

但它与数据手册末尾的计算略有不同、我根据4300mv 和2500mv 进行了计算

读取 寄存器.ADCOffset=45mv   GAIN=0.377

结果 OV_TRIP=0xc1、这与 数据表中的最后一个相似。

但 UV_TRIP=0x96、 这与  数据表完全不匹配。

为什么?以及 如何解决?

下面是 数据表第47页上的计算。

–所选 OV 阈值为4.30V  

•因此、OV_TRIP 应编程为0xC9。  
–所选 UV 阈值为2.5V  
•因此、UV_TRIP 应编程为0x1A。

 

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

    您好、用户:
    OV 和 UV 寄存器被插入到 OV 和 UV 预定义高和低半字节的中间半字节中。
    OV 和 UV 比较直接针对 ADC 值进行。 要将这些转换为电压、请应用增益和失调电压。
    要将阈值设置为所需电压、请按相反顺序进行计算。
    第8.2.2.1节中的示例不正确、OV 和 UV 计算不正确。
    使用标称增益和382 uV/计数和0 mV 的零偏移:
    4.3V = 4300mV -> 11257计数或0x2BF9。 为 OV 跳闸寄存器选择 BF
    2.5V = 2500mV -> 6545计数或0x1991。 为 UV 跳闸寄存器选择99
    您的价值观似乎合适。  感谢您提请我们注意这一点、我注意到了该文档、以便在将来进行更新