打印
[经验分享]

单片机采样电池电压

[复制链接]
1658|13
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
tpgf|  楼主 | 2025-1-11 08:58 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式
随着物联网的发展,单片机+锂电池,这种组合越来越普遍,单片机厂商也不断推出适合物联网的单片机。

先补充一下锂电池的基本知识…

锂电池在充满电的时候,是4.2V;在用完电的时候,不是0V,而是2.7V左右,每个厂家制作的锂电池,略有差异…

鉴于锂电池材料的局限性,电压超过4.2V,会发生危险,比如燃烧;电压低于2.7V左右,会造成无法再次充电,总之…

锂电池电压过高和过低,都会造成永久损坏,所以…

我们的产品在使用锂电池的时候,需要时刻监测锂电池电压。

充电的时候,不要超过4.2V,这个要求,需要产品中加入充电管理芯片,充电管理芯片会自动在4.2V的时候切断充电。

放电的时候,也就是产品在正常使用的时候,不要让锂电池电压低于2.7V,比如,在2.7V的时候,自动强制关机。

那么,锂电池电压监测电路应该怎么设计呢?



如上图所示,应该是初学者最先想到的办法。不过,仔细分析后会发现,有大问题,我们来分析一下···

VBAT连接到锂电池正极,通过两个电阻分压,连接到单片机的ADC引脚。ADC测到的电压,就是锂电池电压的一半。
这个一般是怎么来的呢?
可以参考这里:分压电路工作原理

简而言之就是,ADC0的输出电压电压比例,取决于R1和R2电阻大小,具体运算公式为:

ADC0 = VBAT * R2 / R1 + R2
所以,根据这个公式,可以依据上图计算出ADC0 = VBAT * 1/2 。

因为锂电池的电压范围大概在2.7V到4.2V之间,所以ADC引脚的电压会在1.35~2.1V之间,不会超过普通单片机的3.3V电压,看起来很合理,不过。。。当产品处于关机状态时,我们以为锂电池就不耗电了,其实,通过电路可以发现,锂电池其实还在通过2个10k的电阻耗电。

随着时间的推移,该产品放着放着电就减少了,而且当电池电压减少到2.7V以下时,就可能无法充起电来了。

我在国外的一款产品上,看到了这样的一个电路,当然,已经把它使用到我的产品当中



上面电路,很巧妙的解决了这个问题,代价是电路板上多了1个MOS管和2个电阻,CTRL引脚是单片机的一个普通引脚,在单片机断电的时候,要求是高阻态,否则也会耗电···

这里加MOS管并不是用来控制“是否要测量电池电压”,而是为了在产品关机的时候,不要让锂电池电池的电压通过两个分压电阻。

此时,还有个问题要解决···

产品在正常使用的过程中,当电池电压小于3.3V时,LDO的输出电压,就不再是3.3V了,随着电池电压的减小,LDO的输出电压也会减小,此时…

如果一直使用3.3V作为基准来测量电池电压,就会出现错误,所以…

需要使用有基准电压引脚的单片机,或者有“内部参考电压”+“内部测量通道”功能的单片机···

用基准电压引脚计算电池电压,这个大家都清楚,我重点说一下“内部参考电压”+“内部测量通道”这个功能。

简单来说,有了“内部参考电压”+“内部测量通道”之后,我们就可以直接通过内部测量通道得到精确的VDD电压,而不必使用基准电压芯片了,毕竟···

基准电压芯片也挺贵的,还得在电路板上占个地方,以及多几分钱的焊接费用···

至于软件方面的代码,以后有时间在整理一下发。
————————————————

                            版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。

原文链接:https://blog.csdn.net/huaijin520/article/details/108578542

使用特权

评论回复
沙发
LcwSwust| | 2025-1-11 09:40 | 只看该作者
本帖最后由 LcwSwust 于 2025-1-11 09:42 编辑

如果单片机是3.3V的,那Q1就不合适了,可能无法关断;建议用宽电压单片机或改为NMOS串在两个电阻中间。

使用特权

评论回复
板凳
modesty3jonah| | 2025-2-4 19:29 | 只看该作者
需要通过电压分压电路将电池电压降至ADC可接受的范围内,防止损坏设备

使用特权

评论回复
地板
maudlu| | 2025-2-5 11:08 | 只看该作者
为提高测量的稳定性和准确性,需在 ADC 输入前加入滤波电路,如 RC 低通滤波器,以消除噪声和干扰。因为电源线上可能存在高频干扰信号,若不进行滤波处理,这些干扰会影响 ADC 的采样结果,导致测量值不准确或波动较大。

使用特权

评论回复
5
benjaminka| | 2025-2-5 14:06 | 只看该作者
在读取 ADC 转换结果后,需要通过适当的算法进行处理,以将数字量转换为对应的电压值。通常会根据参考电压和 ADC 的分辨率来计算实际的电压值。此外,还可以采用一些数据处理算法,如滑动平均、卡尔曼滤波等,进一步提高测量值的准确性和稳定性。

使用特权

评论回复
6
wilhelmina2| | 2025-2-5 16:05 | 只看该作者
由于硬件电路存在一定的误差,如电阻的实际阻值与标称阻值存在偏差、ADC 本身存在偏移误差和增益误差等,因此需要对采样结果进行校准。可以通过测量已知电压值,计算出校准系数,对采样数据进行修正。

使用特权

评论回复
7
belindagraham| | 2025-2-5 17:45 | 只看该作者
在ADC输入端加入RC低通滤波器,滤除高频噪声。

使用特权

评论回复
8
abotomson| | 2025-2-5 19:33 | 只看该作者
电池电压可能会受到电路中其他元件的干扰,产生波动和噪声。为了提高采样的准确性,需要在采样电路中添加滤波电路。常见的滤波电路是 RC 滤波电路,通过电容和电阻的组合,滤除高频噪声。

使用特权

评论回复
9
vivilyly| | 2025-2-6 10:27 | 只看该作者
在电池电压低于2.7V时,可能会无法再次充电,因此需要在电压过低时采取措施,如自动关机。

使用特权

评论回复
10
mikewalpole| | 2025-2-6 10:55 | 只看该作者
单片机的ADC采样依赖于其供电电压,因此需要确保供电电压稳定。
可以通过外部稳压电路或者内部稳压器来保持供电电压的稳定性和精确度。

使用特权

评论回复
11
ulystronglll| | 2025-2-6 15:43 | 只看该作者
选择高精度的电阻,以减少由于电阻值偏差导致的测量误差。

使用特权

评论回复
12
macpherson| | 2025-2-6 16:06 | 只看该作者
提高分辨率可以获得更精细的采样结果,但可能增加采样时间。

使用特权

评论回复
13
sesefadou| | 2025-2-6 17:49 | 只看该作者
ADC的采样周期短于内部电容的充电时间,避免采样误差

使用特权

评论回复
14
benjaminka| | 2025-2-6 18:34 | 只看该作者
由于电池电压可能高于单片机的ADC输入范围,通常需要设计分压电路将电压降低到合适的范围。选择合适的分压电阻值,确保ADC能够准确测量电池电压,同时考虑电阻的精度对测量结果的影响

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

2108

主题

16232

帖子

16

粉丝