欢迎来到冰点文库! | 帮助中心 分享价值,成长自我!
冰点文库
全部分类
  • 临时分类>
  • IT计算机>
  • 经管营销>
  • 医药卫生>
  • 自然科学>
  • 农林牧渔>
  • 人文社科>
  • 工程科技>
  • PPT模板>
  • 求职职场>
  • 解决方案>
  • 总结汇报>
  • ImageVerifierCode 换一换
    首页 冰点文库 > 资源分类 > DOCX文档下载
    分享到微信 分享到微博 分享到QQ空间

    基于单片机的锂离子电池充电器含程序和电路图.docx

    • 资源ID:14145374       资源大小:157.11KB        全文页数:17页
    • 资源格式: DOCX        下载积分:1金币
    快捷下载 游客一键下载
    账号登录下载
    微信登录下载
    三方登录下载: 微信开放平台登录 QQ登录
    二维码
    微信扫一扫登录
    下载资源需要1金币
    邮箱/手机:
    温馨提示:
    快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。
    如填写123,账号就是123,密码也是123。
    支付方式: 支付宝    微信支付   
    验证码:   换一换

    加入VIP,免费下载
     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    基于单片机的锂离子电池充电器含程序和电路图.docx

    1、基于单片机的锂离子电池充电器含程序和电路图聚合物锂离子电池的充电闭环设计摘要:本课题是利用手机电池的充电曲线以及电池的实际情况为依据的闭环充电过程。利用检测电路实时检测电池的端电压、温度,采用开路电压法进行估算电池容量,然后将测得参数显示在PC机上,最后利用控制电路控制充电方式。实现电池不同容量对应不同充电方式的闭环充电过程。关键字:手机电池,闭环充电,开路电压法1 聚合物里电池的充电闭环控制结构图聚合物锂电池的结构原理:利用检测电路实时检测电池的端电压、温度,并将端电压和容量值显示在PC机上,再利用控制电路选择哪种充电方式:(1)当电池端电压为2.8V3.3V时,对电池进行大电流充电;(2)

    2、当电池端电压为3.3V3.7V时,对电池进行涓流充电;(3)当电池端电压大于3.7V时,停止对电池充电。结构图如图1所示。图1闭环结构图U为电池端电压、T为电池温度I为充电电流大小。不同大小的I对应不同充电方式2电压检测电路的设计 电压检测电路包括差模放大电路、滤波电路和A/D转换电路。2.1差模测量法 差模测量法测量对象为电池组。出于扩展功能考虑,本课题采用差模测量法对单体电池进行测量。扩展方向:选取电池组中单体电池进行充电。原理:差模测量法是通过控制芯片输出控制信号来控制继电器来选通某个电池单体来对其进行测量,因此不存在工地的问题。控制芯片通过数字I/O口发送数字信号控制选通电路,选通电路

    3、控制相应的继电器闭合,从而把对应的电池单体接入电压采集电路,通过A/D口读入控制芯片。 本课题采用差模测量法设计电压采样电路。采用集成运放和精密电阻组成差模电压电路,抵消测量端的共模电压,实现直接测量单节电池的端电压。根据接入电池的电压大小,选择适当的当大倍数。2.2差模放大滤波电路单体差模放大滤波电路如图2所示。集成运算放大器采用LM358,LM358内部包括两个独立的、高增益、内部频率补偿的双运算放大器,适合于电源电压范围很宽的单电源使用,也适用于双电源工作模式,在推荐的工作条件下,电源电流与电源电压无关。LM358内部结构图2 差模放大滤波电路差模放大电路:本课题电阻选取1 M,进行输入

    4、电压1:1测量。滤波电路:R=100K,C=10nf ,f=1/2*pi*RC。 f=160Hz,实现低通滤波作用。(3)A/D转换 A/D转换芯片采用PCF8591,内部结构如图4所示。它具有I2C总线接口的8位A/D及D/A转换器。有4路A/D转换输入,1路D/A模拟输出。这就是说,它既可以作A/D转换,也可以作D/A转换。A/D转换为逐次比较型。图3 PCF8591A/D转换芯片PCF8591:将差模放大滤波电路测量得到的模拟量转换成相对应的数字量。3控制电路的设计本课题所研究的对象是聚合物锂电池,根据力神公司提供的聚合物锂电池的数据手册,聚合物锂离子电池额定电压为3.7V,容量为10A

    5、h,电源电压为5V。电池的控制电路设计如图4所示,当电池端电压小于3.3V时,对电池进行大电流充电,此时绿色二极管和红色二极管导通,两灯都亮;当电池端电压为3.3V3.7V时,单片机给P1.0口高电平,给P1.1口低电平,此时绿色的二极管截止,只有红色的二极管亮,对电池进行涓流充电;当电池两端的电压大于3.7V时,两个二极管截止,此时对电池停止充电。图4 控制电路4 SOC的估计4.1电池SOC估算方法概述 目前国内外常用的荷电状态估计的方法主要有放电实验法、安时(从)计量法、开路电压法、负载电压法、电化学阻抗频谱法、内阻法、线性模型法、神经网络法和卡尔曼滤波法。以下就这几种方法进行逐一简单的

    6、介绍。4.1.1放电实验法 放电实验法是最可靠的电池荷电状态 (SOC)估计方法,采用恒定电流进行连续放电,放电电流与时间的乘积即为剩余电量。放电实验法在实验室中经常使用,适用于所有电池,但它也存在两处显著缺陷:第一花费时间长;第二要必须中断蓄电池正在进行的工作。放电实验法不适合行驶中的电动汽车,但可以用于电动汽车电池的检修。4.1.2安时(A.h)计量法安时(A.h)计量法是目前最常用的电池荷电状态 (SOC)估计方法。假设放电(或充电)起始状态为,那么当前状态(时刻)的电池荷电状态 (SOC)表示如下。-额定容量; -电池电流;-充放电效率,不是常数。 4.1.3开路电压法 电池的开路电压

    7、在数值上接近电池电动势。电池电动势是电解液浓度的函数,液密度随电池放电成比例降低,用开路电压可估计蓄电池荷电状态(SOC)。其对应关系也可以估计SOC,尤其在充电初期和末期效果较好。开路电压法的显著缺点是需要电池长时静置,以达到电压稳定,电池状态从工作恢复到稳定,需要几个小时甚至十几个小时,这给测量造成困难;静置时间如何确定也是一个问题.4.1.4负载电压法 电池放电开始瞬间,电压迅速从开路电压状态进入负载电压状态,在电池负载电流保持不变时,负载电压随电池荷电状态变化的规律与开路电压随电池荷电状态的变化规律相似。负载电压法的优点是:能够实时估计电池组的电池荷电状态,在恒流放电时,具有较好的效果

    8、。实际应用中,剧烈波动的电池电压给负载电压法应用带来困难。解决该问题,要贮存大量电压数据,建立动态负载电压和电池荷电状态的数学模型。负载电压法很少应用到实车上,但常用来作为电池充放电截止的判据。4.1.5内阻法 电池内阻有交流内阻 (impedance,常称为交流阻抗)和直流内阻 (resistanee)之分,它们都与SOC有密切关系。电池交流阻抗为电池电压与电流之间的传递函数,是一个复数变量,表示电池对交流电的反抗能力,用交流阻抗仪来测量。电池交流阻抗受温度影响大,是对电池处于静置后的开路状态,还是对电池在充放电过程中进行交流阻抗测量,存在争议,所以很少用于实车上。交流阻抗法原理及应用。直流

    9、内阻表示电池对直流电的反抗能力,等于在同一很短的时间段内,电池电压变化量与电流变化量的比值。实际测量中,将电池从开路状态开始恒流充电或放电,相同时间里负载电压和开路电压的差值除以电流值就是直流内阻。铅酸电池在放电后期,直流内阻明显目前国内外常用的荷电状态估计的方法主要有放电实验法、安时(从)计量法、开路电压法、负载电压法、电化学阻抗频谱法、内阻法、线性模型法、神经网络法和卡尔曼滤波法。以下就这几种方法进行逐一简单的介绍。4.1.6神经网络法 电池是高度非线性的系统,对其充放电过程很难建立准确的数学模型。神经网络具有非线性的基本特性,并具有并行结构和学习能力,对于外部激励,能给出相应的输出,所以

    10、能够模拟电池的动态特性来估算电池荷电状态。估计电池荷电状态常采用三层典型神经网络即:输入层、中间层和输出层。输入、输出层神经元个数根据实际问题的需要来确定,一般为线性函数,常用电压、电流、累积放出电量、温度、内阻及环境温度等作为输入变量;中间层神经元个数取决于问题的复杂程度及分析精度。神经网络法适用于各种电池,缺点是需要大量的参考数据进行训练,估计误差受训练数据和训练方法的影响很大。4.1.7卡尔曼滤波法利用卡尔曼滤波方法估算电池荷电状态的研究是在近几年才开始的,卡尔曼滤波的一个显著特点是,用状态空间的概念来描述其数学公式。卡尔曼滤波另一个新颖特点是,他的解是递归计算的,而且可不加修改地应用于

    11、平稳和非平稳环境。4.2采用开路电压法估计SOC因为本课题为电池的闭环充电过程。Soc要求精度不高,重要的是对电池进行充电控制。Soc只需要随着充电过程的进行,实现相关指示便可。所以课题采用开路电压法估计soc。本课题所采用的是开路电压法,利用检测电路实时检测电池两端的电压,再通过数据手册提供的SOC-U计算公式计算相对应的soc。设x为电池的开路电压, SOC-U计算公式如下:存在问题:因为电池内部是一个化学反应过程,所以达到内部化学平衡时候,测量的电池端电压才相对准确。所以实时测量电池端电压,必然存在一定范围的误差。 5扩展部分 因为锂离子电池超过55存在爆炸危险,所以成熟的锂离子电池充电

    12、器都具有温度控制功能,当超过警戒值时候,切断充电电路进行纯降温操作。本课题扩展了电池温度检测部分。利用一个DS18B20温度传感器实时检测电池的温度变化,并显示于PC机上。为电池的温度控制提供基础。 温度信号采集是采用美国Dallas 半导体公司的数字化温度传感器 DS1820来完成的,DS18B20与传统的热敏电阻相比,无需外加A/D,能够直接读出被测温度并且可根据实际要求通过简单的编程实现9一12位的数字值读数方式。可以分别在 93.75ms和 750ms内完成9位和12位的数字量转换。DS18B20芯片可以采用寄生电源和外部电源两种供电方式。本文中采用外接5v电源,内部结构如图6所示。图

    13、6 DS18B20内部结构6结论本课题是利用手机电池的充电曲线以及电池的实际情况为依据的闭环充电过程。利用检测电路实时检测电池的端电压、温度,再利用开路电压法估算SOC值,计算出相对应的容量,然后利用控制电路选择相对应的充电参数。充电对象为聚合物锂离子电池,采用先大电流充电至容量的75%,再进行小电流充电至容量的99%,最后关断电池充电。同时,该闭环充电系统也存在相关问题。因为电池充放电过程实质是电池内部的各种化学反应过程,测量电池端电压需要等待电池内部反应平衡时才能实现小误差的的测量。课题采用实时测量电池的端电压,未等到电池内部反应平衡,所以必然存在一定范围的误差,致使得到的SOC也只是一个

    14、粗略的值。因此测量SOC值的方法还有待改进。7参考文献1胡弊,宋慧.电动汽车【M】,北京:人民交通出版社,2002.2郑杭波.新型电动汽车鲤电池管理系统的研究与实现【D】:硕士学位论文.北京:清华大学,2004.3李兴虎.电动汽车概论【M】.北京:北京理工大学出版社,2005.4杨太安,纯电动汽车电源管理系统的研究【D】:硕士学位论文.武汉:武汉理工大学2006.5张翔,赵韩,钱立军等.国内各主要单位电动汽车研发项目进展情况及主要产品介绍J.汽车技术,2004:42一44.6万刚.中国电动汽车的现状和发展J,中国环保产业,2003(2):30-33.7廖晓军,何莉萍,钟志华等.电池管理系统国内

    15、外现状及其未来发展趋势J.汽车工程,2006.8附录附录一 程序/*聚合物锂电池 3.7V 10AH 充电器程序*/#include#include#includeI2C.h#include#define PCF8591 0x90 /PCF8591 地址bit ack; /*应答标志位*/int wendu;bit flag = 0;int i,j,xms,w,x;unsigned char AD_CHANNEL;unsigned int D32;unsigned int count = 0;float q,y,z,t; sbit LED1=P10;sbit LED2=P11; initSci

    16、() /相关寄存器初值确定 TMOD = 0x20; PCON = 0x00; SCON = 0x50; TH1 = 0xF3; TL1 = 0xF3; TR1 = 1;inittimer() /T0计数器赋初值 TMOD |= 0x01; TH0 = (65536 - 50000) / 256; TL0 = (65536 - 50000) % 256; ET0 = 1; TR0 = 1; EA = 1;/*ADC发送字节命令数据函数 */bit ISendByte(unsigned char sla,unsigned char c) Start_I2c(); /启动总线 SendByte(s

    17、la); /发送器件地址 if(ack=0)return(0); SendByte(c); /发送数据 if(ack=0)return(0); Stop_I2c(); /结束总线 return(1);/*ADC读字节数据函数 */unsigned char IRcvByte(unsigned char sla) unsigned char c; Start_I2c(); /启动总线 SendByte(sla+1); /发送器件地址 if(ack=0)return(0); c=RcvByte(); /读取数据0 Ack_I2c(1); /发送非就答位 Stop_I2c(); /结束总线 retu

    18、rn(c);/* void delayms(int xms) /延时函数 for(q=xms;q0;q-) for(w=110;w0;w-);void main() initSci(); inittimer(); while(1) /主函数无限循环,电池充电过程中,时时对电池电压、电量进行检测 switch(0) /A/D转换芯片,选择0通道 case 0: ISendByte(PCF8591,0x40); D0=IRcvByte(PCF8591)*2; /ADC2 模数转换0,放大2倍显示 break; case 1: ISendByte(PCF8591,0x41); D1=IRcvByte

    19、(PCF8591)*2; /ADC3 模数转换2 break; case 2: ISendByte(PCF8591,0x42); D2=IRcvByte(PCF8591)*2; /ADC1 模数转换3 break; case 3: ISendByte(PCF8591,0x43); D3=IRcvByte(PCF8591)*2; /ADC0 模数转换4 break; if(+AD_CHANNEL3) AD_CHANNEL=0; while(D03335) /根据soc与端电压的关系,计算电池soc y=1;else if(3327x & x=3335)y=1-(8.4745*x*x-56710*

    20、x+94872550)*6.89*0.00001 ;else if(3297x & x=3327)y=1-(-0.26997*x*x+1740*x-2798620)*6.89*0.00001 ; else if(3283x & x=3297)y=1-(7.1293*x*x-47222*x+78219350)*6.89*0.00001 ; else if(3179x & x=3283) y=1-(-0.2017*x*x+1256.2*x-1941900)*6.89*0.00001;else if(2823x & x=3179)y=1-(-0.00735*x*x+40.533*x-41359)*6

    21、.89*0.00001 ; else if(x=2823) y=0;z=y*10000; /计算电池的电量q=y*100; /将soc用百分数形式表示 while(330370) /充电过程中端电压高于3.7v以后,关断两条支路,停止充电 LED1=1; LED2=0; break; ISendByte(PCF8591,0x40); D0=IRcvByte(PCF8591)*2;wendu = ReadTemperature(); /时时对电池进行温度测量 wendu=wendu/10; if(flag = 1) / 串口调试工具进行相关参数的显示 flag = 0; ES = 0; TI =

    22、 1;printf( 当前温度 %d度n,wendu); printf( 当前电压 %0.2fvn,t);printf( 当前电量 %0.1f毫安时n,z); printf( 电量剩余百分之 %0.2fn,q); while(!TI); TI = 0; ES = 1; break; delayms(1000); void timer() interrupt 1 /T0计数器中断1 TH0 = (65536 - 50000) / 256; TL0 = (65536 - 50000) % 256; count+; if(count = 100) count = 0; flag = 1; 附录二 总闭环充电系统电路图图7 闭环充电系统


    注意事项

    本文(基于单片机的锂离子电池充电器含程序和电路图.docx)为本站会员主动上传,冰点文库仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰点文库(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

    copyright@ 2008-2023 冰点文库 网站版权所有

    经营许可证编号:鄂ICP备19020893号-2


    收起
    展开