找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 4293|回复: 14
打印 上一主题 下一主题
收起左侧

单片机PWM输出控制MOS管给电池充电问题

[复制链接]
跳转到指定楼层
楼主
请教各位青年才俊:
用单片机的PWM控制MOS管给电池充电,一个AD采样电池电压,一个AD采样电流。
流程如下:
1,采样电池电压,根据电池电压来确定是:预充(涓流),恒流充电,恒压充电,终止。分别对应不同的输出电流要求。
2,采样电流反馈电压,根据1得来的要求做对比,调整PWM脉宽。
3,PWM输出。
4,循环1-3.

电流反馈电阻是100mR,电流波动范围要求50mA.
A/D:10BIT ,参考电压:2V
LSB检测电压:1.9mV.

目前PWM: 200K HZ,单片机的主频:8MHZ,最小计时0.125US,按200KHZ的速度,则PERIOD=40,也就是说DUTY增加1,其实调整的比例是:2.5%

问题:
现在的输出电流不稳定,不受控。已排除硬件外围问题。

疑问:
1,更改脉宽后,电流要多久才发生变化?假如我检测到电流比要求的小,那么我调整脉宽增加,那么电流什么时候才会增加,假如在我下次调整脉宽之后才增加,那么是不是中间又会调整一次?
2,按逻辑流程,其实控制比较简单,但是不知道为什么电流控制非常不理想。

麻烦各位帮忙看下,谢谢!



分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏1 分享淘帖 顶 踩
回复

使用道具 举报

沙发
ID:301191 发表于 2021-11-21 00:31 | 只看该作者
顶一下
回复

使用道具 举报

板凳
ID:420836 发表于 2021-11-22 04:50 | 只看该作者
带电压电流环的PWM稳压器拓扑结构复杂,为了保证电流环的稳定性,斜率补偿很重要。
回复

使用道具 举报

地板
ID:915384 发表于 2021-11-22 07:25 | 只看该作者
自己顶下
回复

使用道具 举报

5#
ID:915384 发表于 2021-11-23 06:41 | 只看该作者
TTQ001 发表于 2021-11-22 04:50
带电压电流环的PWM稳压器拓扑结构复杂,为了保证电流环的稳定性,斜率补偿很重要。

谢谢,听得不是很明白,能否详细描述下斜率补偿是怎么处理?   谢谢
回复

使用道具 举报

6#
ID:446156 发表于 2021-11-23 16:14 | 只看该作者
电流不受控到底不受控到什么程度,你的控制周期是多少,控制算法是什么,ADC的读取周期是多少,滤波算法是什么
回复

使用道具 举报

7#
ID:915384 发表于 2021-11-23 16:39 | 只看该作者
qinlu123 发表于 2021-11-23 16:14
电流不受控到底不受控到什么程度,你的控制周期是多少,控制算法是什么,ADC的读取周期是多少,滤波算法是 ...

要求充电电流波动+/- 50mA,但是电流波动有时候几百mA.
控制PWM的脉宽周期我试过8ms,32ms,250ms等间隔时间调整一次,都不行。
控制算法我的正文部分有描述,如果你说的是PID之类的,那就没有,这种芯片ROM资源都少,没办法用PID之类的。而且市面上有做好的,也是普通芯片,也没有用PID之类。
ADC读取电池电压是250ms间隔。
ADC读取电流反馈电压有试过8ms,32ms,250ms等等。
滤波的话就是连续采样10次,去掉最小值,最大值,然后去平均值。
回复

使用道具 举报

8#
ID:401564 发表于 2021-11-23 17:12 | 只看该作者
你这是产品还是DIY?
如果是DIY,直接一个充电IC搞定,不要把简单事情搞复杂
如果是产品,这就有点扯了,一个PWM给电池充电的完整电路下来,至少有5块钱的成本吧
一片5A充电电流的锂电池充电IC(其它电池也是差不多),成本也就5块左右,但事就省下很多了
锂电池的基础知识,你还是要多学习一下
1:预充,这个是恒流小电流充电,电流没有绝对规定值,C/20也行吧,C/30也行.....,一般电池电压3.0V以下进行
2:快速恒流充电,这个是大电流充电阶段,充电电流一般最大为1C,一般电池电压在3.85V以下进行
3恒压,电池电压达到3.85V之后开始以4.20V电压恒压充电,不管电流是多少
4,结束充电,当充电电流低于C/10时,可以结束充电,再充意义不大
如果你还不知道这C/10,C/20什么意思,那........

单片机方面,不管你PWM频率是多少,充电电流和电池电压都是不稳定的,滤波是肯定要的,不然ADC出来的数据跳来跳去的
首先是PWM输出滤波,然后是ADC结果滤波
如果你对我说不理解,那先放弃吧,去学一下基础知识,学好了再接手这个项目
回复

使用道具 举报

9#
ID:915384 发表于 2021-11-23 19:01 | 只看该作者
Y_G_G 发表于 2021-11-23 17:12
你这是产品还是DIY?
如果是DIY,直接一个充电IC搞定,不要把简单事情搞复杂
如果是产品,这就有点扯了,一个P ...

谢谢你的回复。其实我的想法跟你差不多,用颗充电IC即安全又省事。
但是成本这块的话应该是有节省的,本身IC必须要带AD,PWM,如果连带把充电IC省了就节约了,外围的话用充电IC也需要电感这些元器件,该产品目前基本都是用单片机来实现充电。
锂电池的这个充电各阶段还是有所了解。

其实流程什么的是非常简单的,如果你做过有经验的话,可以分享下你是如何处理,比如PWM频率,滤波等等这些。
回复

使用道具 举报

10#
ID:401564 发表于 2021-11-24 00:02 | 只看该作者
linpeng1981 发表于 2021-11-23 19:01
谢谢你的回复。其实我的想法跟你差不多,用颗充电IC即安全又省事。
但是成本这块的话应该是有节省的,本 ...

没有这么干过,所以就没有什么好经验可言
你可以试一下用PMOS管PWM控制,输出先滤波,电流取样电阻放在电池的负极,这样的话电池电压和充电电流可能会相对稳定,至少理论上是这样的,你参考一下

回复

使用道具 举报

11#
ID:446156 发表于 2021-11-24 07:51 | 只看该作者
linpeng1981 发表于 2021-11-23 16:39
要求充电电流波动+/- 50mA,但是电流波动有时候几百mA.
控制PWM的脉宽周期我试过8ms,32ms,250ms等间隔时 ...

给电池充电不用PID也行毕竟负载比较稳定,ADC采样尽量快点滤波尽量多点,每做完一次滤波再改变占空比。比如你1ms采集一个AD值采集100个做平均滤波,那么就是100ms算一个平均值,算完平均值之后再根据这个值去改变占空比。做任何控制,PWM占空比的改变周期(也就是控制周期)和反馈数据的采集周期(多久计算一次滤波)是息息相关的。你目前电流波动大是因为电流数据采集太少滤波也太少。你可以做个实验,如果固定占空比不变(在保证安全的前提下)看电流波动范围有多大,如果波动范围满足要求就意味着你可以通过努力来实现控制,如果固定占空比都不能满足要求那么就是没戏了。
回复

使用道具 举报

12#
ID:915384 发表于 2021-11-24 08:36 | 只看该作者
Y_G_G 发表于 2021-11-24 00:02
没有这么干过,所以就没有什么好经验可言
你可以试一下用PMOS管PWM控制,输出先滤波,电流取样电阻放在电池 ...

非常感谢你的回复及建议,目前这部分的硬件电路我们是参考大批量出货的成品,电路这块应该是成熟的。
我所有的问题其实就来自软件方面跟硬件反馈:
如:PWM的脉宽调整一个最小单位,比如2.5%
1,PWM调整后,多长时间电流会变化?
2,电流变化多少?

因为这2个因素决定了波动范围。

至于ADC采样滤波这些是最基本要保证可靠的前提,这部分我已经先验证。
但是上述2点很难测试,所以想看看有没有人做过,给出我没有注意到的方面。

PCB板还要等几天才能调试,到时候看结果再跟你分享,谢谢。
回复

使用道具 举报

13#
ID:401564 发表于 2021-11-24 12:55 | 只看该作者
linpeng1981 发表于 2021-11-24 08:36
非常感谢你的回复及建议,目前这部分的硬件电路我们是参考大批量出货的成品,电路这块应该是成熟的。
我 ...

在电池充电这一块,并不需要什么高速运算呀,就像楼上说的,你可以增加ADC的次数,取平均值,再去改变占空比
但这都是理论上的,实际的操作是要有实际数据作为参考的
电池充电的各个阶段的电压和电流并不是要绝对标准的,对于时间来说,差个一两分钟也没事,这期间,是有很多时间给单片机的
PWM调整之后,充电电流马上就跟着变化了,比如你增加了1%占空比之后,可以在增加之后进行130次的ADC,然后去掉最大和最小值,再平均,得出电流
而且,随着电池电压的增加,充电电流是慢慢变小的,所以,你也不用增加占空比之后电流过大,完全可以5秒或者更长时间调节一次充电电流,不需要PID的,除非你对PID很拿手,那自然是好
对于占空比,你肯定要有一组实际的数据,比如电池电压3.0V时,1C充电电流的占空比是多少,一次完整充放电的数据......之类的
回复

使用道具 举报

14#
ID:915384 发表于 2021-11-24 19:36 | 只看该作者
qinlu123 发表于 2021-11-24 07:51
给电池充电不用PID也行毕竟负载比较稳定,ADC采样尽量快点滤波尽量多点,每做完一次滤波再改变占空比。比 ...

非常感谢,可以按你说的测试下,很有可能是AD值取样数太少,因为只才了10个点,然后8ms就改变一次占空比了。有试过250ms间隔采样,但是采样点还是10个点。有可能滤波效果并不好。
谢谢。
回复

使用道具 举报

15#
ID:915384 发表于 2021-11-24 19:39 | 只看该作者
Y_G_G 发表于 2021-11-24 12:55
在电池充电这一块,并不需要什么高速运算呀,就像楼上说的,你可以增加ADC的次数,取平均值,再去改变占空比
...

非常感谢你的回复。等PCB板好了后按各位的建议测试下。到时候有了结果再向各位汇报情况。谢谢了。
回复

使用道具 举报

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

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

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