基于单片机的锂离子电池电量检测系统设计论文

上传人:沈*** 文档编号:102204070 上传时间:2022-06-06 格式:DOC 页数:41 大小:590KB
返回 下载 相关 举报
基于单片机的锂离子电池电量检测系统设计论文_第1页
第1页 / 共41页
基于单片机的锂离子电池电量检测系统设计论文_第2页
第2页 / 共41页
基于单片机的锂离子电池电量检测系统设计论文_第3页
第3页 / 共41页
点击查看更多>>
资源描述
河 南 科 技 学 院毕 业 设 计 (论 文) 机电学院系(院) 电气工程与其自动化专业毕业设计(论文)电动汽车电池电量显示系统学生 友轩班 级 电气工程与其自动化102班学 号 指导教师 宋长源 完成日期 2014年 5 月 20 日33 / 41电动汽车电量显示系统总计 毕业设计(论文) 34 页 表 格 7 个插 图 15 幅摘 要锂离子电池与其他种类的电池相比有着诸多优势,已经成为我们日常生活中必不可少的一部分。相信在使用锂离子电池的过程中,我们常会考虑还剩多少电量的问题,但是又找不到好的电量检测方法,针对该要求,本文设计了一种基于单片机的锂离子电池电量检测系统,该检测系统可以满足我们日常生活中对锂离子电池电量检测的需求,以全面掌握锂离子电池的电量状态。本文主要叙述了基于单片机的锂离子电池电量检测系统的研究和设计,该系统主要由模拟量采集、锂离子电池检测模块、单片机模块、以与LED驱动显示电量等相应的部分组成,介绍了锂离子电池的特点、电池电量检测原理、系统的结构与性能,重点介绍了该系统的软硬件设计等。考虑到检测系统的复杂程度、精确性、可靠性等各个方面,本文介绍的设计方案能够满足我们对锂离子电池电量检测的要求。关键字:锂离子电池 BQ2040 电池检测 单片机 LED显示AbstractCompared with other types of batteries, the lithium-ion battery have many advantages, becoming an indispensable part of our daily lives. I believe that in the process of using lithium-ion battery, we often consider the question of how much power is left, but they can not find a good power detection method. for the requirements, we design a lithium-ion battery detection system based on MCU, the detection system can meet the demand for lithium-ion battery detection in our daily lives , in order to fully grasp the charge status of the lithium-ion battery.This paper describes the research and design of lithium-ion battery detection system based on MCU The system consists of a Analog acquisition module,battery detectionmodule, MCU module and LED drive power display modules. the article describes the characteristics of the lithium-ion battery, the battery detection principle, structure and performance of the system, focusing on the system hardware and software design. Taking into account the complexity of the detection system, accuracy, reliability, and other aspects, the article describes the design can meet the requirements of our lithium-ion battery detection. Key words:Lithium-ion battery BQ2040 Battery detection MCU LED display目录摘要IAbstractII第一章 绪论11.1 本课题研究的目的与意义11.2 本课题研究容11.3 锂离子电池的放电与温度特性21.4 锂离子电池电量检测系统的发展方向3第二章 系统总体结构设计42.1 系统总体结构框图42.2 单片机的选择52.2.1 W78E365A40PL引脚说明52.2.2 W78E365特性介绍62.3 电池电量检测芯片BQ204072.3.1 BQ2040 引脚说明72.3.2 BQ2040的检测原理82.4 LED驱动控制芯片TM162992.4.1 TM1629引脚说明92.4.2 TM1629特性介绍102.5 数据传输存储芯片24C64112.5.1 24C64概述112.5.2 24C64引脚说明112.5.3 24C64特性介绍122.6 时钟芯片DS1302122.6.1 DS1302概述122.6.2 DS1302引脚说明12第三章硬件系统设计143.1 单片机与时钟电路部分143.1.1 W78E365概述143.1.2 电路图设计143.2 BQ2040部分153.2.1 BQ2040概述153.2.2 电路图设计163.3 TM1629驱动控制LED显示部分163.3.1 TM1629概述163.3.2 LED数码管163.3.3 电路图设计17第四章软件系统设计184.1 程序设计流程184.1.1 初始化184.1.2 主程序流程图194.1.3 A/D转换与中断服务204.2 BQ2040总线时序21第五章系统测试23结 论24参考文献25致 26附 录27第一章 绪论1.1本课题研究的目的与意义锂离子电池自问世以来,到现在已经发展成为我们每个人众多生活必需品当中的一部分,是如今人们在日常生活中使用极其广泛的一种电池。我国通讯、电力电子等相关行业的飞速发展,使人们对锂离子电池的利用率和维护工作的重视程度不断提高,锂离子电池电量检测的市场需求随之越来越大。然而现在的实际情况却是由于国目前的一些检测设备的检测方法不精确等原因,使其不能完全满足我们对锂离子电池电量检测的需求,同时国外的同类检测设备虽然性能较好,但是价格太高,不适合我们日常检测使用。微处理器技术的发展与电池电量检测方法的不断改善,为提高锂离子电池电量检测系统的性能和降低其制造成本提供了可能。针对该要求,本文设计了一种基于单片机的锂离子电池电量检测系统,该检测系统的设计对全面掌握锂离子电池的电量状态,提高其利用率具有现实意义。本设计的研究成果如果能够得到大家的一致认同,以致今后被广泛应用于我们的日常生活当中,比如应用于生活中常用的或常见的便携式电子产品领域,这必将提高人们的日常生活质量,并且还能起到提高锂离子电池利用率的作用,从另一方面看,这也是从某种程度上响应了国家“节能减排”政策。1.2 本课题研究容该课题是设计一个锂离子电池电量检测系统,研究对象为符合国标GB/T 18287-2000的锂离子电池,其主要参数有:标称电压3.7V,标称容量1050mAH,充电电压4.2V。在做毕业设计的这段时间里,自己通过互联网查询、图书馆书籍资料搜索等多种途径,对该课题的研究容进行了充分的理解与学习,使我对锂离子电池的电量检测原理,以与一些基于单片机的C程序编写等容,都有了进一步的了解与掌握。本课题研究如何设计一个满足我们日常生活要求的锂离子电池电量检测系统,要求适用于日常使用,必须控制成本,并且需要满足精度的要求。本文的设计思路是利用单片机与一些市场上常见的功能芯片,经过综合所有应考虑的重要因素后,最终确定了该检测系统里的一些重要器件类型,其中单片机部分就选用W78E系列中的W78E365A40PL,锂离子电池的电量检测部分就选用流行于目前市场上并且较专业的电池电量检测芯片BQ2040,输出部分决定采用TM1629驱动控制LED数码输出显示。TM1629是一款专业用于驱动控制LED数码输出显示的芯片,已经被广泛应用于目前的市场中,其次,输出采用数码显示,易于用户读取所需要的锂离子电池的电量信息,更加人性化。综上,最终设计出基于W78E365A40PL,利用电池电量检测芯片BQ2040,并且数码输出显示我们所需数据的锂离子电池电量检测系统,该系统由模拟量参数采集部分、电量检测部分、中央处理控制部分(单片机)以与LED驱动显示等相应模块组成,前两部分可由BQ2040完成。至此,该基于单片机的锂离子电池电量检测系统的整体框架便已明了。本文重点介绍了该锂离子电池电量检测系统的硬件设计和软件设计。硬件设计的主要职责就是将系统分割成的各个功能部分组合成一个合理的可行性方案;软件设计则负责根据系统相关的功能要求,进行模块的编程等,最后用Protel等相关软件画出原理图,并利用Proteus仿真,对检测结果的准确性进行测试。1.3 锂离子电池的放电与温度特性(一) 放电特性本文必须先对锂离子电池的放电特性进行简单说明,因为如果要检测锂离子电池的电量,对锂离子电池进行放电检测是检测过程中必须经过的一道程序,大部分我们所需要的参数都是在对锂离子电池进行放电过程中得到的,但是对锂离子电池进行放电测试时,其放电力度必须要得到精确的控制,锂离子电池对过放电相当的敏感,一旦放电电压或放电电流超过了本身的承受围,将会导致锂离子电池自身快速升温,影响锂离子电池的使用寿命与使用性能。(二) 温度特性虽然在检测过程中需要控制锂离子电池的温度在一定的围之,因为不适合的温度,将导致锂离子电池部生成许多影响检测结果的无用化合物,这是锂离子电池部化学反应的结果,而且温度影响着锂离子的迁移速度,但是日常生活中的环境温度不会超过锂离子电池正常使用的温度围,在进行锂离子电池电量检测的过程中,我们不用对锂离子电池所在环境温度进行严格控制。不可以将锂离子电池置于温度过高或过低的环境中存储或使用,不然严重影响锂离子电池的使用寿命与使用性能。另外附带一句,如果我们要存储锂离子电池时,必须将温度围控制在(-15一+55),如果是使用锂离子电池或对其进行放电测试,最好将温度围控制在(-35一+75)。1.4 锂离子电池电量检测系统的发展方向人性化设计是任何产品能否面向市场并取得成功的决定因素之一。需要为用户提供直观易懂方便操作的界面,锂离子电池电量检测系统的发展方向应从以下几个方面考虑: 人机互动。在用户进行操作使用的过程中,系统会根据用户的操作反馈显示出诸多的相关提示信息,用户使用起来简单,提升该系统的用户体验。 系统的部结构须采用插板式形式。这样就可以打消用户担心产品不易维修的顾虑,对于自己有相关维修经验与能力的用户,也提供了让用户维修的机会,解决了与维修相关的一连串问题。 相关功能的延伸。善于挖掘、开发出锂离子电池电量检测系统应具备的功能,使产品具备更多有实用价值的相关功能,以适应不同用户对锂离子电池电量检测要求,进一步完善用户体验。当然,在锂离子电池的使用过程中,还存在诸多的实际性问题,比如说老化,诸多其他不确定性因素也会对检测结果有所影响。未来在开发锂离子电池电量检测系统时,必须全面考虑会对检测过程中或者检测结果造成多多少少影响的因素。这样才能使该锂离子电池电量检测系统一直发展下去,随着时间的推移而不被淘汰。第二章 系统总体结构设计2.1 系统总体结构框图该系统总体结构可以划分为几个重要部分:锂离子电池模拟量参数采集部分、电量检测部分、中央处理控制部分(单片机)和LED驱动显示部分。每个部分重要器件的选型已经在前面具体说明,将系统总体结构分为以上各部分后,整个系统的工作原理与重要模块等信息便简单明了,系统每个部分都有着其自己重要的责任,只有系统的每个模块都按其职责正常运行,整个锂离子电池电池检测系统才能正常工作。如图2-1所示,该图为锂离子电池电量检测系统的总体结构框图,其中模拟量参数采集部分负责通过传感器与测量电路等来采集锂离子电池的模拟量参数,这些参数包括锂离子在放电过程中的电流(压)大小、检测到的温度值等相关参数;电量检测部分主要负责依据上部分已经采集到的参数,对锂离子电池的电量进行检测与计算,这两个部分可由BQ2040完成;中央处理控制部分即单片机负责对整个系统进行控制;LED驱动显示部分负责驱动LED,并对被测锂离子电池的剩余电量信息进行数码输出显示。锂电池模拟量参数采集电量检测中央处理控制部分LED驱动电压温度电流ITU图2-1 系统总体结构框图2.2 单片机的选择2.2.1 W78E365A40PL引脚说明在能够满足锂离子电池电量检测系统相关功能的前提下,如何选择一款合适的单片机是关键。本设计采用了W78E系列中的W78E365A40PL,其引脚如下图所示图2-2W78E365A40PL引脚表2.1W78E365A40PL引脚说明引脚符号引脚名称引脚描述EA外部访问使能端接低电平时,只读取外部程序存储器中的容;接高电平时,先读取片存储器,若地址超出,自动读取片外程序存储器中的容。PSEN程序存储使能端片外程序存储器读选通信号ALE地址锁存使能端CPU访问外部ROM或RAM时,输出低八位地址锁存信号。RST复位端高电平复位XTAL1晶体振荡器输入端由一个外部时钟驱动续表2.1引脚符号引脚名称引脚描述XTAL2晶体振荡器输出端XTAL2是XTAL1的反相端VSS接地接地VDD电源接电源工作电压P0.0-P0.7端口0功能与标准8052一样P1.0-P1.7端口1功能与标准的8052一样P2.0-P2.7端口2带有部上拉电路的双向I/O口,扩展外部存储器时,作为高八位地址总线。P3.0-P3.7端口3功能与标准8052一样P4.0-P4.3端口4分时复用功能的双向I/O口2.2.2 W78E365特性介绍(1) 电气特性:表2.2 W78E365电气特性参数符号最小值最大值单位直流电源电压VDDVSS-0.3+6.0V输入电压VINVSS-0.3VDD+0.3V工作温度TA070贮存温度TST-55+150注释:使用过程中若长时间超出最大额定值,将会对器件的使用寿命、使用性能、使用可靠性等多方面均造成严重损害。(2)功能特性: 全静态设计的CMOS8位微处理器 64KB带ISP功能的Flash EPROM 4KB辅助Flash EPROM用于存储装载程序 4个8位双向I/O口,一个附加4位I/O口 3个16位定时器 一个增强型全双工串行口 看门狗定时器 8个中断源,2级中断能力 电源管理带空闲模式和掉电模式 代码保护2.3 电池电量检测芯片BQ20402.3.1 BQ2040引脚说明BQ2040引脚分布如下图所示:图2-3 BQ2040引脚分布表2.3 BQ2040引脚说明引脚符号引脚名称引脚描述VCC电源电压输入端电源电压输入ESCL时钟存储端与外部存储器间进行传输ESDA地址数据存储端双向传输LED1LFD4指示灯1-4显示端LED数码输出显示VSS逻辑地端接地SR电阻器检测输入端接锂离子电池负极和检测电阻续表2.3引脚符号引脚名称引脚描述DISP显示控制输入端接高电平时LED显示无效;接低电平时LED显示有效。SB第二电池输入端监测锂离子电池的充电参数PSTAT数据保护输入端锂离子电池保护SMBDSM数据总线,即数据总线连接端地址和数据的双向传输SMBCSM时钟总线,即时钟总线连接端双向传输,锁定数据传输REF基准电压,即参考电压端为场效应管输出提供参考电压VOUT供电输出端为外围电路提供电压2.3.2 BQ2040的检测原理BQ2040的电量检测原理我们也需要做简单的了解,BQ2040置了温度传感器,它通过置的温度传感器和部计数器来估算被测锂离子电池的放电程度,放电的同时还可以根据温度需要进行温度补偿,并且能够通过锂离子电池的放电周期,校准锂离子电池的实际容量,外接部写有初始化程序的EEPROM,负责控制电池的管理工作,串口和外部EEPROM可以用来编程。在日常生活中,使用锂离子电池是一般都不需要进行温度保护,因为日常情况下,锂离子电池工作所在环境温度不会超过其工作温度围之外,除非需要该锂离子电池一直处于长期的持续的工作状态,这时候应该采取适当的温度保护措施。但是BQ2040是一款流行与目前市场上相当专业的电池电量检测芯片,BQ2040对被测锂离子电池进行电量检测的同时,会检测锂离子电池的温度情况,因为BQ2040置了温度传感器,可以进行过热保护等控制措施,不需要外接热敏电阻,如果检测到温度过低,这时候BQ2040还可以进行温度补偿,不需要外接谐振器等相关器件,进一步减少了器件,降低了设计成本。2.4 LED驱动控制芯片TM16292.4.1 TM1629引脚说明图2-4 TM1629引脚分布表2.4 TM1629引脚说明引脚符号引脚名称引脚描述DI0数据输入/输出端在时钟上升沿从低位开始输入/输出串行数据STB片选端STB为低电平时,其后的第一个字节作为指令;STB为高电平时,CLK被忽略。CLK时钟输入端在时钟上升沿输入/输出串行数据。K0K3键盘扫描输入输入该脚的数据在显示周期结束后被锁存。SEG1/KS1SEG8/KS8段输出端段输出SEG9SEG16段输出端段输出引脚符号引脚名称引脚描述GRID1GRID8位输出端位输出续表2.4引脚符号引脚名称引脚描述VDD逻辑电源端5V10%VSS逻辑地端接系统地NC空脚端部未连线注意:在DIO端口输出数据的时候,该引脚需要外接一个带有一定阻值上拉电阻,推荐使用10K的上拉电阻,并且读数时要选择在时钟的上升沿进行,这样才能保证读数的稳定性。读数时若选择在时钟的下降沿,此时读数并不稳定,影响数据准确性。图2-5 芯片部电路2.4.2 TM1629特性介绍 采用功率CMOS工艺 显示模式16段8位 键扫描(84bit) 辉度调节电路 串行接口(CLK,STB,DIO) 置上电复位电路 采用QFP44封装2.5 数据传输存储芯片24C642.5.1 24C64概述24C64芯片属于24C系列里面常见的一款,该系列的主要功能是数据的存储与传输。既然是数据传输存储芯片,那么就会有每款芯片带有多少存储位的问题,该系列的芯片拥有多少存储位可以从24C后面的数字读出来。如ATMEL的24C64,从后面的数字可以读出其存储位为64K。这个系列的芯片具有许多的优势,例如能重复擦写1百万次以上,并且在其部已经存储成功的数据能够长期保持,时间达100年之久。24C64具有多种封装形式可供选择,现如今已被广大电子行业从业者所接受,广泛应用于电力电子各个领域。ATMEL的24C64是I2C 总线的EEPROM,I2C总线(Inter Integrated Circuit 部集成电路总线)是两线式串行总线,只占用微处理器的2个I/O 引脚,仅需要时钟和数据两根线就可以进行数据传输,令用户使用起来十分便捷。2.5.2 24C64引脚说明图2-6 24C64引脚分布表2.5 24C64引脚说明引脚符号引脚名称引脚描述A0到A2地址输入端确定连接器件的地址SDA串行数据端需要附加一个上拉电阻,双向引脚,可以输出或输入地址与数据。SCL串行时钟输入端产生串行同步时钟信号VCC电源输入端电源电压输入GND接地端接地2.5.3 24C64特性介绍 低功耗器件 2线串行接口 双向数据传输协议 写保护引脚用于硬件数据保护 高可靠性2.6 时钟芯片DS13022.6.1 DS1302概述DS1302是美国DALLAS公司推出的一种高性能、低功耗、带RAM的实时时钟电路,它可以对年、月、日、时、分、秒进行计时,具有闰年补偿功能,工作电压为2.5V5.5V。通过简单的串行接口,采用三线接口与CPU进行同步通信,部有一个318的用于临时性存放数据的静态RAM。它具有主电源/后备电源双电源引脚,VCC1为后备电源,VCC2为主电源。在主电源关闭的情况下,也能保持时钟的连续运行。DS1302由VCC1或VCC2两者中的较大者供电。当Vcc2大于Vcc1+0.2V时,DS1302由VCC2供电;当VCC2小于VCC1时,DS1302由VCC1供电。DS1302功能:日期时间信息;每月的天数和闰年的天数可自动调整;通过AM/PM指示决定采用24或12小时格式;保持数据和时钟信息时功率小于1mW。2.6.2 DS1302引脚说明图2-7 DS1302引脚分布表2.6 DS1302引脚说明引脚符号引脚名称引脚描述X1、X2晶振引脚32.768KHzGND接地引脚接地CE复位脚在读/写数据期间必须为高I/O数据输入/输出三线接口时的双向数据线SCLK串行时钟引脚控制数据的输入与输出VCC1、VCC2电源供电引脚VCC1:主电源;VCC2:备份电源第三章 硬件系统设计3.1 单片机与时钟电路部分3.1.1 W78E365概述W78E365是带有在线编程(In System Program)功能的低功耗8位微控制器。在线编程功能使其具有开发门槛较低的便捷性,只需要一条ISP并行下载线,就可以把程序写入单片机。W78E365既含有主ROM,同时也带有从ROM;既含有片RAM,同时也带有从RAM。从ROM为Flash EPROM,这些存储器的存储容量分别为:64K字节主ROM;4K字节从Flash EPROM;256字节片RAM;1K字节从RAM。W78E365具有高速和高可靠性,其I/O口功能强、驱动能力大,并且低功耗。同时具有程序保护性好等诸多有点,当用户写入了程序后,单片机会对其进行数据保护,使用户编写的程序不被读出,防止用户的成果被窃取。3.1.2 电路图设计单片机与时钟电路部分的电路图如图3-1所示,W78E365A40PL接口分别与DS1302时钟电路部分、BQ2040锂离子电池电量检测部分与LED驱动显示部分相连,构成一个完整的锂离子电池电量检测系统。DS1302与单片机的连接也仅需要3条线:CE引脚、SCLK串行时钟引脚、I/O串行数据引脚,图中VCC1为备用电源。外接32.768kHz晶振,为芯片提供计时脉冲。此处添加DS1302时钟电路部分的目的是为了定时读取测锂离子电池电量时对应的时间,然后存储于24C64芯片中,以便在我们需要的时候,如系统出错,需对其进行检修时,就可以把这些时间结果全部调用出来,为排查故障提供条件。图3-1 单片机与时钟电路原理图3.2 BQ2040部分3.2.1 BQ2040概述作为一款电池电量检测芯片,BQ2040负责完成锂离子电池的电量检测模块的功能,它先采集所需被测锂离子电池的信号参数,然后按照原先已经设定好的算法检测计算出被测锂离子电池的电量,通过I2C总线与单片机部分进行数据交换,最终通过LED驱动显示部分数码输出显示锂离子电池的电量信息给用户。电量检测结果用LED数码输出显示,从而让我们与时了解电量信息,完全掌握锂离子电池的用电状态,提高利用率。本系统电量检测部分采用电池电量检测芯片BQ2040,除了支持对锂离子电池的高精度电量检测,还满足其他多种电池的电量检测工作,比如能够很好的检测镍镉电池、镍氢电池的电量。3.2.2 电路图设计图3-2 BQ2040电路图3.3 TM1629驱动控制LED显示部分3.3.1 TM1629概述TM1629是一款专业LED驱动控制的芯片,支持驱动的点数较多,其部集成了串行接口、RC振荡器、键盘扫描存储单元、命令译码器、显示存储器、辉度调节器、断锁存器、段驱动器等部分,已经被广泛应用于各种驱动电路中,特别是专用于驱动控制LED数码显示输出。3.3.2 LED数码管在实际的应用中,如果需要显示出的容只有数字和字母,则LED数码管是不错的选择,LED数码管分为共阴极与共阳极两种,如图3-3所示。LED数码管具有成本低廉、显示清晰的优点。综上,本文选择LED数码管作为输出显示部分。输出显示模块将系统检测出的锂离子电池剩余电量数码显示出来,通过两个数码管就可以显示出剩余电量的百分比。这样我们就可以对当前锂离子电池的电量信息有一个更加直观的了解。图3-3 LED数码管共阳极和共阴极示图3.3.3 电路图设计图3-4 TM1629电路图第四章 软件系统设计软件设计包括主程序和中断服务程序。主程序完成单片机的初始化,以与等待中断,中断跳转等;中断服务程序包括上电中断服务程序、定时器/计数器中断服务程序等。4.1 程序设计流程4.1.1 初始化初始化程序流程图如图4-1所示:初始化初始化堆栈初始化各个端口输入端使能等待/响应中断图4-1 初始化程序流程图初始化程序的功能就是初始化各个端口,使其各部件完成先前的准备工作。设置好各个端口的功能,比如哪些端口设置为中断的输入口,哪些设置为外部模块。设置完成以后就可以打开各个中断使能,使系统响应相对应的中断跳转程序。4.1.2 主程序流程图DS1302时钟电路LED数码显示电量开始系统初始化采样锂离子电池电信号与温度等参数,BQ2040检测电池电量W78E365单片机控制TM1629驱动控制LED结束返回图4-2 主程序流程图主程序完成初始化后,便等待定时器中断状态或外部中断的到来,然后完成锂电池电压、电流和温度值的信号采集,最后完成锂离子电池电量的计算,并在LED输出显示屏上显示出来。4.1.3 A/D转换与中断服务启动AD是数据清标志位返回中断返回置读数标志位读时钟信息定时中断开中断否初始化开始AD转换图4-3 A/D转换与中断服务流程图我们可以通过读时钟信息得到每一次锂离子电池电量检测时的时间,当然还有另外一个重要作用,如果知道了每次电量检测的结果与相对应的时间,就能帮助我们有效地监测该锂离子电池电量检测系统的工作情况是否正常,方便我们排查故障原因,与时对该系统进行维护和检修。参考子程序(以每50ms中断一次举例):void time0(void) interrupt 1 using 2 TH0=0x3c; TL0=0xb0; TIME_count+; if(TIME_count=21) TIME_count = 0; TIME_seconds+;/ 秒寄存器加1 4.2 BQ2040总线时序BQ2040采用电源系统管理Veil.0(SMBus)协议,支持智能电池数据管理命令(SBData)和智能电池充电控制(SBData)功能,通过串行接口可以检测锂离子电池的充电状态、剩余电量、放电剩余时间、电池材料等信息。SMBus是System Management Bus的缩写,译为系统管理总线,SMBus是一种二线制串行总线,它大部分基于I2C(Inter-Integrated Circuit)总线规。I2C两线(串行数据SDA和串行时钟SCL线)式串行总线,用于连接微控制器与其外围设备,是微电子通信控制领域广泛采用的一种总线标准。I2C是同步通信的一种特殊形式,具有接口线少,控制方式简单,器件封装形式小,通信速率较高等优点。和I2C一样,SMBus不需增加额外引脚,但是工作频率只能在10kHz到最高100kHz围,且专门面向智能电池管理应用。SMBus为系统电源管理等任务提供了一条控制总线,使用SMBus的系统,设备之间发送和接收消息都是通过SMBus,而不是使用单独的控制线,这样可以节省设备的管脚数。SMBus最初的目的是为智能电池、充电电池和与其他系统通信的微控制器之间的通信链路而定义的,如今也被用来连接各种设备,包括电源相关设备,系统传感器,EEPROM通讯设备等等,但SMBus最适用于笔记本电脑上,检测各元件状态并更新硬件设置。tRtFTHIGHTSU:STOTSU:STATHD:STATLOWTSU:DATTHD:DATSMBCSMBDTBUF图4-4 BQ2040总线时序表4.1 时序特性符号参数最小最大单位FSMBSMBus工作频率10100KHzTBUF总线停止和启动间的空闲时间4.7sTHD:STA启动后保持时间4.0sTSU:STA重复启动时间4.7sTSU:STO停止时间4.0sTHD:DAT数据保持时间300nsTSU:DAT数据建立时间250nsTLOW低电平时间4.7sTHIGH高电平时间4.0sTF时钟/数据下降时间300msTR时钟/数据上升时间1000msTLOW:SEXT低电平累积时间25TTIMEOUT2535第五章 系统测试硬件设计完成将待设计的系统分割成各个功能模块,然后组合成一个合理的可行性方案的任务,用Protel等相关软件完成硬件原理图的设计后,制成PCB板。软件设计则负责根据系统相关的功能要求,进行模块的编程等,完成硬件设计后,我们可以通过Keil4.0等类似软件对单片机烧入程序,最后便可进行锂离子电池电量检测系统的检测试验,定时记录相关数据,对锂离子电池电量检测结果的准确性进行测试。系统测试的思路可以针对BQ2040的三个重要寄存器:Full Charge Capacity(FCC)、Remaining Capacity(RM)、Discharge Count Register(DCR)。通过每隔一定时间读取这三个寄存器的数据,这样记录多组数据后,可以通过以下几个主要关系进行验证分析系统的准确性与可靠性: RM FCC。 放电的逆过程即充电,充电期间,若RM数值停止递增,则RM=FCC,这时我们读取的RM应近似等于FCC,此时DCR=0。若要锂离子电池充分充电,我们还可以根据BQ2040进行充电控制,向RM写入一个用户自定义的值。 DCR随着RM的递减逐渐增大,直到RM=0,锂离子电池放电和自放电都会使DCR增大,但当RM=0后,只有放电才使DCR增大。结 论本文针对基于单片机的锂离子电池电量检测系统的设计进行研究,对该系统的总体设计等方面进行了详细叙述,硬件系统设计主要包括模拟量信号采集部分,电量检测部分,中央处理控制部分,LED驱动输出显示等各个部分的设计,检测结果采用了直观的数码显示,可直接显示锂离子电池的剩余电量信息,避免了人工计算。另外本文还完成了软件系统的设计,用C语言进行编程,实现数据的采集、转换、存储和传输,进一步证实了本设计的有效性和可行性,同时本文给出了硬件原理图、软件流程图与源程序设计。在设计过程当中,充分考虑了锂离子电池的性能特点,本系统的电路设计结构简单,基于W78E365单片机,用BQ2040进行锂离子电池电量检测,以TM1629驱动控制LED数码输出显示锂离子电池的剩余电量,用较少的外部元件实现高精度测量,降低了开发成本,提高了锂离子电池电量检测效率。经过反复多次的设计与修改,该系统的各项指标均达到了设计要求,具有很高的实用价值。由于毕业设计的时间限制,希望今后在以下方面进行更深一层的研究:(一) 硬件方面:硬件抗干扰能力上还需得到进一步的提高。(二) 软件方面:增加锂离子电池电量检测更多相关功能。参考文献1 灵智,汝强锂离子电池材料的研究现状Z,2009:34.2 申飞,易菊兰电池电量精确测量方法的研究与实现J计算机工程与应用,2009,45(17):2442243 郭炳焜,锂离子电池:中南大学,2002.4 王海明,绳楦,兴顺锂离子电池的特点与应用Z,2004:132134.5 俊谟.单片机中级教程M.:航空航天大学,2006.3.6 友德,志英,涂时亮单片机微型机原理、应用与实验.:复旦大学,2004.7 培根,占辉,欣,村峰MCS-51单片机原理与应用.:清华大学.8 戴仙金51单片机与其C语言程序开发实例M:清华大学,2008.9 朱清慧等Proteus教程电子线路设计、制版与仿真M.:清华大学,2008.10 bq2040 Gas Gauge IC With SMBus Interface, Texas Instruments Incorporated,2005.11 Anbuky A.H,Pascoe P.E,VRLA.battery state-of-charge estimation in telecommunication power systemsJ.Industrial Electronics, IEEE Transactions on Volume 47, Issue 3, June 2000 Page(s):565573.致 毕业设计象征着大学生涯的结束,这也是一个至关重要的环节,它能有效地检验我们的学习成果,也是我们理论联系实际的一次机会。在这几个月的时间里,饶繁星老师严谨的治学态度和热忱的工作作风使我十分佩服,其渊博的专业知识,严以律己、宽以待人的崇高风,朴实无华、平易近人的人格魅力对我影响深远。虽然在毕业设计的整个过程中我遇到过很多的问题,但他的指导让我受益匪浅,和我同一组的同学也给我了我极大的帮助,加上自己不断的努力摸索,最终完成了毕业设计。在此对帮助我的老师和同学们表示深深的感。经过这次毕业设计,我在理论知识、研究能力与外语水平等各方面的能力都有了很大的提升,并且还提高了我的动手能力与设计能力,同时还学会了使用Protel、KeilC、Autocad等软件的常用操作。这些都是我在平时学习和生活中所得不到的锻炼,更是我人生中宝贵的经历。大学四年,学到的不仅是书本上的知识,对我来说最重要的是学会如何做人,这才是这几年得到的最宝贵,最值得珍惜的财富,相信在以后的人生道路上,会有我的一番作为。感母校四年来对我的培养与教导。最后,我在此感在百忙之中为我的毕业设计评阅并提出宝贵意见的专家们!由于水平有限,本文难免有遗漏和错误之处,恳请各位老师批评指正,!附 录#include #include #include sbit SMBC=P16;/sbit SMBC=P14; /bq2040中SMbus的时钟端sbit SMBD=P17;/sbit SMBD=P15; /bq2040中SMbus的数据端unsigned char bq2040_Command_RC=0x0f; /读剩余电量的指令signed char bq2040_Command_C=0x0a; /读电流的指令unsigned char bq2040_Command_BS=0x16; /读电池状态unsigned char ReceiveData_L, ReceiveData_H, Current_H_7, BatteryStatus_L_6, BatteryStatus_L_5; /从BQ2040接收数据的低位,高位,电流正负位(正表示充电,负表示放电),电池状态充放电判断(0表示充电,0x40表示放电),电池状态满充判断(0表示未充满,0x20表示充满)unsigned char ack; /用于判断接收确认是否超时,超时为1,未超时为0void Delay(void) /延时子程序 _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_();/以下函数详见SMbus原理void Star(void) /开始子程序 当SMBC为高电平时,SMBD上出现一个下降沿。该条件启动一次传输过程 SMBC=0; Delay(); SMBD=1; Delay(); SMBC=1; Delay(); SMBD=0; Delay();void Stop(void) /停止子程序 当SMBC为高电平时,SMBD上出现一个上升沿。该条件停止一次传输过程 SMBC=0; Delay(); SMBD=0; Delay(); SMBC=1; Delay(); SMBD=1; Delay();void Ackw(void) /ACKNOWLEDGE写子程序 SMBC为高时,采样到SMBD为低电平 unsigned char a=0; ack=0; SMBC=0; Delay(); SMBD=1; Delay(); SMBC=1; Delay();void Ackr(void) /ACKNOWLEDGE读子程序 SMBC为高时,采样到SMBD为低电平 SMBC=0; Delay(); SMBD=0; Delay(); SMBC=1; Delay();void Nack(void) /NOT ACKNOWLEDGE子程序 SMBC为高电平时,采样到SMBD为高电平 SMBC=0; Delay(); SMBD=1; Delay(); SMBC=1; Delay();void Send(unsigned char b) /发送子程序 将b按从最高位到最低位的顺序,逐位的发送给bq2040 unsigned char i,x,y,z; z=0x80; for(i=1;i=1; unsigned char Receive(void) /接收子程序 将bq2040中的数据逐位的读出 unsigned char i,g=0x00; for(i=1;i9;i+) SMBC=0; _nop_(); _nop_(); SMBD=1; Delay(); SMBC=1; Delay(); g=1; if(SMBD) g+; Delay(); return g;void Read(unsigned char Command) /读剩余电量子程序 unsigned int a; Star(); /开始 a=0x16; Send(a); /发送器件地址0x16 Ackw(); /发送确认 if(ack) /未确认则重新发送 return; Send(Command); /发送读剩余电量指令 Ackw(); /发送确认 if(ack) /未确认则重新发送 return; Star(); a=0x17; /发送器件地址0x17 Send(a); Ackw(); /发送确认 if(ack) /未确认则重新发送 return; ReceiveData_L=Receive(); /接收剩余电量低8位数据 Ackr(); /接收确认 ReceiveData_H=Receive(); /接收剩余电量高8位数据 Nack(); /非确认 Stop(); /结束void Delay2(void) /4s显示延时 unsigned char i,j,k; for(i=0;i255;i+) for(j=0;j255;j+) for(k=0;k20;k+);main() unsigned char RemainingCapacity_H,RemainingCapacity_L,Current_H,BatteryStatus_L; TMOD=0x20; /串口波特率9600bps,方式3,无校验,数据位8,停止位1. TH1=0xFD; TL1=0xFD; PCON=0x00; TR1=1; SCON=0xD8; power_led=0; while(1) Read(bq2040_Command_C); / 向串口发送当前电流,利用串口助手可以看到 if(ack=0) /读数据成功,则执行赋值 Current_H=ReceiveData_H; SBUF=bq2040_Command_C; while(!TI); TI=0; SBUF=Current_H; while(!TI); TI=0; SBUF=ReceiveData_L; while(!TI); TI=0; Current_H_7=Current_H&0x80; Read(bq2040_Command_BS); / 向串口发送电池状态,利用串口助手可以看到 if(ack=0) /读数据成功,则执行赋值 BatteryStatus_L=ReceiveData_L; SBUF=bq2040_Command_BS; while(!TI); TI=0; SBUF=ReceiveData_H; while(!TI); TI=0; SBUF=BatteryStatus_L; while(!TI); TI=0; BatteryStatus_L_6=BatteryStatus_L&0x40; BatteryStatus_L_5=BatteryStatus_L&0x20; Read(bq2040_Command_RC); / 向串口发送剩余电量,利用串口助手可以看到if(ack=0) /读数据成功,则执行赋值 RemainingCapacity_H=ReceiveData_H; RemainingCapacity_L=ReceiveData_L; SBUF=bq2040_Command_RC; while(!TI); TI=0; SBUF=RemainingCapacity_H; while(!TI); TI=0; SBUF=RemainingCapacity_L; while(!TI); TI=0; if(ack=0) LedDisplay_Battery(RemainingCapacity_H,RemainingCapacity_L); else if(ERROR=0xEE) LedDisplay_Adapter();
展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 办公文档 > 工作计划


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!