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

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

原先设计分压电阻如上,分压输入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位精度对应的右移操作应该多移一位,否则结果将是实际的两倍。

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

  • 1
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值