OpenEdv-开源电子网

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

话说移动电源设计!

[复制链接]

69

主题

289

帖子

3

精华

金牌会员

Rank: 6Rank: 6

积分
1294
金钱
1294
注册时间
2013-3-14
在线时间
62 小时
发表于 2014-2-15 15:02:08 | 显示全部楼层 |阅读模式
现在准备做个移动电源玩玩哈!基本功能已经实现了,现在就是在对移动电源进行充电的时候,电量显示遇到点问题!所以有点小Bug,在这里提提,希望大家踊跃发言,如果完美实现了到时打板的话有需要的还可以送大家几块!
1、对移动电源充电要求:
电量低于25%,LED1闪烁;电量在25%~50%,LED1常亮,LED2闪烁;电量在50%~75%,LED1、LED2常亮,LED3闪烁;电量在75%~100%之间,LED1、LED2、LED3常亮,LED4闪烁;然后检测到充电IC的充电状态转变的时候充满标志位DC_OK置位,说明充电已经完成,四个LED常亮。我是通过采集电池电压AD来判断电量的,但是我发现这样不行,因为电量在50%~100%的时候,电池电压就可能已经达到4.2V了,进入了恒压充电阶段,这个时候检测电池电压已经没有用啦!所以用这种方法判断的时候发现,前面两个LED灯就是闪烁个两三分钟,就常亮了,然后LED3也闪烁时间不长,最后就是充电不久,前面三个LED就常亮了,然后LED4闪烁很久,一直闪到检测到充电完成。这样的感觉就是有点别扭,因为这样前面75%的电量显得很容易就充满了,给人的感觉不是很好,因此想问问大家有没有什么好的想法。我也有想过前面两个电通过采集电池电压AD来判断,然后第三格电和第四格电通过定时器来计时,认为给它一个充电时间,充电时间到了就进入下一格电的充电状态!这样不知道行不行,马上就写程序验证一下!嘎嘎...


基于STM8S的移动电源设计:
由于硬件是同事做的,公司帮别的公司设计的方案,软件也不是我写,是另外一个软件工程师写的。所以,我是属于业余爱好,自己重新用STM8的最小系统写的。因此,原理图就不给了,这里只跟大家讲个大概思想。

一、首先讲放电部分:
放电部分是用一个同步升压IC(这个百度一搜一大把),将锂电池的电压升压到5V以后,对手机充电。同步升压IC有一个使能端,我们控制放电和禁止放电,就是通过控制那个使能端来控制放电的。默认情况下是一按下开机键,就打开放电使能端口的,然后程序通过检测电流AD值大小来判断是否有负载(手机)接入,如果没有,5s后关闭移动电源,反之则不停的检测电流AD值,当检测到小于某个值时,认为手机已经充满了,移动电源关闭,进入低功耗模式!
二、电量指示部分:


放电的时候,电量指示处理是检测电池电压的AD值来进行四段分段处理的。至于怎么分,大家都有自己的想法,只要不要让锂电池过放就行了。
按动按键开关后,指示本体电量:
a) 电量大于75%时,亮4 颗蓝色LED灯;
b) 电量介于50%--75%之间,亮3 颗蓝色LED灯;
c) 电量介于25%--50%之间,亮2 颗蓝色LED灯;
d) 电量介于5%--25%之间,亮1 颗蓝色LED灯;
e) 电量低于5%时,最后一颗蓝色LED灯熄灭或者闪烁。
由于STM8S少引脚的没有外部参考引脚,所以我是采用3.3V内部电源电压做参考的。

这里重点说明一下,我们采集的AD值是有误差的,并不是任何时候采集的AD值都是一样的,所以当我们的AD值在两段电量的临界点时,如果处理不当的话,会有时显示两格电,有时显示三格电(我是假定电池电压AD值是在第二格电和第三格电的临界点)。我说下我的处理方法,首先声明一个AD变量dAdc1_CH1_Value1,初始化变量值为1050(这个值是不可能出现的,因为STM8的AD为10位的),然后我们在采集的时候在声明一个变量adc_min,将采集到的AD值赋给adc_min,然后我们判断adc_min<dAdc1_CH1_Value1是否成立,如果成立,则将adc_min的值赋给dAdc1_CH1_Value1,否则不做任何处理。比如我们判断dAdc1_CH1_Value1>625为第三格电,小于等于625时为两格电,如果当前时刻AD值(adc_min)等于626,如果下一时刻AD值(adc_min)等于625,那么电量就从第三格电变为显示两格电,如果再在下一时刻,AD值(adc_min)变为626,这时由于adc_min>dAdc1_CH1_Value1,程序不做处理,因此还是显示两格电,并不会显示三格电。

还要说明一下,我一般判断电压都是直接用AD值去判断的,即自己先用计算器计算出某个电压对应的AD值,然后程序用该AD值去进行处理,这样避免了算乘除法时占用过多的程序空间,如果你使用的是像义隆松翰等程序空间不富有的单片机的话,显得尤为重要。

充电时的电量指示:
放电时的电量指示说明在文章最开头就说了,当时遇到点问题,现在也差不多了,虽然说不完美,但是将就着用吧!处理方法就是把放电时的电量指示反过来,上面是定义一个adc_min,充电时定义一个adc_max,具体大家看程序就知道了。

三、唤醒方式:

唤醒方式有个,一个是通过按键(设为外部中断,并且是TLI中断,即最高优先级中断,普通外部中断也行),另外一个就是充电器插入唤醒中断。具体处理过程看程序,这里也就不多讲了。充电器插入检测一般是通过两个分压电阻对插入口的5V电压分压,然后MCU采集分压电压来实现的,充电器没有插入,IO口被分压电阻拉低,充电器插入后,IO被分压电阻分压成高电平。

好了,下面最重要的来了,小伙伴期待的开源来了。见附件程序。






















201402191049移动电源-STM8.zip

454.37 KB, 下载次数: 1625

正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

27

主题

774

帖子

2

精华

论坛大神

Rank: 7Rank: 7Rank: 7

积分
1473
金钱
1473
注册时间
2013-4-12
在线时间
77 小时
发表于 2014-2-15 19:11:52 | 显示全部楼层
直接用一个灯就行了,手机那种灯啊,几种颜色转换
简单是多么的快乐,而快乐就因你而简单!微芯动力LTKKS
回复 支持 反对

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165309
金钱
165309
注册时间
2010-12-1
在线时间
2108 小时
发表于 2014-2-15 21:15:48 | 显示全部楼层
回复【楼主位】liuyongliuyong:
---------------------------------
检测电流.
充电充满了以后,电流很小的.
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复 支持 反对

使用道具 举报

55

主题

1231

帖子

0

精华

论坛大神

Rank: 7Rank: 7Rank: 7

积分
2624
金钱
2624
注册时间
2014-2-13
在线时间
514 小时
发表于 2014-2-16 11:04:29 | 显示全部楼层
楼主,做好了把资料发上来共享下,学习
技术交流,Sell 中颖单片机,欢迎私信骚扰
回复 支持 反对

使用道具 举报

47

主题

146

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
354
金钱
354
注册时间
2013-8-8
在线时间
0 小时
发表于 2014-2-16 12:35:57 | 显示全部楼层
可以用电量检测IC  最近我也在做这个  我用的是DS2781
___诺现在就觉得失望无力,未来那么远该怎么扛。
回复 支持 反对

使用道具 举报

69

主题

289

帖子

3

精华

金牌会员

Rank: 6Rank: 6

积分
1294
金钱
1294
注册时间
2013-3-14
在线时间
62 小时
 楼主| 发表于 2014-2-16 13:50:17 | 显示全部楼层
回复【5楼】__小黑先生:
---------------------------------
移动电源没必要用那个吧,那不增加大量成本么?只需要大概判断下电量就行,没有必要做的那么精准!
回复 支持 反对

使用道具 举报

69

主题

289

帖子

3

精华

金牌会员

Rank: 6Rank: 6

积分
1294
金钱
1294
注册时间
2013-3-14
在线时间
62 小时
 楼主| 发表于 2014-2-16 13:52:18 | 显示全部楼层
回复【3楼】正点原子:
---------------------------------
现在问题是,充电管理IC可以正常检测到充满状态!我现在需要的是一个大概判断电池充到多少电量的方法哦,只有这样才能控制几个灯的亮灭状态!
回复 支持 反对

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165309
金钱
165309
注册时间
2010-12-1
在线时间
2108 小时
发表于 2014-2-16 13:57:13 | 显示全部楼层
回复【7楼】liuyongliuyong:
---------------------------------
检测电流啊.
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复 支持 反对

使用道具 举报

69

主题

289

帖子

3

精华

金牌会员

Rank: 6Rank: 6

积分
1294
金钱
1294
注册时间
2013-3-14
在线时间
62 小时
 楼主| 发表于 2014-2-16 16:07:51 | 显示全部楼层
回复【8楼】正点原子:
---------------------------------
恩,电池充电有个恒流充电阶段和一个恒压充电阶段,再研究研究!!!
回复 支持 反对

使用道具 举报

69

主题

289

帖子

3

精华

金牌会员

Rank: 6Rank: 6

积分
1294
金钱
1294
注册时间
2013-3-14
在线时间
62 小时
 楼主| 发表于 2014-2-18 16:07:53 | 显示全部楼层
回复【8楼】正点原子:
---------------------------------
原子大哥,那移动电源兼容性是真心不好做啊!各种手机的充电电流都不一样,导致检测到手机充满的判断值不一样。比如我自己的手机充满时,充电电流AD值为120;而我同事的手机可能充满时,充电电流AD值为60;还有的就是其他各种不一样的值。如果我判断充电电流AD值小于120,说明手机已经充电完成,那么我的手机能正确检测到手机充满,从而移动电源自动关机进入低功耗模式,但是这样我同事的手机肯定又充不满,因为他的手机在充电电流AD值为60~120之间还在充电!不知道原子大哥有没有什么好的办法!!!
回复 支持 反对

使用道具 举报

47

主题

146

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
354
金钱
354
注册时间
2013-8-8
在线时间
0 小时
发表于 2014-2-18 16:52:20 | 显示全部楼层
回复【10楼】liuyongliuyong:
---------------------------------
手机会用电量检测IC把  
这样不同的电池最小充电电流不一样
还有检测电阻取值不一样 最小充电电流当然不一样了啊
___诺现在就觉得失望无力,未来那么远该怎么扛。
回复 支持 反对

使用道具 举报

69

主题

289

帖子

3

精华

金牌会员

Rank: 6Rank: 6

积分
1294
金钱
1294
注册时间
2013-3-14
在线时间
62 小时
 楼主| 发表于 2014-2-18 17:25:56 | 显示全部楼层
回复【11楼】__小黑先生:
---------------------------------
那岂不是很难实现手机充满,移动电源自动关机操作,只能看到手机充满了,人为的关闭移动电源输出?
回复 支持 反对

使用道具 举报

47

主题

146

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
354
金钱
354
注册时间
2013-8-8
在线时间
0 小时
发表于 2014-2-19 09:56:26 | 显示全部楼层
回复【12楼】liuyongliuyong:
---------------------------------
哪会呢  
当检测到减小电流时  默认为充满
自动断电不就可以吗
___诺现在就觉得失望无力,未来那么远该怎么扛。
回复 支持 反对

使用道具 举报

69

主题

289

帖子

3

精华

金牌会员

Rank: 6Rank: 6

积分
1294
金钱
1294
注册时间
2013-3-14
在线时间
62 小时
 楼主| 发表于 2014-2-19 10:53:02 | 显示全部楼层
回复【13楼】__小黑先生:
---------------------------------
恩,现在在保证大多数手机能充满的情况下,手机显示已充满,需要一定时间,待电流下降到一定值时,移动电源才自动进入低功耗模式。我以前考虑的是当手机显示已充满时,移动电源要立即进入低功耗模式,所以很难调!
回复 支持 反对

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165309
金钱
165309
注册时间
2010-12-1
在线时间
2108 小时
发表于 2014-2-19 14:44:14 | 显示全部楼层
cool
回复 支持 反对

使用道具 举报

69

主题

289

帖子

3

精华

金牌会员

Rank: 6Rank: 6

积分
1294
金钱
1294
注册时间
2013-3-14
在线时间
62 小时
 楼主| 发表于 2014-2-19 15:28:38 | 显示全部楼层
回复【15楼】正点原子:
---------------------------------
哈哈,,,谢谢原子大哥!我会再接再厉,有好的东西不会忘了跟大家分享的!
回复 支持 反对

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165309
金钱
165309
注册时间
2010-12-1
在线时间
2108 小时
发表于 2014-2-19 22:28:34 | 显示全部楼层
回复【16楼】liuyongliuyong:
---------------------------------
热烈欢迎
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复 支持 反对

使用道具 举报

3

主题

28

帖子

0

精华

初级会员

Rank: 2

积分
133
金钱
133
注册时间
2012-10-28
在线时间
18 小时
发表于 2014-2-20 10:19:24 | 显示全部楼层
怎么给移动电源充电?难道又是二极管、电阻降压
聚集产生财富,见识决定命运。
回复 支持 反对

使用道具 举报

69

主题

289

帖子

3

精华

金牌会员

Rank: 6Rank: 6

积分
1294
金钱
1294
注册时间
2013-3-14
在线时间
62 小时
 楼主| 发表于 2014-2-20 13:15:17 | 显示全部楼层
回复【18楼】boylee:
---------------------------------
锂电池充电管理IC啊
回复 支持 反对

使用道具 举报

1

主题

25

帖子

0

精华

新手上路

积分
49
金钱
49
注册时间
2014-2-25
在线时间
0 小时
发表于 2014-3-11 15:48:06 | 显示全部楼层
建议在充电过程中使用充电管理IC来检测充电状态,只需判断数字引脚。
毕竟在充电过程中采用AD采样电池电压都会偏高——当你拔出充电插头后就会
发现电压又降低了0.xV,这样可能会造成伪充满。

      另外在充电过程中,当电池接近充满状态时,充电电流会很小。如将其转换
为电压值进行AD转换,一方面担心采用STM8S单片机10位AD分辨率不够。
另一方面,在恒流充电阶段你无法调节充电电流。

     给楼主推荐一款充电IC:XT2063
回复 支持 反对

使用道具 举报

69

主题

289

帖子

3

精华

金牌会员

Rank: 6Rank: 6

积分
1294
金钱
1294
注册时间
2013-3-14
在线时间
62 小时
 楼主| 发表于 2014-3-13 09:02:30 | 显示全部楼层
回复【20楼】LWM1368:
---------------------------------
谢谢楼主,你可能理解错了,我用了锂电池充电管理IC,对移动电源充电,充满时是检测一个引脚的高低电平来判断是否充满的。但是你移动电源对手机充电,那判断手机有没有充满就只能用AD来判断了!
回复 支持 反对

使用道具 举报

1

主题

25

帖子

0

精华

新手上路

积分
49
金钱
49
注册时间
2014-2-25
在线时间
0 小时
发表于 2014-3-15 13:50:22 | 显示全部楼层
回复【21楼】liuyongliuyong:
---------------------------------
明白了~
很好的帖子,顶!
回复 支持 反对

使用道具 举报

39

主题

597

帖子

2

精华

金牌会员

Rank: 6Rank: 6

积分
2109
金钱
2109
注册时间
2011-9-3
在线时间
119 小时
发表于 2016-10-26 14:20:24 | 显示全部楼层
顶,谢谢分享。
回复 支持 反对

使用道具 举报

15

主题

66

帖子

0

精华

初级会员

Rank: 2

积分
190
金钱
190
注册时间
2017-5-18
在线时间
35 小时
发表于 2017-9-20 10:17:41 | 显示全部楼层
谢谢分享
回复 支持 反对

使用道具 举报

15

主题

66

帖子

0

精华

初级会员

Rank: 2

积分
190
金钱
190
注册时间
2017-5-18
在线时间
35 小时
发表于 2017-9-20 10:40:03 | 显示全部楼层
我想问问各位,没有电量计,怎么用四个led显示容量。要求当电压下降再上升时,指示灯不能增加,怎么样算才合适呢
回复 支持 反对

使用道具 举报

37

主题

162

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
367
金钱
367
注册时间
2012-7-23
在线时间
23 小时
发表于 2019-4-11 15:16:35 | 显示全部楼层
你可以去充电头网,看看主流的移动电源拆解报告!
回复 支持 反对

使用道具 举报

0

主题

10

帖子

0

精华

新手入门

积分
15
金钱
15
注册时间
2019-4-22
在线时间
1 小时
发表于 2019-4-22 15:19:56 | 显示全部楼层
电源管理芯片也很好用的
回复 支持 反对

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2024-11-22 12:14

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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