打印
[电源]

多模式蓄电池充电电路

[复制链接]
2119|20
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
hudi008|  楼主 | 2014-5-2 23:53 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

摘要:


本文介绍了一种通用电池充电器的智能充电软件控制方法,利用这种充电方法根据电池的充电特性进行不同充电模式的转换。采用AT89C51单片机芯片作为充电过程的控制芯片进行电路设计,实现A/D转换和显示电路,并根据外部电路检测到的电池电压信息选择正确的充电模式,实现在涓流、恒流、恒压及浮充电模式之间的智能转换。


引言


一个好的充电器对蓄电池的使用寿命具有举足轻重的作用,智能充电器具有操作简单、可靠性高和通用性强等优点,是充电器家族中的一个重要的组成部分,也是未来充电器发展的主要方向。所谓智能充电器是指能根据用户的需要自主选择充电方式、对不同类型的充电电池进行充电、并且在充电过程中能对被充电电池进行保护从而防止过电压和温度过高的一种智能化充电器。


充电控制器需要长时间控制并要进行电压检测,若用传统电路实现则电路复杂,采用单片机控制可大大减化电路,降低成本。本充电器用AT89C51单片机进行充电定时控制。在定时充电期间若电池电压高于另一值则停止充电。采用从涓流充电、恒流充电、恒压充电到浮充电的方法,充电完成后,自动转为浮充电, 以防止电池放电,并有显示电路。适合对镍镉、镍氢电池进行充电。该充电器采用单片机控制,充电效果更佳。


相关帖子

沙发
hudi008|  楼主 | 2014-5-2 23:53 | 只看该作者

智能充电器硬件设计


由单片机和充电器芯片组成的通用充电器原理框图如图1所示,图中AT89C51与ADC0809一起构成充电器的核心。ADC0809随时检测充电电池两端电压,当放入电池时,ADC0809即通过数据口向AT89C51传送检测到的电池两端电压信息,经过数据处理后,AT89C51根据所接收到的电压信息选择合适的充电模式。由于芯片只能接收0V~5V的电压信息,因此在充电电池的两端并联两个串联电阻(阻值相等且很大),这样检测到的电压即为电池电压的一半,乘以二即可得出电池电压。若电池电压低于4.7V,则启用停止控制,充电器不工作。若电池电压大于7.3V或小于5.2V,说明蓄电池曾经过度放电,为避免对蓄电池充电电流过大,造成热失控,对蓄电池实行稳定小电流涓流充电,激活蓄电池。此时单片机P1.2口发出高电平信号,启动涓流充模式。同样,当电压在5.2V~6V时,P1.0口置为高电平,同时调用脉冲控制,控制开关的闭合,以恒流充电模式对电池进行充电。当电压在6V~7.3V 之间时,P1.1口置为高电平,启动恒压充电模式。整个充电过程为3个小时,当电路工作三小时后,系统自动掉电,终止充电过程。



使用特权

评论回复
板凳
hudi008|  楼主 | 2014-5-2 23:54 | 只看该作者
本设计利用8155作为AT89C51的I/O扩展接口,连接四个数码管显示电路。LED显示采用共阴极,段选码由8155PB口提供,位选码由 PA口提供,当启用涓流充电模式时(P1.2置高),第一位数码管显示;当启用恒流充电模式时(P1.0置高),位选字右移,第二位数码管显示,当启用恒压充电模式时(P1.1置高),位选字右移,第三位数码管显示。当停止充电时,P1.0、P1.1、P1.2口均置为低电平,第四位数码管显示。若对程序进行稍许修改,也可以让显示电路显示当前充电电压值,从而更有效的对电池进行充电。

智能充电器软件设计与实现

软件整体设计

因为不同种类的电池有不同的充电特性,所以充电器要能根据具体电池的类型,控制不同的充电状态。在充电的关键阶段采用了模糊控制方法,这些通过程序控制实现。充电总体流程图如图2所示。



使用特权

评论回复
地板
hudi008|  楼主 | 2014-5-2 23:54 | 只看该作者
程序具体实现过程为:单片机首先进行初始化,然后对蓄电池的电压进行测量,产生电压偏差和变化率信号,偏差及变化率信号进入模糊控制器后,经过模糊处理,输出电流信息,从而适时和正确地控制充电方式和过程。在充电过程中不断检测电池是否充满,当检测己经充满时,提示用户电池已充足,充电器自动进入浮充维护状态。模糊处理和终止条件的判决为整个智能充电器的关键,关系着充电器性能的好坏。

系统的软件设计采用模块式结构,主要由初始化程序、充电方式设置模块、预处理模块、A/D转换模块、定时模块等部分组成。其中,充电方式设置模块用于设置电池类型和充电方式,A/D转换模块用于检测电池的电压,以确定是否终止充电过程,定时模块用于确定充电的时间监测。

系统软件流程采用中断工作方式, 软件功能的主要控制步骤均包括在定时中断程序中,包括监控电压、测量电流及电池参数检测等部分在开始充电时,对系统进行初始化,其中包括AT89C51单片机各个端口初始化、堆栈指针初始化、寄存器初始化、中断设定和根据电池
类型设定它所能够承受的最大电压V,标准的容量值及对电压、电流采样的时间间隔△T。为了使测定结果更精确,采样频率要尽量高。系统初始化后开定时器中断服务程序,由于程序中利用了定时中断,使得定时控制很方便。

使用特权

评论回复
5
hudi008|  楼主 | 2014-5-2 23:54 | 只看该作者

主程序模块根据系统相应的状态条件控制并调用相应的模块。同时,其他各模块之间也根据系统当前状态相互调用。在初始化程序模块中,设置了预处理功能,主要是设置A/D转换参数和通道,检测电池的端电压。将检测数据同理论经验值比较,判断电池的类别以及是否连接正确。对端电压低的电池,采用短时间的脉动电流充电,这样有利于激活电池内的化学反应物质,部分恢复受损的电池单元。

电池的端电压检测硬件上使用单片机的片上高精度A/D模块,软件控制采用中断方式,这样可节省单片机在A/D转换期间的等待时间。端电压检测的数据,比较是否满足充电终止条件,及时修改单片机的输出参数,控制充电电流的大小。

使用特权

评论回复
6
hudi008|  楼主 | 2014-5-2 23:55 | 只看该作者
涓流短时充电及浮充电

充电器开始工作后,首先检测蓄电池的电池电压,若电池电压低于4.7V,充电器不工作。若电池电压大于7.3V或小于5.2V,说明蓄电池曾经过度放电,为避免对蓄电池充电电流过大,造成热失控,对蓄电池实行稳定小电流涓流充电,激活蓄电池。软件流程图如下:



具体实现程序如下:

READ : MOV A、P0,将P0口的值送入累加器A

CJNE A、#84H、REL,若(A)≠5.2V则跳到REL

REL : JNC HL;大于5.2V转移到HL

SETB P1.2,将P1.2口置为高位

SETB P1.3,脉冲控制

同时,当充电时间到两个半小时时,进入浮充电阶段。该阶段主要用来补充蓄电池自放电所消耗的能量,此时标志着充电过程结束。

使用特权

评论回复
7
hudi008|  楼主 | 2014-5-2 23:55 | 只看该作者
恒流充电

在涓流充电阶段,电池电压开始上升,当电池电压上升到能接受大电流充电的阈值时,则转入恒流充电阶段。该阶段为大电流恒流充电,电流值为I2 ,因蓄电池容量而异,一般I2 约为0.1C(C 为蓄电池组的容量),持续时间为T2,在恒流充电状态下,不断检测电池端电压,当电池电压达到饱和电压时,恒流充电状态终止。

本设计采用外部检测设备将数据送入P0口,若电压在5.2V~6V之间则P1.0口置为高电平,发送信号进行恒流充电模式。在恒流充电过程中,采用脉冲控制充电电流的占空比,以此来控制开关的开断,实现充电电流的恒定。软件流程图如下:



使用特权

评论回复
8
hudi008|  楼主 | 2014-5-2 23:55 | 只看该作者
具体实现程序如下:



READ : MOV A、P0,将P0口的值送入累加器A

CJNE A 、#99H 、REL,若(A)≠6V则跳到REL

REL : JNC HY,大于6V转移到HY

SETB P1.0,将P1.0口置为高位

SETB P1.3,脉冲控制

充电电路在实现涓流充电和恒流充电方法是要使用脉冲充电控制来进行充电,有效的调整电池充电过程当中的占空比.其中脉冲控制的实现程序如下:



PWMH DATA 30H,高电平脉冲的个数

PWM DATA 31H ,PWM周期

COUNTER DATA 32H

TEMP DATA 33H

INTT0 : PUSH PSW ,现场保护

PUSH ACC

INC COUNTER ,计数值加1

MOV A,COUNTER

CJNE A , PWMH,INTT01,如果等于高电平脉冲数 CLR P1.0 ,P1.0变为低电平

使用特权

评论回复
9
hudi008|  楼主 | 2014-5-2 23:56 | 只看该作者
CLR P1.2

AJMP INTT0

INTT01 : CJNE A,PWM,INTT02,如果等于周期数

MOV COUNTER, #01H ,计数器复位

SETB 08H,P1.0为高电平

SETB P1.2

INTT02 : POP ACC,出栈

POP PSW

RETI

END

使用特权

评论回复
10
hudi008|  楼主 | 2014-5-2 23:56 | 只看该作者
恒压充电

该阶段为恒压充电,电压值为7.3V,它是蓄电池节数与蓄电池温度的函数,这时充电电流逐渐减小,恒压充电时,保持充电电压不变。充电电流不断下降,当充电电流下降到恒流状态下充电电流的1/10 时,终止恒压充电。电路实现方法为:外部检测设备将结果送入P0口,系统检测送入的数据,若电池电压在大于6V时采用恒压充电模式,即P1.1口置高位进行恒压充电模式。具体实现程序如下:



READ : MOV A,P0,将P0口的值送入累加器A

CJNE A,#0B7H,REL ,若(A)≠7.3V则跳到REL

REL : JNC STOP ,大于7.3V转移到STOP



使用特权

评论回复
11
hudi008|  楼主 | 2014-5-2 23:56 | 只看该作者
A/D转换模块

由于本设计用到了电压实时监测,因此需要对其发出的信号进行A/D转换,在电路中采用了ADC0809转换器,对模拟信号进行采集与转换。具体实现程序如下:

START: MOV R0 ,#30H ,RAM缓冲区地址设初值

MOV DPTR , #0FEF8H,通道地址寄存器设初值 MOVX @DPTR A ,启动A/D转换

MOV R5,#0AH ,延时等待

DLX: DJNZ R5,DLX

WAIT : JB P3.2 ,WAIT,等待A/D转换结束

MOVX A ,@DPTR,读取A/D转换结果

MOV @R0,A ,保存A/D转换结果

ACALL DATADSP,数据的数字处理

LJMP START

使用特权

评论回复
12
hudi008|  楼主 | 2014-5-2 23:57 | 只看该作者
软件流程图如下所示:



使用特权

评论回复
13
hudi008|  楼主 | 2014-5-2 23:57 | 只看该作者
总结

采用单片机和充电集成电路进行充电器的设计,不但能够实现对一般的蓄电池进行充电,而且还能够实现相应的过压和时间控制,从而可以充分发挥蓄电池的性能,延长电池的使用寿命,并避免简易充电器在充电时可能对电池造成损害的情况发生,具有一定的智能功能,符合目前的环境保护潮流。

使用特权

评论回复
14
woshigeshuai| | 2014-5-3 10:23 | 只看该作者
这图是怎么回事,为什么看起来这么乱

使用特权

评论回复
15
mmuuss586| | 2014-5-3 11:32 | 只看该作者

又没PDF资料啊,发份PDF资料呗

使用特权

评论回复
16
qq986433936| | 2014-5-3 11:41 | 只看该作者
现在还有人用ADC0809这个古老的芯片做设计吗?

使用特权

评论回复
17
261854681| | 2014-5-3 21:01 | 只看该作者
汇编啊汇偏

使用特权

评论回复
18
navy_yang| | 2014-5-4 11:17 | 只看该作者
不知道是在哪儿拷贝来的,还这么模糊。没有任何价值。

使用特权

评论回复
19
arto| | 2014-5-5 11:44 | 只看该作者
是用单片机控制 开关电源电路吗? 用开关电源,要求开关电源频率在300K以上,单片机很难输出300KHz以上频率。

不用开关电源电路,充电电流太小,没有实用价值。

使用特权

评论回复
20
angerbird| | 2014-5-10 15:49 | 只看该作者
采用AT89C51单片机芯片作为充电过程的控制芯片进行电路设计,实现A/D转换和显示电路,并根据外部电路检测到的电池电压信息选择正确的充电模式,实现在涓流、恒流、恒压及浮充电模式之间的智能转换。

使用特权

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

本版积分规则

251

主题

9632

帖子

11

粉丝