最近项目要求检测电池电压并实时上报,三节干电池串联作为电源,硬件电路如下:
原先设计分压电阻如上,分压输入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位精度对应的右移操作应该多移一位,否则结果将是实际的两倍。
记录一下,如有出错,请大佬指点。