智能充电器论文

更新时间:2023-03-08 08:39:34 阅读量: 综合文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

基于MAX1898的智能充电器设计

组员: 刘润江 李怀胜 李聪

邓伟伦 丘晓勤 江俏明

张一鸣 何战峰

指导老师:周永明、洪远泉

在人们日常工作和生活中,充电器的使用越来越广泛。从随身听到数码相机,从手机到笔记本电脑,几乎所有用到电池的电器设备都需要用到充电器。充电器为人们的外出旅行和出差办公提供了极大的方便。

单片机在电池充电器领域也有着广泛的应用,利用它的处理控制能力可以实现充电器的智能化。充电器各类繁多, 但从严格意义上讲, 只有单片机参与处理和控制的充电器才能称为智能充电器。

1 设计思路分析

要实现智能化充电器,需要从下面两个方面着手。

(1)充电的实现。它包括两部分:一是充电过程的控制;二是需要提供基本的充电电压。 (2)智能化的实现。在充电器电路中引入单片机的控制。

1.1 为何需要实现充电器的智能化

充电器实现的方式不同会导致充电效果的不同。

由于充电器多采用大电流的快速充电法,在电池充满后如果不及时停止会使电池发烫,过度的充电会严重损害电池的寿命。 一些低成本的充电器采用电压比较法,为了防止过充,一般充电到90%就停止大电流快充,而采用小电流涓流补充充电。 手机电池的使用寿命和单次使用时间与充电过程密切相关。锂电池是手机最为常用的一种电池,它具有较高的能量重量比、 能量体积比、 具有记忆效应,可重复充电多次,使用寿命较长,价格也越来越低。 锂电池对于充电器的要求比较苛刻,需要保护电路。 为了有效利用电池容量,需将锂电池充电至最大电压,但是过压充电会造成电池损坏, 这就要求较高的控制精度。另外, 对于电压过低的电池需要进行预充,充电器最好带有热保护和时间保护,为电池提供附加保护。

一部好的充电器不但能在短时间内将电量充足,而且还可以对电池起到一定的维护作用,修复由于使用不当造成的记忆效应,即容量下降(电池活性衰退)现象。 设计比较科

学的充电器往往采用专用充电控制芯片配合单片机控制的方法。 专用的充电芯片具备业界公认较好的-△V 检测,可以检测出电池充电饱和时发出的电压变化信号, 比较精确地结束充电工作,通过单片机对这些芯片的控制,可以实现充电过程的智能化,例如, 在充电后增加及时关断电源、 蜂鸣报警和液晶显示等功能。充电器的智能化可以缩短充电的时间,同时能够维护电池,延长电池使用寿命。

1.2 如何选择电池充电芯片

目前市场上存在大量的电池充电芯片,它们可直接用于进行充电器的设计。在选择具体的电池充电芯片时,需要参考以下标准。 ● 电池类型:不同的电池(锂电池、镍氢电池、镍镉电池等)需选择不同的充电芯片。 ● 电池数目:可充电池的数目。

● 电流值:充电电流的大小决定了充电时间。 ● 充电方式:是快充、慢充还是可控充电过程。

本例要实现的是手机的单节锂离子电池充电器,要求充电快速且具有优良的电池保护能力,据此选择 Maxim 公司的 MAX1898 作为电池充电芯片。

MAX1898 配合外部 PNP 或 PMOS 晶体管可以组成完整的单节锂电池充电器。MAX1898 提供精确的恒流/恒压充电,电池电压调节精度为±0.75% ,提高了电池性能并延长了电池使用寿命。充电电流可由用户设定,采用内部检流, 无须外部检流电阻。MAX1898 提供了充电状态的输出指示、输入电源是否与充电器的连接的输出指示和充电电流指示。MAX1898 还具有其他一些功能,包括输入关断控制、 可选的充电周期重启(无须重新上电)、 可选的充电终止安全定时器和过放电电池的低电流预充。 MAX1898 的关键特性如下。

● 简单、 安全的线性充电方式。

● 使用低成本的 PNP 或 PMOS 调整元件。 ● 输入电压: 4.5~12V。 ● 内置检流电阻。 ● ±0.75%电压精度。 ● 可编程充电电流。 ● 输入电源自动检测。 ● LED充电状态指示。 ● 可编程安全定时器。 ● 检流监视输出。

● 可选/可调节自动重启。 ● 小尺寸μMAX封装。

1.3 MAX1898的充电工作原理

充电芯片MAX1898的内部电路包括输入电流调节器、电压检测器、充电电流检测器、定时器、温度检测器和主控制器。

输入电流调节器用于限制电源的总输入电流,包括系统负载电流与充电电流。当检测到输入电流大于设定的门限电流时,通过降低充电电流从而控制输入电流。 因为系统工作时电源电流的变化范围较大, 如果充电器没有输入电流检测功能,则输入电源必须能够提供最大负载电流与最大充电电流之和,这将使电源的成本增高、体积增大,而利用输入限流功能则能够降低充电器对直流电源的要求,同时也简化了输入电源的设计。 MAX1898 外接限流型充电电源和 P 沟道场效应管,可以对单节锂电池进行安全有效的快充,其最大的特点是:在不使用电感的情况下,仍能做到很低的功率耗散,可以实现预充电,具有过压保护和温度保护功能,最长充电时间的限制可为锂电池提供二次保护。 MAX1898 的典型充电电路如图1 所示。 电路具体说明如下。

(1)输入电压范围为4.5~12V。锂电池要求的充电方式是恒流恒压方式,电源的输入需要采用恒流恒压源,一般可采用直流电源外加变压器。

图 1 MAX1898的典型充电电路

(2)通过外接的场效应管提供锂电池的充电接口。

(3)通过外接的电容CcT来设置充电时间tCHG。这里的充电时间指的是快充时的最大充电时间,它和定时电容CcT的关系如下式所示。

CCT=34.33×

tCHG

式中,tCHG的单位为小时,CcT的单位为nF。

大多数情况下,快充时最大充电时间不超过3小时,因此常取CcT为100nF。

(4)在限制电流的模式下,通过外接的电阻RSET来设置最大充电电流IFSTCHG,关系如下式所示。

=IFSTCHG1400RSET

式中,RSET的单位为Ω,IFSTCHG的单位为nF。

当充电电源和电池在正常的工作温度范围内时,插入电池将启动一次充电过程。平均

的脉冲充电电流低于设置的快充电流的20%,或者充电时间超出片上预置的最大充电时间时,充电周期结束。 MAX1989 能够自动检测充电电源,没有电源时自动关断以减少电池的漏电。启动快充后,打开外接的P 型场效应管,当检测到电池电压达到设定的门限时进入脉冲充电方式,P 型场效应管打开的时间会越来越短。充电结束时,LED 指示灯将会呈现周期性的闪烁,具体的闪烁含义如表1所示。

表1 MAX1898典型充电电路的LED指示状态说明

充电状态 电池或充电器没有安装 快充或脉冲浮充 快充结束或初始化 充电结束 LED指示状态 关闭 亮 LED以2Hz频率闪烁 LED闪烁周期为4s 2 硬件电路设计

硬件电路设计主要围绕充电芯片MAX1898展开,而单片机控制部分的电路较为简单。

2.1 主要器件

本例的核心器件是MAX1989。MAX1989可对所有化学类型的Li+电池进行安全充电,它具有高集成度,在小尺寸内集成了更多功能,尽可能多地覆盖了基本应用电路, 只需要少数外部元件。

MAX1989为10引脚、超薄型的μMAX封装, 其引脚分布如图2所示。

图2 MAX1898引脚分布图

其引脚功能如下。

IN(1 脚):传感输入,检测输入的电压或电 流。

CHG(2 脚):充电状态指示脚,同时驱动LED。

EN/OK(3 脚):使能输入脚/输入电源“好”输出指示脚。EN为输入脚,可以通过输入禁止芯片工作;OK为输出脚,用于指示输入电源是否与充电器连接。

ISET(4 脚):充电电流调节引脚。通过串接一个电阻到地来设置最大充电电流。 CT(5 脚):安全充电时间设置引脚。接一个时间电容来设置充电时间,电容为100mF时,几乎为3个小时,此引脚直接接地将禁用此功能。

RSTRT( 6 脚):自动重新启动控制引脚。当此引脚直接接地时,如果电池电压掉至基准电压阈值以下200mV,将会重新开始一轮充电周期。此引脚通过电阻接地时,可以降低它的电压阈值。此引脚悬空或者CT 引脚接地(充电时间设置功能禁用)时,自动重新启动功能被禁用。

BATT(7 脚):电池传感输入脚,接单个Li+ 电池的正极。此引脚需旁接一个大电解电容到地。

GND(8 脚):接地端。 DRV(9 脚):外部晶体管驱动器,接晶体管的基极。 CS(10 脚):电流传感输入,接晶体管的发射极。

2 . 2 电路原理图及说明

硬件电路由单片机电路、电压转换及光耦隔离电路、充电控制电路3部分组成。单片机部分的电路原理图如图4所示。

图4 基于 MAX1898 的智能充电器电路单片机部分原理图

图 4 中,U1为单片机STC89C52,工作在11.0592MHz时钟;U2为蜂鸣器,蜂鸣器由单片机的P2.1肛却控制发出报警声提示;单片机的P2.0脚输出控制光耦器件,在需要的时候可以及时关断充电电源: 单片机的外部中断0 由充电芯片MAX1898的充电状态输出信号/CHG经过反相后触发。

图 5 所示的为电压转换及光耦隔离部分电路的原理图。

图 5 基于MAX1898的智能充电器电路电压转换及光耦隔离部分原理图

U3为输出+5V的电压转换芯片LM7805,它将12V的输入电压转换为固定的5V 输

出,U4为光耦隔离芯片6N137 ,其输入为LM7805 产生的 5V 电压,输出为经过隔离的5V电压,U4的2脚和单片机的P2.0相连,由单片机控制适时地关闭电电源。

图 6 所示的为充电控制部分的电路原理图,其核心器件为充电芯片MAX1898,其充电状态输出引脚/CHG经过74LS04反相后与单片机INT0相连,触发外部中断,LED-R 为红色发光二极管,红灯表示电源接通;LED-G为绿色发光二极管,绿灯表示处于充电状态。Q 1 为 P 沟道的场效应管,由MAX1898提供驱动。图 6 中,R4为设置充电电流的电阻,阻值为2.8kΩ,设置最大充电电流为 500mA; C11为设置充电时间的电容, 容值为100nf设置最大充电时间为3小时。

在MAX1898和外部单片机的共同作用下,实现了如下的充电过程。 ● 预充

在安装好电池之后,接通输入直流电源,当充电器检测到电池时将定时器复位,从而进入预充过程,在此期间充电器以快充电流的 10%给电池充电, 使电池电压、温度恢复到正常状态。预充时间由外接电容CcT确定(100nF时为45分钟), 如果在预充时间内电池电压达到2.5V,且电池温度正常,则充电进入快充过程;如果超过预充时间后,电池电压仍低于2.5V,则认为电池不可充电,充电器显示电池故障,LED指示灯闪烁。 ● 快充

快充过程也称为恒流充电,此时充电器以恒定电流对电池充电。恒流充电时,电池电压缓慢上升,一旦电池电压达到所设定的终止电压, 恒流充电终止,充电电流快速递减,充电进入满充过程。

图 6 基于MAX1898的智能充电器电路充电控制部分原理图

● 满充

在满充过程中,充电电流逐渐衰减,直到充电速率降到设置值以下,或满充时间超过,转入顶端截止充电。顶端截止充电时, 充电器以极小的充电电流为电池补充能量。由于充电器在检测电池电压是否达到终止电压时有充电电流通过电池内阻, 尽管在满充和顶端截止充电过程中充电电流逐渐下降, 减小了电池内阻和其他串联电阻对电池端电压的影响, 但串联在充电回路中的电阻形成的压降仍然对电池终止电压的检测有影响。 一般情况下, 满充和顶端截止充电可以延长电池5%~10%的使用时间。 ● 断电

当电池充满后,MAX1898芯片的2引脚/CHG发送的脉冲电平会由低变高,这将会被单片机检测到,引起单片机的中断,在中断中,如果判断出充电完毕,则单片机将通过P2.0口控制光耦6N137,切断LM7805向MAX1898的供电,从而保证芯片和电池的安全,同时也减小功耗。 ● 报警

当电池充满后,MAX1898芯片本身会熄灭外接的LED绿灯。但是,为了安全起见,单片机在检测到充满状态的脉冲后,不仅会自动切断MAX1898芯片的供电, 而且会通过蜂鸣器报警,提醒用户及时取出电池。当充电出错时,MAX1898芯片本身会控制LED绿 灯以1.5Hz左右的频率闪烁,此时不要切断芯片的供电,要让用户一直看到此提示。

2.3 单片机接口说明

1、CHG:MAX1898充电状态输出,连接到单片机的INT0,单片机判断充电完毕后,通过P1.2引脚切断MAX1898的电源输入。

2、Gate:连接单片机的P1.2引脚,当单片机判断充电完毕后,P1.2管脚输出低电平,光耦不导通,从而切断MAX1898的电源输入。 3、Beep:单片机控制蜂鸣器的引脚。 4、EN/OK:MAX1898充电使能。

3 软件设计

充电电器的充电过程主要由MAX1898控制,而单片机芯片主要是对电池起保护作用。本例的软件设计较为简单,其主要功能如下。

当MAX1898完成充电时,其/CHG引脚会产生由低到高的跳变,该跳变引起单片机的INT0中断。/CHG输出为高存在3种情况:一是电池不在位或无充电输入,二是充电完毕,三是充电出错(此时,实际上/CHG会以1.5Hz频率反复跳变)。显然前两种情况单片机都可以直接控制光耦切断充电电源,所以,程序中只要区别对待第 3 种充电出错的情况即可。因此,在此中断中,如果判断出不是充电出错,则控制P2.0脚切断电源,控制P2.1脚启动蜂鸣器报警。

3 . 1 程序流程

单片机控制智能充电器工作的程序流程如图7所示。

图 7 基于MAX1989的智能充电器程序流程图

3.2 程序功能

基于单片机STC89C52和MAX1898的智能电池充电器的程序需要完成以下的功能:

1通过CHG信号引起INT0外中断。

2在两次中断中使用T0计数,判断是否充电完毕。

3如果充电完毕,则控制P1.2和P1.3引脚,输出低电平。 4在LCD1602上显示充电剩余时间和充电状。

3 . 3 程序说明

主要程序代码及其说明(见注释语句)如下。 uint8 t1_count20 = 0;//20进制计数器

uint8 second=0,minute=0,hour=0;//时分秒计数器

uint8 second_re=0,minute_re=0,hour_re=0;//记录时间剩余 uint16 t0_count = 0; //定时器0中断的计数器清零 uint16 int0_count=0; // 产生外部中断0的计数器清零 /* 初始化 */ void Init(void) { init_1602(); //液晶初始化 TMOD = 0x11; // 定时器T0 T1 方式1,T0 T1 为16位定时/计数器 PT0 = 1; // T0中断设为高优先级 ET0 = 1; // 打开T0中断 TH1 = 0x4C; //定时器T1初值 50ms定时 晶振11.0592MHz TL1 = 0x00; ET1 = 1; // 打开T1中断 TR1 = 1; //运行T1 IT0 = 1; // 外部中断0设为边沿触发 EX0 = 1; // 打开外部中断0 GATE = 0; // 光耦正常输出电压 BEEP = 1; // 关闭蜂鸣器 EN_OK = 1; //使能MAX1898 EA = 1; // 打开所有的中断 }

void main()

{ Init(); //初始化 //Used 液晶第一行显示初始化 gotoxy_1602(0,0); write_str_1602(\ gotoxy_1602(0,7); write_num_1602(hour); //显示时 write_data_1602(':'); gotoxy_1602(0,10); write_num_1602(minute); //显示分 write_data_1602(':'); gotoxy_1602(0,13); write_num_1602(second); //显示秒 //remain 液晶第二行显示初始化 gotoxy_1602(1,0); write_str_1602(\

hour_re = 2 - hour; //计算时剩余 gotoxy_1602(1,7);

write_num_1602(hour_re); //显示时剩余 write_data_1602(':');

minute_re = 59 - minute; //计算分剩余 gotoxy_1602(1,10);

write_num_1602(minute_re); //显示分剩余 write_data_1602(':');

second_re = 59- second; //计算秒剩余 gotoxy_1602(1,13);

write_num_1602(second_re); //显示秒剩余

while(1) // 等待外部的控制信号 { if(t1_count20 >= 20) //定时1S时间到,1s = 50ms*20 { t1_count20=0; second++; if(second==60) //秒调整,分加1 { second=0; minute++; if(minute==60)//分调整,时加1 { minute=0; hour++; if(hour==24) //时调整 { hour=0; } gotoxy_1602(0,7); write_num_1602(hour); //时更新

hour_re = 2 - hour; //计算时剩余 gotoxy_1602(1,7); write_num_1602(hour_re); //显示时剩余 }

gotoxy_1602(0,10);

write_num_1602(minute); //分更新

minute_re = 59 - minute; //计算分剩余 gotoxy_1602(1,10); write_num_1602(minute_re); //显示分剩余 }

gotoxy_1602(0,13);

write_num_1602(second); //秒更新 second_re = 59- second; //计算秒剩余 gotoxy_1602(1,13); write_num_1602(second_re); //显示秒剩余 } } }

/* 定时器1中断服务子程序 */ void Timer1Interrupt(void) interrupt 3 {

TH1 = 0x4C; //定时器T1初值 50ms定时 晶振11.0592MHz TL1 = 0x00; t1_count20++; //20进制计数器加1 }

/* 外部中断0服务子程序 */ void int0() interrupt 0 using 1 { if (int0_count==0) //外部控制信号 { TH0 = 0x0EE; // 5ms定时 11.0592MHz TL0 = 0x00; TR0 = 1; // 启动定时/计数器0计数 t0_count = 0; // 产生定时器0中断的计数器清零 } int0_count++; }

/* 定时器0中断服务子程序 */ void timer0() interrupt 1 using 1 { t0_count++; // 定时器0中断的计数器加1 TR0 = 0; // 停止计数 TH0 = 0x0EE; //定时器T0初值 5ms定时 晶振11.0592MHz TL0 = 0x00;

if ((t0_count>550)&&(t0_count<1000)) // 外部中断0产生3s~5s的信号 {

if (int0_count==1){ // 标志,则认为充电完毕 EN_OK = 0; //关闭MAX1898 GATE = 1; // 关闭充电电源 BEEP = 0; // 打开蜂鸣器报警 } else { // 否则即是充电出错 GATE = 0; BEEP = 1; } ET0 = 0; // 关闭T0中断 EX0 = 0; // 关闭外部中断0 int0_count = 0; t0_count = 0; } else

TR0 = 1; // T0计数 }

4 总结

本系统采用MAX1898作为系统的充电控制器件,STC89C52根据检测到的MAX1898的输出信息,完成对充电过程的控制和报警。但是由于我们的水平有限,所以该设计还有许多不尽如人意的地方,比如在充电性能方面,还有待改善。

在本例设计过程中,需着重把握以下几点。

(1)预充、快充、满充等充电方式的工作原理。

(2)MAX1898的充电状态指示输出信号/CHG在本例中的应用。

(3)MAX1898外围电路的设计, 其中包括设置充电电流的电阻和充电时间的电容数值的选取。

(4)如何在单片机程序中判断出充电完成还是充电出错,并做出相应的处理。

经过努力,我们基本完成了智能充电器的设计和制作,检验了平时学习的成果,不但实践能力增强许多而且在理论上也有了更深的认识,同时也提高了我们的团结协作能力。同学之间互相帮助,有什么不懂的大家在一起商量,听听不同的看法对我们更好的理解知识,所以,在此,我向各位老师及同学们表示我最衷心的感谢!

本文来源:https://www.bwwdw.com/article/ac23.html

Top