你好,
我使用SDK5.0.4进行DA14580。我需要监控电池电量。
SDK告诉我们如何检查CR2032和CR1225电池电量。我不知道计算差异的原因。
现在我使用CR2477电池,如何修改以下功能?
UINT8_T BATT_CAL_CR2032(UINT16_T ADC_SAMPLE)
{
uint8_t batt_lvl;
if(adc_sample> 1705)
batt_lvl = 100;
否则if(ADC_SAMPLE <= 1705 && ADC_SAMPLE> 1584)
BATT_LVL = 28 +(UINT8_T)(((((ADC_SAMPLE - 1584)<< 16)/(1705 - 1584))* 72)>> 16);
否则if(ADC_SAMPLE <= 1584 && ADC_SAMPLE> 1360)
BATT_LVL = 4 +(UINT8_T)(((((ADC_SAMPLE - 1360)<< 16)/(1584 - 1360))* 24)>> 16);
否则if(ADC_SAMPLE <= 1360 && ADC_SAMPLE> 1136)
BATT_LVL =(UINT8_T)(((((ADC_SAMPLE - 1136)<< 16)/(1360 - 1136))* 4)>> 16);
别的
batt_lvl = 0;
返回batt_lvl;
}
关键词:
设备:
嗨Lewuyouc,
th batt_cal_cr2032()函数将在ADC模块中测量的值转换为CR2032电池剩余寿命的粗略估计。在功能的参数中,两个ADC样本的总和。这种方法以及最大/最小限制(1705 = 3.0V,1137 = 2V)。数字的其余部分(1584&1360)分别是ADC样品总和的2.8和2.4V的值,并且用于根据CR2032的放电模型计算剩余电池寿命的估计。关于CR2477,请注意我们从未使用过,以便我知道如何使用适当的值配置此功能。对此的可能解决方案是具有一些实验并使图形电池电压= F(电池容量),以便通过使用多项式曲线找到电池容量和电池电压之间的关系。然后,您可以根据ADC样品将电池电压转换为十进制值。例如,关于最大电压:
电池值(十进制)=(1705/3 V)*电池电压(V)
谢谢,PM_DIALOG.