OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 22148|回复: 33

请问怎么用stm32的ADC测量聚合物锂电池的剩余电量,电池是7.4V的

[复制链接]

51

主题

154

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
409
金钱
409
注册时间
2012-10-24
在线时间
19 小时
发表于 2015-6-8 09:53:25 | 显示全部楼层 |阅读模式
5金钱
各位大侠,如题,我想用stm32的ADC测量7.4V锂电池的剩余电量并显示出来,但有个问题,参考电压不是固定的7.4V,电压会随电池电量的减少而逐步降低,也就是参考电压是个会变的数,我该怎么知道电池电压是多少呢?有经验的大侠请分享一下,感激不尽!!

最佳答案

查看完整内容[请看2#楼]

用电阻分压,STM32有自己的参考电压。
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

3

主题

62

帖子

0

精华

初级会员

Rank: 2

积分
94
金钱
94
注册时间
2015-5-29
在线时间
0 小时
发表于 2015-6-8 09:53:26 | 显示全部楼层
用电阻分压,STM32有自己的参考电压。
回复

使用道具 举报

51

主题

154

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
409
金钱
409
注册时间
2012-10-24
在线时间
19 小时
 楼主| 发表于 2015-6-8 11:41:18 | 显示全部楼层
回复【2楼】XCDesigner:
---------------------------------
电阻分压是有的了,但我看到资料说,参考电压就是分压前的电压,在这里也就是7.4V
回复

使用道具 举报

1

主题

192

帖子

0

精华

高级会员

Rank: 4

积分
596
金钱
596
注册时间
2014-4-14
在线时间
104 小时
发表于 2015-6-8 12:47:23 | 显示全部楼层
参考电压怎么可能变?STM32的ADC参考只有两种,64脚及以下封装,VCC,100脚及以上,外部参考电压源或者VCC,这里哪个都不是能乱变的啊。7.4V又不可能直接给3.3V的STM32供电,必须经LDO之类的降压,一般LDO有0.2V压差即可稳压,7.4锂电池放至保护都有5.5V,足够稳压,何来参考电压变化?
回复

使用道具 举报

1

主题

192

帖子

0

精华

高级会员

Rank: 4

积分
596
金钱
596
注册时间
2014-4-14
在线时间
104 小时
发表于 2015-6-8 12:56:05 | 显示全部楼层
假如你是指输入电压,随着电池放电,输入电压当然会变,常见的两种办法:一个是积分,采电压、电流,构成电压——电流——时间曲线,积分算出放出多少能量,第二个,构建一个恒流源,不管电压如何变,放电电流不变,直接乘时间就是安时数。而剩余电量不可准确测量,只能通过累积数据大概估算。
回复

使用道具 举报

51

主题

154

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
409
金钱
409
注册时间
2012-10-24
在线时间
19 小时
 楼主| 发表于 2015-6-8 13:21:16 | 显示全部楼层
回复【4楼】翼间:
---------------------------------
我是这样测量的,7.4V经过两个电阻分压后低于3.3V,然后接入STM32的ADC引脚
回复

使用道具 举报

51

主题

154

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
409
金钱
409
注册时间
2012-10-24
在线时间
19 小时
 楼主| 发表于 2015-6-8 13:25:33 | 显示全部楼层
回复【5楼】翼间:
---------------------------------
我现在是不知道怎么采集电池的电压,采集回来后我是根据电池放电曲线大概算出电池剩余电量,采集回来的ADC_DR的值后仍然是按照ADC_DR*3.3/4096这条公式计算电池电压么?我感觉这条公式不太适用这些场合。
回复

使用道具 举报

1

主题

67

帖子

0

精华

初级会员

Rank: 2

积分
102
金钱
102
注册时间
2015-6-6
在线时间
2 小时
发表于 2015-6-8 15:01:02 | 显示全部楼层
和白痴交流是很考验人的!!!
三更有梦书当枕,千里怀人月在峰!
回复

使用道具 举报

1

主题

192

帖子

0

精华

高级会员

Rank: 4

积分
596
金钱
596
注册时间
2014-4-14
在线时间
104 小时
发表于 2015-6-8 15:09:12 | 显示全部楼层
回复【7楼】莆田:
---------------------------------
为什么不适合?你要怎么合适?ADC只能告诉你一个采样电压和参考电压之间的比值,不是告诉你实际的电压值!VSSA就是0,参考电压就是4095,假如参考电压是3.3V,那3.3V就对应4095,假如参考电压是2.5V,那2.5V就对应4095,总之参考电压是多少,那个电压值就对应4095!这个比值怎么用来计算出实际电压值完全看你自己的参考电压接的是多少。由之前你对各种电路参数是什么意思都没弄懂,看得出你现在连基本的概念都还缺,先去搞懂一些基本的电子参数的意思是什么吧。
回复

使用道具 举报

1

主题

192

帖子

0

精华

高级会员

Rank: 4

积分
596
金钱
596
注册时间
2014-4-14
在线时间
104 小时
发表于 2015-6-8 15:24:52 | 显示全部楼层
 回复【7楼】 莆田 :
---------------------------------
你先看明白这张锂电池不同负载下的典型放电曲线图,再想想怎么估算锂电池的剩余容量吧。

回复

使用道具 举报

1

主题

192

帖子

0

精华

高级会员

Rank: 4

积分
596
金钱
596
注册时间
2014-4-14
在线时间
104 小时
发表于 2015-6-8 15:40:37 | 显示全部楼层
回复【6楼】莆田:
---------------------------------
这个跟参考电压有关系?搞清楚参考电压究竟是什么吗?
回复

使用道具 举报

120

主题

7877

帖子

13

精华

资深版主

Rank: 8Rank: 8

积分
12010
金钱
12010
注册时间
2013-9-10
在线时间
427 小时
发表于 2015-6-8 21:34:36 | 显示全部楼层
我的电池充满电是8.4V,分压ADC是400K和300K,目前运行良好,呵呵
现在,程序把烂铜烂铁变得智能化了,人呢,一旦离开了这烂铜烂铁就不知道干啥了
回复

使用道具 举报

51

主题

154

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
409
金钱
409
注册时间
2012-10-24
在线时间
19 小时
 楼主| 发表于 2015-6-9 09:35:00 | 显示全部楼层
回复【8楼】laidaihua:
---------------------------------
每个人都有一段求知的过程,如果你懂,就证明一下,不懂就别装逼,看你回复数和发帖数就知道你是个论坛搅屎棍!
回复

使用道具 举报

51

主题

154

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
409
金钱
409
注册时间
2012-10-24
在线时间
19 小时
 楼主| 发表于 2015-6-9 10:35:22 | 显示全部楼层
回复【9楼】翼间:
---------------------------------
很感谢您的耐心指导,我对这方面知识确实很欠缺,我明白的是假如stm32的ADC参考电压是3.3V(48脚的VREF+接到3.3V),然后精度是12位,就是把3.3分成4096个等份,参考电压是2.5V就是把2.5等分4096份,ADC测量到的值再乘以每一等份的值就是实际电压值,这个我明白
回复

使用道具 举报

51

主题

154

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
409
金钱
409
注册时间
2012-10-24
在线时间
19 小时
 楼主| 发表于 2015-6-9 14:12:18 | 显示全部楼层
回复【12楼】八度空间:
---------------------------------
您好,能不能看看电路图啊?
回复

使用道具 举报

120

主题

7877

帖子

13

精华

资深版主

Rank: 8Rank: 8

积分
12010
金钱
12010
注册时间
2013-9-10
在线时间
427 小时
发表于 2015-6-9 19:33:47 | 显示全部楼层
回复【15楼】莆田:
---------------------------------
400K接锂电池,300K接地,然后和400K连接,再到单片机ADC管脚,就这么简单
现在,程序把烂铜烂铁变得智能化了,人呢,一旦离开了这烂铜烂铁就不知道干啥了
回复

使用道具 举报

58

主题

6291

帖子

1

精华

资深版主

Rank: 8Rank: 8

积分
11406
金钱
11406
注册时间
2014-4-1
在线时间
1282 小时
发表于 2015-6-9 21:35:10 | 显示全部楼层
你的 CPU 供电来自电池,对吧?

那么:
1、因为电池电压是变化的,你必须保证 CPU 的供电是稳定的 3.3v,CPU本身才能正常工作。
2、3.3v 稳,AD 的参考电压自然就稳了。
3、然后就是 15L 的方法。。。。

CPU 供电不稳,一切都免谈。
回复

使用道具 举报

1

主题

192

帖子

0

精华

高级会员

Rank: 4

积分
596
金钱
596
注册时间
2014-4-14
在线时间
104 小时
发表于 2015-6-10 08:41:08 | 显示全部楼层
回复【16楼】八度空间:
---------------------------------
这么大的采样电阻?STM32的ADC能容忍的输入阻抗不高,几百K就不怕影响精度?
回复

使用道具 举报

1

主题

192

帖子

0

精华

高级会员

Rank: 4

积分
596
金钱
596
注册时间
2014-4-14
在线时间
104 小时
发表于 2015-6-10 09:10:26 | 显示全部楼层
回复【14楼】莆田:
---------------------------------
那不就结了?根据你VREF接的电压是多少,根据和参考电压之间的比例不就能算出ADC管脚输入的实际电压了?再根据你电池电压经电阻分压的比例不就能计算出你现在电池电压是多少了?但是单纯测电池电压变化来判断电池容量误差是很大的,因为电压和容量之间的关系不是一根简单的直线,看看那张图的曲线你就明白,平缓的那一段电压可能只下降了0.1V,却放出百分之三四十的能量,而头尾部分电压可能下降了0.5V,却只放出了百分之五的能量,而且能放出多少能量跟负载有多大有很大关系(因为有内阻的存在,负载电流越大,在电池本身内阻上消耗的能量就越大,能放出的能量就越小),那张图上面18C的负载能放出的能量是6.5AH,比1C的负载能放出的能量8AH少了近20%。所以你单纯测个电压是非常粗略的,它充其量也就能告诉你是有电还是没电,想知道放出了多少电还要采样电流两者算积分,而预测剩余多少电则更加困难,因为电池是会老化的,容量会发生变化,这次能放这么多电,半年后未必放得出这么多电,由于你不知道它内部的老化程度,所以剩多少电也很难预测,一般是根据上次完整放电的历史数据推算剩余多少容量,更精确的还要根据负载变化来计算。
回复

使用道具 举报

51

主题

154

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
409
金钱
409
注册时间
2012-10-24
在线时间
19 小时
 楼主| 发表于 2015-6-10 09:31:11 | 显示全部楼层
回复【19楼】翼间:
---------------------------------
要压缩成本只能用这种相对傻瓜的做法了,我现在就是想知道有电还是没电,没电了就提示要充电,充满了就提示充满,其实知道最高电压和最低放电电压就行了
回复

使用道具 举报

0

主题

133

帖子

0

精华

初级会员

Rank: 2

积分
169
金钱
169
注册时间
2014-12-21
在线时间
1 小时
发表于 2015-6-10 10:48:37 | 显示全部楼层
我来看看口水贴
流过汗水才能代表自己真的学会了如何不流汗。
回复

使用道具 举报

17

主题

36

帖子

0

精华

初级会员

Rank: 2

积分
124
金钱
124
注册时间
2014-11-21
在线时间
0 小时
发表于 2015-6-10 11:49:30 | 显示全部楼层
我感觉电量这么简单是测不准的,虽然我没做过这项目,我感觉就像测开路电压和实际电压不一样的
回复

使用道具 举报

120

主题

7877

帖子

13

精华

资深版主

Rank: 8Rank: 8

积分
12010
金钱
12010
注册时间
2013-9-10
在线时间
427 小时
发表于 2015-6-10 21:16:22 | 显示全部楼层
回复【18楼】翼间:
---------------------------------
跑了好几个月了,还行
现在,程序把烂铜烂铁变得智能化了,人呢,一旦离开了这烂铜烂铁就不知道干啥了
回复

使用道具 举报

3

主题

62

帖子

0

精华

初级会员

Rank: 2

积分
94
金钱
94
注册时间
2015-5-29
在线时间
0 小时
发表于 2015-6-12 13:31:30 | 显示全部楼层
保持你的VREF稳定。VREF可以用2.5V的。
回复

使用道具 举报

80

主题

268

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
441
金钱
441
注册时间
2014-8-11
在线时间
84 小时
发表于 2017-3-1 14:27:10 | 显示全部楼层
八度空间 发表于 2015-6-9 19:33
回复【15楼】莆田:
---------------------------------
400K接锂电池,300K接地,然后和400K连接,再到单片 ...

八度老师,我现在主板是将锂电池16.8v降压到3.3v供电的,我该如何测试这个电池电量?
我现在的做法是16.8v分压到3.3v以下,然后在电池充满电的状态下测量分压后的实时电压值,单片机将电压值*(16.8/3.3)和对应的系统时间输出到txt里。
这样的话我就可以告诉用户电池剩余工作时长
我是一只菜鸟,但我会大鹏展翅
回复

使用道具 举报

120

主题

7877

帖子

13

精华

资深版主

Rank: 8Rank: 8

积分
12010
金钱
12010
注册时间
2013-9-10
在线时间
427 小时
发表于 2017-3-1 21:48:54 | 显示全部楼层
战舰水手 发表于 2017-3-1 14:27
八度老师,我现在主板是将锂电池16.8v降压到3.3v供电的,我该如何测试这个电池电量?
我现在的做法是16. ...

需要精准就用电量计吧,或者自己建模来做,测量电流和电压
现在,程序把烂铜烂铁变得智能化了,人呢,一旦离开了这烂铜烂铁就不知道干啥了
回复

使用道具 举报

36

主题

124

帖子

0

精华

初级会员

Rank: 2

积分
194
金钱
194
注册时间
2016-4-28
在线时间
262 小时
发表于 2017-5-4 13:45:23 | 显示全部楼层
八度空间 发表于 2017-3-1 21:48
需要精准就用电量计吧,或者自己建模来做,测量电流和电压

请问八老师, 锂电池->400K + 300K<-GND, 中间接入ADC,那8.4V的分压结果应该是8.4 * 3/7 = 3.6v,比3.3还高?

回复

使用道具 举报

120

主题

7877

帖子

13

精华

资深版主

Rank: 8Rank: 8

积分
12010
金钱
12010
注册时间
2013-9-10
在线时间
427 小时
发表于 2017-5-4 17:48:55 | 显示全部楼层
orta 发表于 2017-5-4 13:45
请问八老师, 锂电池->400K + 300K

根据分压原理进行计算啊,看你的ADC接那个电阻那里了
现在,程序把烂铜烂铁变得智能化了,人呢,一旦离开了这烂铜烂铁就不知道干啥了
回复

使用道具 举报

1

主题

6

帖子

0

精华

新手入门

积分
6
金钱
6
注册时间
2024-2-23
在线时间
2 小时
发表于 2024-2-23 17:58:08 | 显示全部楼层
楼主,能请教一下,使用降压稳压到3.3V之后ADC读的脚都是3.3V不随电池电量的减少读出来的电压不改变,是什么原因呢?
回复

使用道具 举报

25

主题

180

帖子

0

精华

高级会员

Rank: 4

积分
596
金钱
596
注册时间
2015-1-14
在线时间
152 小时
发表于 2024-2-26 08:59:44 | 显示全部楼层
夜弦月 发表于 2024-2-23 17:58
楼主,能请教一下,使用降压稳压到3.3V之后ADC读的脚都是3.3V不随电池电量的减少读出来的电压不改变,是什 ...

ADC检测的是电池分压后的电压值,想要得到正确稳定的电压,有个前提就是这个参考电压要稳定,你这种情况可能就是检测的AD脚是没分压的或是分压电路不对,大于了芯片本身检测的最大量程,显示就一直是3.3
回复

使用道具 举报

1

主题

6

帖子

0

精华

新手入门

积分
6
金钱
6
注册时间
2024-2-23
在线时间
2 小时
发表于 2024-2-26 10:47:53 | 显示全部楼层
可是我降压到2.8V再接入ADC检测出来的还是最大量程
回复

使用道具 举报

1

主题

6

帖子

0

精华

新手入门

积分
6
金钱
6
注册时间
2024-2-23
在线时间
2 小时
发表于 2024-2-26 11:23:01 | 显示全部楼层
Mrjiang 发表于 2024-2-26 08:59
ADC检测的是电池分压后的电压值,想要得到正确稳定的电压,有个前提就是这个参考电压要稳定,你这种情况 ...

我的是F103C8T6芯片,用的是内部参考电压
回复

使用道具 举报

25

主题

180

帖子

0

精华

高级会员

Rank: 4

积分
596
金钱
596
注册时间
2015-1-14
在线时间
152 小时
发表于 2024-2-26 11:59:49 | 显示全部楼层
夜弦月 发表于 2024-2-26 11:23
我的是F103C8T6芯片,用的是内部参考电压

把你这部分原理图和代码贴出来就清楚了
回复

使用道具 举报

1

主题

6

帖子

0

精华

新手入门

积分
6
金钱
6
注册时间
2024-2-23
在线时间
2 小时
发表于 2024-2-26 16:29:13 | 显示全部楼层

采集到的电池电压不随电池电压变化

本帖最后由 夜弦月 于 2024-2-26 16:34 编辑

C:\Users\Administrator\Desktop 接线图.png QQ截图20240226163204.png 这个是采集和计算的代码
这个是接线图
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2024-11-23 09:55

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表