你好,
我为DA14580使用SDK5.0.4。我需要监控电池电量。
SDK告诉我们如何检查CR2032和CR1225电池水平。我不知道计算上有差异的原因。
我现在用的是CR2477电池,下面的功能怎么修改?
uint8_t batt_cal_cr2032 (uint16_t adc_sample)
{
uint8_t batt_lvl;
If (adc_sample > 1705)
batt_lvl = 100;
Else if (adc_sample <= 1705 && adc_sample > 1584)
batt_lvl = 28 + (uint8_t) (((((adc_sample - 1584) < < 16) / (1705 - 1584)) * 72) > > 16);
Else if (adc_sample <= 1584 && adc_sample > 1360)
batt_lvl = 4 + (uint8_t) (((((adc_sample - 1360) < < 16) / (1584 - 1360)) * 24) > > 16);
Else 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,
函数的作用是:将ADC模块中测量的值转换为CR2032电池剩余寿命的粗略估计。函数的参数是两个ADC样本的和。这种方法以及最大/最小的限制(1705=3.0V, 1137=2V)。其余的数字(1584和1360)分别为2.8 V和2.4 V的ADC样本和值,用于根据CR2032放电模型估算剩余电池寿命。关于CR2477,请注意,我们从未使用过它,因此我知道如何使用适当的值配置此功能。一种可能的解决方法是做一些实验,用多项式曲线求出电池容量与电池电压的关系,得到电池电压= f(电池容量)的图。然后您可以转换电池电压到十进制值根据adc的样本。例如,关于最大电压:
电池值(十进制)= (1705 / 3 V) *电池电压(V)
谢谢,PM_Dialog