51 单片机AD采集电压值的坑

1.引言

最近又在忙低功耗相关项目,需要对设备电池进行电压进行检测,ad采集的例程原厂都有给到,相关的文件说明都有,但是理想和现实还是比较骨感的,采集的电压总是不对,调了两天,赶在周末前终于发现了问题。完美!!可能稍微不完美的就是原厂的技术支持,根本就不支持,发了微信都不回复,态度不太行。。。。。不过最后还是自己发现了问题,真解气!

2.现象

电压检测使用的是单片机的引脚,但电池电压一般为4.2v,大于GPIO的承受电压3.3v,所以需要一个分压电路,分压电路原理图如下图所示。

 上图中R7和R8是分压电阻,使用的阻值都是1M的电阻,通过理论分析,测量端点应该是2.5V,但是ad采集出来的内容却不是,甚至是0.几V,真是瞎了,跟所学的理论知识完全对不上,然后问原厂的人,原厂的人说肯定是分压电阻有问题,让我们看看,然后。。。。。就没有然后了,都不知道看什么,他们啥都不说,真的气人。

然后我们拿开发板用同样的代码去测试,直接将测量点接到一个较高电压值得端点,比如:3.3v的位置,然后是正常的。但是接到上图的测量端点,却是不行,但问题在于:我用电压表去测量上图的测量端点是正常的2.5V

所以真的...无语.....

3.发现问题

在测试的过程中,使用了一个小的电阻进行分压测试,然后突然就真的可以了,显示了测量端点理论的电压值,经分析。一开始我们用的是1M+1M的电阻,通过测量端点的电流只有大约0.5ua,真的太小了,导致无法测量出端点的电压值,换了小电阻5K+5K之后,经过测量端点的电流0.5mA,这时AD就可以正常采集电压值了。

总结:ad在采集电压的时候,采集端点允许通过的电流不能太小???但是电压表可以测量出来,奇了怪了,但问题解决就是减小分压电路的电阻,让通过测量端点的电流大一点。

Guess you like

Origin blog.csdn.net/Chasing_Chasing/article/details/120086412