CC2530 协议栈中实现ADC检测电池电压 附误差解决过程

最近项目要求检测电池电压并实时上报,三节干电池串联作为电源,硬件电路如下:

CC2530 协议栈中实现ADC检测电池电压 附误差解决过程_第1张图片

原先设计分压电阻如上,分压输入PIN为P0_7,参考电压为内部参考电压1.15V。利用稳压电源测试时发现检测出来的电压跟实际电压相差很大,最大有0.4v之多。然后断开电池电压的分压接入,电池只供电,稳压电源接入到P0_7,同样的程序检测出来的电压又基本一致。。。

后来在各大网站看到大佬们说是分压电阻的选择也有讲究,也就在分压电阻上动刀,有:

R3:R6 =

300K:100K  误差很大,且电阻小,功耗相应增加。

3M :1M  不准,无法使用

300K:30K 准确,但功耗相应上升

1M:100K 误差在0.2V以上

1M:51K 最后确定组合,误差小且功耗低。

对于这个结果也是一脸懵,不太懂为什么会这样。

另外在几天的调试中也发现了协议栈ADC的一个问题,hal_adc.c:10位和12位精度对应的右移操作应该多移一位,否则结果将是实际的两倍。

CC2530 协议栈中实现ADC检测电池电压 附误差解决过程_第2张图片

记录一下,如有出错,请大佬指点。

你可能感兴趣的:(CC2530 协议栈中实现ADC检测电池电压 附误差解决过程)