1、采用PCF8591对充入锂电池的电压进行检测,并在到达一定的值进行报警;报警电路:通过蜂鸣器对MAX1898充电情况做相应的报警,并从24C02中读取存入里面的歌曲。3.1.1 单片机模块电路和报警电路设计单片机模块电路主要是由是以STC89C51为核心的最小系统电路,因为其具有广泛的兼容性和强大的及时控制功能,特别适合于许多较为复杂的控制应用场合。蜂鸣器为系统进行报警提示,电路如图3.1.1.图 3.1.1 单片机控制电路3.1.2 充电器电路充电控制电路设计 MAX1898外接限流型充电电源和P沟道场效应管或PNP三极管,可以对锂电池进行平安有效的快充,其最大的特点是在不使用电感的情况下仍
2、能保持很低的功率耗散,可以实现预充电,具有过压保护和温度保护功能以及为锂电池提供二次保护。电路如图3.1.2.1和如图3.1.2.2图 3.1.2.1 充电器电路充电控制电路图 3.1.2.2 继电器充电控制电路3.1.3 充电器电压检测电路设计 利用MAX1898进行检测的同时,还要通过锂电池两端的电压进行检测,利用PCF8591对电路进行AD转换,通过I2C进行读取。电路如图3.1.3.图 3.1.3 充电器电压检测电路3.1.4 报警电路电路设计 利用蜂鸣器读取24C02中存入的歌曲,作为报警电路。电路如图3.1.4. 图 3.1.4 报警电路3.2 总电路设计基于MAX1898智能充电
3、芯片,加上51系列单片机的强大功能使得智能电池充电器的设计更加模块化,也使得是电池充电器更加智能化。如:电池预充、充电保护、自动断电和充电完成报警提示功能。其各模块电路如下列图3.2.1所示.图 3.2.1 智能充电器总电路4软件设计4.1 程序设计概述1充电器的充电过程主要由MAX1898和单片机STC89C51控制,而单片机主要是对电池充电器控制作用。主要功能介绍如下:当MAX1898完成充电时,其/CHG引脚会产生由低电平到高电平的跳变,该跳变引起单片机INT0中断。/GHG输出为高电平时有以下3种情况:电池不在位或者无充电输入;充电完毕;充电出错此时实际上/CHG会以1.5HZ的频率反
4、复跳变;显然前面2种情况都可以直接通过继电器切断充电电源,所以程序上着重于第三种情况的判断。(2)I2C使用4.2 程序流程图4.2.1 智能充电器的控制图4.2.1单片机初始化流程图单片机控制智能充电器的控制流程如图4.2.2,其中包括外部中断效劳子程序和定时器效劳子程序。 图4.2.2 单片机控制智能充电器的控制流程4.2.2 I2C使用(1)PCF8591的AD转换224C02的存储音乐 系统源程序见附录。5性能测试与分析下面给出充电过程中记录的数据,如下表5.1所示:表5.1充电过程数据表测量次数电池电压V充电电流mA 电阻13.9855.10.072 23.9653.10.075 3
5、52.7452.50.076 551.70.077 649.80.080 745.80.087 843.40.092 941.40.097 104.0339.90.101 1138.60.104 1237.80.107 134.0532.50.125 1431.60.128 15290.140 2028.70.141 254.0727.60.147 304.1319.490.212 3518.890.219 4018.60.222 454.1518.470.225 504.1715.940.262 554.290.410.725 604.310.3911.051 其绘制图形如下: 参考MAX1
6、898伏安特性折线图: 从上可以看出随之充电的进行,电压值从3.68伏开始不断递增,而电流值不断的减小,根据安培定理,得出其阻值不断的增大,电压到达一定的值后,电流会到达最小值,即充电接近完成。但是充电时间和参考折线图不一致,和理论值也不一制。6 实验总结 本设计以MAX1898为核心,利用单片机为控制元件实现智能手机充电器的设计。通过以上智能充电器的设计,使我进一步熟悉了MAX1898的工作原理和使用方法,更深入的了解了STC89C51的定时/计数器、中断系统的应用,熟悉了单片机嵌入式控制系统的设计思路。本设计使得课上所学得到充分的应用,加强了自身摄取新知识的能力,也为不断完善自己奠定了根底
7、。理论来源于实践而高于实践,没有亲力亲为是不能领会其魅力的。这次设计进一步提高了自己的动手制作能力,也使得编程能力得到锻炼,取得不小的收获,同时也发现了自身所存在的缺乏。 对于本次设计制作,还有很多可以提高的地方。1. 利用PCF8591对电池电压进行采集,通过计算得出电池流入的电流,并在LCD1602显示出来,到达可视化的控制。2. 提高充电速率。3.提供电源的电压要稳定。7参考文献1 MAX1898.Data Sheet.2 STC89C51.Data Sheet.3 PCF8591.Data Sheet.4 戴佳,戴卫恒,刘博文,51单片机C语言应用程序设计实例精讲M,电子工业出版社/.
8、北京,2022.12.附录一 程序源代码程序源代码:# include absacc.hstdio.hmath.h# define uchar unsigned char # define uint unsigned intuchar code HI_LIST=0,226,229,232,233,236,238,240,241,242,245,246,247,248;uchar code LO_LIST=0,4,13,10,20,3,8,6,2,23,5,26,1,4,3;uchar code table=0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f
9、,0x6f;uint t_count,int0_count;uchar side;sbit P10=P10; /数码管显示sbit P11=P11; sbit P12=P12;sbit P13=P13;sbit P20=P20; /蜂鸣器输出引脚sbit P21=P21; /继电器输出引脚sbit SCL=P23;sbit SDA=P24; void Start() /开始总线 SDA=1;SCL=1;SDA=0;SCL=0; void Stop() /结束总线 /SCL=0;void Ack() /发(写) ACK0 /可省略 /必须置1,释放总线void NoAck() /发(写) ACK
10、1 void delay(uint n) /延时约Nms的时间 uint i;while(n-) for(i=0;i100;i+);bit TestAck() /测试(读) ACK bit ErrorBit; SDA=1; /释放总线 SCL=1; ErrorBit=SDA; SCL=0; return(ErrorBit); / 0应答,1非应答/写入 8 个 bit 到 IIC器件 Write8Bit(unsigned char input) unsigned char temp;for(temp=8;temp!=0;temp-) SDA=(bit)(input&0x80); input=i
11、nput1;uchar Read8Bit() /读8个字节unsigned char temp,rbyte=0; rbyte=rbyte600)&(t_count1000) /外部中断0产生3s5s的信号 if(int0_count=1) /标志,认为充电完毕 、 P21=0; /关闭充电电源 P20=0; /翻开蜂鸣器报警 /否那么即是充电出错 else P21=1; P20=1; ET0=0; /关闭T0中断 EX0=0; /关闭外部中断0 int0_count=0; else /t0计数/* 主函数*/void main() uchar i; TMOD=0X11; /初始化 EA=1;
12、ET0=1; ET1=1; IT0=1; TR1=1; EX0=1; while(1) display(); if(P20=0) for(i=0;14; side=Gets_24c02(i); TR1=1; 附件二 元件清单智能手机充电器元件清单STC89C51排阻4.7KMAX1898模块(DIP)电阻1KPCF8951电阻10K74LS04电阻2K24C02(DIP直插式1电阻51晶振12MHZ)电阻100锂电池电阻2.8K蜂鸣器电容20PF4位共阴数码管电容1.1uFPNP管8550电容1uF二极管1N4007电容0.1uF红色发光二极管电容220uF绿色发光二极管电解电容10uF按键开关电容100nF继电器杜邦线
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1