基于单片机的锂离子电池电量检测系统设计(本科毕业论文)

更新时间:2024-06-23 19:59:01 阅读量: 综合文库 文档下载

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

南 昌 工 程 学 院

毕 业 设 计 (论 文)

机械与电气工程学院 系(院) 电气工程及其自动化 专业

毕业设计(论文)题目 基于单片机的锂离子电池电量检测系统设计

学生姓名 纪炜焕 班 级 电气工程及其自动化(1)班

学 号 2009100106 指导教师 饶繁星

完成日期 2013 年 5 月 20 日

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

Lithium-ion battery detection system design based on MCU

总计 毕业设计(论文)表 格插 图页 个

34 7 15

摘 要

锂离子电池与其他种类的电池相比有着诸多优势,已经成为我们日常生活中必不可少的一部分。相信在使用锂离子电池的过程中,我们常会考虑还剩多少电量的问题,但是又找不到好的电量检测方法,针对该要求,本文设计了一种基于单片机的锂离子电池电量检测系统,该检测系统可以满足我们日常生活中对锂离子电池电量检测的需求,以全面掌握锂离子电池的电量状态。

本文主要叙述了基于单片机的锂离子电池电量检测系统的研究和设计,该系统主要由模拟量采集、锂离子电池检测模块、单片机模块、以及LED驱动显示电量等相应的部分组成,介绍了锂离子电池的特点、电池电量检测原理、系统的结构及性能,重点介绍了该系统的软硬件设计等。

考虑到检测系统的复杂程度、精确性、可靠性等各个方面,本文介绍的设计方案能够满足我们对锂离子电池电量检测的要求。

关键字:锂离子电池 BQ2040 电池检测 单片机 LED显示

I

Abstract

Compared 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 detection module, 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

II

目录

摘 要 ............................................................................................................................................. I Abstract ..................................................................................................................................... II 第一章 绪论 ............................................................................................................................. 1

1.1 本课题研究的目的及意义 ............................................................................................ 1 1.2 本课题研究内容 ............................................................................................................ 1 1.3 锂离子电池的放电及温度特性 .................................................................................... 2 1.4 锂离子电池电量检测系统的发展方向 ........................................................................ 3

第二章 系统总体结构设计 ................................................................................................. 4

2.1 系统总体结构框图 ........................................................................................................ 4 2.2 单片机的选择 ................................................................................................................ 5

2.2.1 W78E365A40PL引脚说明 ................................................................................ 5 2.2.2 W78E365特性介绍 ............................................................................................ 6 2.3 电池电量检测芯片BQ2040 ......................................................................................... 7

2.3.1 BQ2040 引脚说明 ............................................................................................. 7 2.3.2 BQ2040的检测原理 .......................................................................................... 8 2.4 LED驱动控制芯片TM1629 ........................................................................................ 9

2.4.1 TM1629引脚说明 .............................................................................................. 9 2.4.2 TM1629特性介绍 ............................................................................................ 10 2.5 数据传输存储芯片24C64 .......................................................................................... 11

2.5.1 24C64概述 ....................................................................................................... 11 2.5.2 24C64引脚说明 ............................................................................................... 11 2.5.3 24C64特性介绍 ............................................................................................... 12 2.6 时钟芯片DS1302 ........................................................................................................ 12

2.6.1 DS1302概述 ..................................................................................................... 12 2.6.2 DS1302引脚说明 ............................................................................................. 12

第三章 硬件系统设计 ......................................................................................................... 14

3.1 单片机与时钟电路部分 .............................................................................................. 14

III

3.1.1 W78E365概述 .................................................................................................. 14 3.1.2 电路图设计 ....................................................................................................... 14 3.2 BQ2040部分 ............................................................................................................... 15

3.2.1 BQ2040概述 .................................................................................................... 15 3.2.2 电路图设计 ....................................................................................................... 16 3.3 TM1629驱动控制LED显示部分 ............................................................................. 16

3.3.1 TM1629概述 .................................................................................................... 16 3.3.2 LED数码管 ...................................................................................................... 16 3.3.3 电路图设计 ....................................................................................................... 17

第四章 软件系统设计 ......................................................................................................... 18

4.1 程序设计流程 .............................................................................................................. 18

4.1.1 初始化 ............................................................................................................... 18 4.1.2 主程序流程图 ................................................................................................... 19 4.1.3 A/D转换与中断服务 ....................................................................................... 20 4.2 BQ2040总线时序 ....................................................................................................... 21

第五章 系统测试 .................................................................................................................. 23 结 论 ......................................................................................................................................... 24 参考文献 .................................................................................................................................... 25 致 谢 ......................................................................................................................................... 26 附 录 ......................................................................................................................................... 27

IV

南昌工程学院本科毕业设计(论文)

第一章 绪论

1.1 本课题研究的目的及意义

锂离子电池自问世以来,到现在已经发展成为我们每个人众多生活必需品当中的一部分,是如今人们在日常生活中使用极其广泛的一种电池。我国通讯、电力电子等相关行业的飞速发展,使人们对锂离子电池的利用率和维护工作的重视程度不断提高,锂离子电池电量检测的市场需求随之越来越大。然而现在的实际情况却是由于国内目前的一些检测设备的检测方法不精确等原因,使其不能完全满足我们对锂离子电池电量检测的需求,同时国外的同类检测设备虽然性能较好,但是价格太高,不适合我们日常检测使用。微处理器技术的发展与电池电量检测方法的不断改善,为提高锂离子电池电量检测系统的性能和降低其制造成本提供了可能。针对该要求,本文设计了一种基于单片机的锂离子电池电量检测系统,该检测系统的设计对全面掌握锂离子电池的电量状态,提高其利用率具有现实意义。本设计的研究成果如果能够得到大家的一致认同,以致今后被广泛应用于我们的日常生活当中,比如应用于生活中常用的或常见的便携式电子产品领域,这必将提高人们的日常生活质量,并且还能起到提高锂离子电池利用率的作用,从另一方面看,这也是从某种程度上响应了国家“节能减排”政策。

1.2 本课题研究内容

该课题是设计一个锂离子电池电量检测系统,研究对象为符合国标GB/T 18287-2000的锂离子电池,其主要参数有:标称电压3.7V,标称容量1050mAH,充电电压4.2V。在做毕业设计的这段时间里,自己通过互联网查询、图书馆书籍资料搜索等多种途径,对该课题的研究内容进行了充分的理解与学习,使我对锂离子电池的电量检测原理,以及一些基于单片机的C程序编写等内容,都有了进一步的了解与掌握。

本课题研究如何设计一个满足我们日常生活要求的锂离子电池电量检测系统,要求适用于日常使用,必须控制成本,并且需要满足精度的要求。本文的设计思路是利用单片机及一些市场上常见的功能芯片,经过综合所有应考虑的重要因素后,最终确定了该检测系统里的一些重要器件类型,其中单片机部分就选用W78E系列中的W78E365A40PL,锂离子电池的电量检测部分就选用流行于目前市场上并且较专业的电池电量检测芯片BQ2040,输出部分决定采用TM1629驱动控制LED数码输出显示。TM1629是一款专业用于驱动控制LED数码输出显示的芯片,已经被广泛应用于目前的市场中,其次,输出采

1

第一章 绪论

用数码显示,易于用户读取所需要的锂离子电池的电量信息,更加人性化。综上,最终设计出基于W78E365A40PL,利用电池电量检测芯片BQ2040,并且数码输出显示我们所需数据的锂离子电池电量检测系统,该系统由模拟量参数采集部分、电量检测部分、中央处理控制部分(单片机)以及LED驱动显示等相应模块组成,前两部分可由BQ2040完成。至此,该基于单片机的锂离子电池电量检测系统的整体框架便已明了。

本文重点介绍了该锂离子电池电量检测系统的硬件设计和软件设计。硬件设计的主要职责就是将系统分割成的各个功能部分组合成一个合理的可行性方案;软件设计则负责根据系统相关的功能要求,进行模块的编程等,最后用Protel等相关软件画出原理图,并利用Proteus仿真,对检测结果的准确性进行测试。

1.3 锂离子电池的放电及温度特性

(一)放电特性

本文必须先对锂离子电池的放电特性进行简单说明,因为如果要检测锂离子电池的电量,对锂离子电池进行放电检测是检测过程中必须经过的一道程序,大部分我们所需要的参数都是在对锂离子电池进行放电过程中得到的,但是对锂离子电池进行放电测试时,其放电力度必须要得到精确的控制,锂离子电池对过放电相当的敏感,一旦放电电压或放电电流超过了本身的承受范围,将会导致锂离子电池自身快速升温,影响锂离子电池的使用寿命及使用性能。

(二)温度特性

虽然在检测过程中需要控制锂离子电池的温度在一定的范围之内,因为不适合的温度,将导致锂离子电池内部生成许多影响检测结果的无用化合物,这是锂离子电池内部化学反应的结果,而且温度影响着锂离子的迁移速度,但是日常生活中的环境温度不会超过锂离子电池正常使用的温度范围,在进行锂离子电池电量检测的过程中,我们不用对锂离子电池所在环境温度进行严格控制。不可以将锂离子电池置于温度过高或过低的环境中存储或使用,不然严重影响锂离子电池的使用寿命及使用性能。

另外附带一句,如果我们要存储锂离子电池时,必须将温度范围控制在(-15一+55)℃,如果是使用锂离子电池或对其进行放电测试,最好将温度范围控制在(-35一+75)℃。

2

南昌工程学院本科毕业设计(论文)

1.4 锂离子电池电量检测系统的发展方向

人性化设计是任何产品能否面向市场并取得成功的决定因素之一。需要为用户提供直观易懂方便操作的界面,锂离子电池电量检测系统的发展方向应从以下几个方面考虑:

① 人机互动。在用户进行操作使用的过程中,系统会根据用户的操作反馈显示出诸多的相关提示信息,用户使用起来简单,提升该系统的用户体验。

② 系统的内部结构须采用插板式形式。这样就可以打消用户担心产品不易维修的顾虑,对于自己有相关维修经验及能力的用户,也提供了让用户维修的机会,解决了与维修相关的一连串问题。

③ 相关功能的延伸。善于挖掘、开发出锂离子电池电量检测系统应具备的功能,使产品具备更多有实用价值的相关功能,以适应不同用户对锂离子电池电量检测要求,进一步完善用户体验。

当然,在锂离子电池的使用过程中,还存在诸多的实际性问题,比如说老化,诸多其他不确定性因素也会对检测结果有所影响。未来在开发锂离子电池电量检测系统时,必须全面考虑会对检测过程中或者检测结果造成多多少少影响的因素。这样才能使该锂离子电池电量检测系统一直发展下去,随着时间的推移而不被淘汰。

3

第二章 系统总体结构设计

第二章 系统总体结构设计

2.1 系统总体结构框图

该系统总体结构可以划分为几个重要部分:锂离子电池模拟量参数采集部分、电量检测部分、中央处理控制部分(单片机)和LED驱动显示部分。每个部分重要器件的选型已经在前面具体说明,将系统总体结构分为以上各部分后,整个系统的工作原理及重要模块等信息便简单明了,系统每个部分都有着其自己重要的责任,只有系统内的每个模块都按其职责正常运行,整个锂离子电池电池检测系统才能正常工作。如图2-1所示,该图为锂离子电池电量检测系统的总体结构框图,其中模拟量参数采集部分负责通过传感器及测量电路等来采集锂离子电池的模拟量参数,这些参数包括锂离子在放电过程中的电流(压)大小、检测到的温度值等相关参数;电量检测部分主要负责依据上部分已经采集到的参数,对锂离子电池的电量进行检测与计算,这两个部分可由BQ2040完成;中央处理控制部分即单片机负责对整个系统进行控制;LED驱动显示部分负责驱动LED,并对被测锂离子电池的剩余电量信息进行数码输出显示。

锂电池 模拟量参数采集电流 电压 温度 电量 检测 I U T 中央处理控制部分 LED 驱动 图2-1 系统总体结构框图

4

南昌工程学院本科毕业设计(论文)

2.2 单片机的选择

2.2.1 W78E365A40PL引脚说明

在能够满足锂离子电池电量检测系统相关功能的前提下,如何选择一款合适的单片机是关键。本设计采用了W78E系列中的W78E365A40PL,其引脚如下图所示

图2-2 W78E365A40PL引脚

表2.1 W78E365A40PL引脚说明

引脚符号 EA 引脚名称 外部访问使能端 引脚描述 接低电平时,只读取外部程序存储器中的内容;接高电平时,先读取片内存储器,若地址超出,自动读取片外程序存储器中的内容。 PSEN ALE 程序存储使能端 地址锁存使能端 片外程序存储器读选通信号 CPU访问外部ROM或RAM时,输出低八位地址锁存信号。 RST XTAL1 复位端 晶体振荡器输入端 5

高电平复位 由一个外部时钟驱动 第二章 系统总体结构设计

续表2.1

引脚符号 XTAL2 VSS VDD P0.0-P0.7 P1.0-P1.7 P2.0-P2.7 引脚名称 晶体振荡器输出端 接地 电源 端口0 端口1 端口2 引脚描述 XTAL2是XTAL1的反相端 接地 接电源工作电压 功能与标准8052相同 功能与标准的8052相同 带有内部上拉电路的双向I/O口,扩展外部存储器时,作为高八位地址总线。 P3.0-P3.7 P4.0-P4.3

2.2.2 W78E365特性介绍

(1)电气特性:

表2.2 W78E365电气特性

端口3 端口4 功能与标准8052相同 分时复用功能的双向I/O口 参数 直流电源电压 输入电压 工作温度 贮存温度

符号 VDD?VSS VIN TA TST 最小值 -0.3 VSS-0.3 0 -55 最大值 +6.0 VDD+0.3 70 +150 单位 V V ℃ ℃ 注释:使用过程中若长时间超出最大额定值,将会对器件的使用寿命、使用性能、使用可靠性等多方面均造成严重损害。

(2)功能特性:

? 全静态设计的CMOS 8位微处理器 ? 64KB带ISP功能的Flash EPROM ? 4KB辅助Flash EPROM用于存储装载程序 ? 4个8位双向I/O口,一个附加4位I/O口

6

南昌工程学院本科毕业设计(论文)

? 3个16位定时器 ? 一个增强型全双工串行口 ? 看门狗定时器

? 8个中断源,2级中断能力 ? 电源管理带空闲模式和掉电模式 ? 代码保护

2.3 电池电量检测芯片BQ2040

2.3.1 BQ2040引脚说明

BQ2040引脚分布如下图所示:

图2-3 BQ2040引脚分布

表2.3 BQ2040引脚说明

引脚符号 VCC ESCL ESDA LED1~LFD4 VSS SR

引脚名称 电源电压输入端 时钟存储端 地址数据存储端 指示灯1-4显示端 逻辑地端 电阻器检测输入端 7

引脚描述 电源电压输入 与外部存储器间进行传输 双向传输 LED数码输出显示 接地 接锂离子电池负极和检测电阻

第二章 系统总体结构设计

续表2.3

引脚符号 DISP 引脚名称 显示控制输入端 引脚描述 接高电平时LED显示无效; 接低电平时LED显示有效。 SB PSTAT SMBD SMBC REF VOUT

2.3.2 BQ2040的检测原理

BQ2040的电量检测原理我们也需要做简单的了解,BQ2040内置了温度传感器,它通过内置的温度传感器和内部计数器来估算被测锂离子电池的放电程度,放电的同时还可以根据温度需要进行温度补偿,并且能够通过锂离子电池的放电周期,校准锂离子电池的实际容量,外接内部写有初始化程序的EEPROM,负责控制电池的管理工作,串口和外部EEPROM可以用来编程。

在日常生活中,使用锂离子电池是一般都不需要进行温度保护,因为日常情况下,锂离子电池工作所在环境温度不会超过其工作温度范围之外,除非需要该锂离子电池一直处于长期的持续的工作状态,这时候应该采取适当的温度保护措施。但是BQ2040是一款流行与目前市场上相当专业的电池电量检测芯片,BQ2040对被测锂离子电池进行电量检测的同时,会检测锂离子电池的温度情况,因为BQ2040内置了温度传感器,可以进行过热保护等控制措施,不需要外接热敏电阻,如果检测到温度过低,这时候BQ2040还可以进行温度补偿,不需要外接谐振器等相关器件,进一步减少了器件,降低了设计成本。

第二电池输入端 数据保护输入端 监测锂离子电池的充电参数 锂离子电池保护 SM数据总线,即数据总线连接端 地址和数据的双向传输 SM时钟总线,即时钟总线连接端 双向传输,锁定数据传输 基准电压,即参考电压端 供电输出端 为场效应管输出提供参考电压 为外围电路提供电压 8

南昌工程学院本科毕业设计(论文)

2.4 LED驱动控制芯片TM1629

2.4.1 TM1629引脚说明

图2-4 TM1629引脚分布

表2.4 TM1629引脚说明

引脚符号 DI0 引脚名称 引脚描述 数据输入/输在时钟上升沿从低位开始输入/输出串行数据 出端 STB 片选端 STB为低电平时,其后的第一个字节作为指令;STB为高电平时,CLK被忽略。 CLK K0~K3 SEG1/KS1~SEG8/KS8 SEG9~SEG16 引脚符号 GRID1~GRID8 时钟输入端 在时钟上升沿输入/输出串行数据。 键盘扫描输入 输入该脚的数据在显示周期结束后被锁存。 段输出端 段输出端 引脚名称 位输出端 段输出 段输出 引脚描述 位输出 9

第二章 系统总体结构设计

续表2.4

引脚符号 VDD VSS NC

注意:在DIO端口输出数据的时候,该引脚需要外接一个带有一定阻值上拉电阻,推荐使用10K的上拉电阻,并且读数时要选择在时钟的上升沿进行,这样才能保证读数的稳定性。读数时若选择在时钟的下降沿,此时读数并不稳定,影响数据准确性。

引脚名称 逻辑电源端 逻辑地端 空脚端 引脚描述 5V±10% 接系统地 内部未连线

图2-5 芯片内部电路

2.4.2 TM1629特性介绍 ? 采用功率CMOS工艺 ? 显示模式16段×8位 ? 键扫描(8×4bit) ? 辉度调节电路

? 串行接口(CLK,STB,DIO) ? 内置上电复位电路 ? 采用QFP44封装

10

南昌工程学院本科毕业设计(论文)

2.5 数据传输存储芯片24C64

2.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

串行时钟输入端 电源输入端 接地端 产生串行同步时钟信号 电源电压输入 接地 11

第二章 系统总体结构设计

2.5.3 24C64特性介绍 ? 低功耗器件 ? 2线串行接口 ? 双向数据传输协议

? 写保护引脚用于硬件数据保护 ? 高可靠性

2.6 时钟芯片DS1302

2.6.1 DS1302概述

DS1302是美国DALLAS公司推出的一种高性能、低功耗、带RAM的实时时钟电路,它可以对年、月、日、时、分、秒进行计时,具有闰年补偿功能,工作电压为2.5V~5.5V。通过简单的串行接口,采用三线接口与CPU进行同步通信,内部有一个31×8的用于临时性存放数据的静态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引脚分布

12

南昌工程学院本科毕业设计(论文)

表2.6 DS1302引脚说明

引脚符号 X1、X2 GND CE I/O SCLK VCC1、VCC2

引脚名称 晶振引脚 接地引脚 复位脚 数据输入/输出 串行时钟引脚 电源供电引脚 引脚描述 32.768KHz 接地 在读/写数据期间必须为高 三线接口时的双向数据线 控制数据的输入与输出 VCC1:主电源;VCC2:备份电源 13

第三章 硬件系统设计

第三章 硬件系统设计

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芯片中,以便在我们需要的时候,如系统出错,需对其进行检修时,就可以把这些时间结果全部调用出来,为排查故障提供条件。

14

南昌工程学院本科毕业设计(论文)

图3-1 单片机与时钟电路原理图

3.2 BQ2040部分

3.2.1 BQ2040概述

作为一款电池电量检测芯片,BQ2040负责完成锂离子电池的电量检测模块的功能,它先采集所需被测锂离子电池的信号参数,然后按照原先已经设定好的算法检测计算出被测锂离子电池的电量,通过I2C总线与单片机部分进行数据交换,最终通过LED驱动显示部分数码输出显示锂离子电池的电量信息给用户。电量检测结果用LED数码输出显示,从而让我们及时了解电量信息,完全掌握锂离子电池的用电状态,提高利用率。

本系统电量检测部分采用电池电量检测芯片BQ2040,除了支持对锂离子电池的高精度电量检测,还满足其他多种电池的电量检测工作,比如能够很好的检测镍镉电池、镍氢电池的电量。

15

第三章 硬件系统设计

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数码管作为输出显示部分。输出显示模块将系统检测出的锂离子电池剩余电量数码显示出来,通过两个数码管就可以显示出剩余电量的百分比。这样我们就可以对当前锂离子电池的电量信息有一个更加直观的了解。

16

南昌工程学院本科毕业设计(论文)

图3-3 LED数码管共阳极和共阴极示图

3.3.3 电路图设计

图3-4 TM1629电路图

17

第四章 软件系统设计

第四章 软件系统设计

软件设计包括主程序和中断服务程序。主程序完成单片机的初始化,以及等待中断,中断跳转等;中断服务程序包括上电中断服务程序、定时器/计数器中断服务程序等。

4.1 程序设计流程

4.1.1 初始化

初始化程序流程图如图4-1所示:

初始化 初始化堆栈 初始化各个端口 输入端使能 等待/响应中断

图4-1 初始化程序流程图

初始化程序的功能就是初始化各个端口,使其各部件完成先前的准备工作。设置好各个端口的功能,比如哪些端口设置为中断的输入口,哪些设置为外部模块。设置完成以后就可以打开各个中断使能,使系统响应相对应的中断跳转程序。

18

南昌工程学院本科毕业设计(论文)

4.1.2 主程序流程图

开始 系统初始化 采样锂离子电池电信号及温度等参数,BQ2040检测电池电量 W78E365单片机控制 TM1629驱动控制LED DS1302时钟电路 LED数码显示电量 结束返回 图4-2 主程序流程图

主程序完成初始化后,便等待定时器中断状态或外部中断的到来,然后完成锂电池电压、电流和温度值的信号采集,最后完成锂离子电池电量的计算,并在LED输出显示屏上显示出来。

19

第四章 软件系统设计

4.1.3 A/D转换与中断服务

开始 初始化 开中断 启动AD 否

定时中断 读时钟信息 AD转换 是 数据 中断返回 清标志位 置读数标志位 返回

图4-3 A/D转换与中断服务流程图

我们可以通过读时钟信息得到每一次锂离子电池电量检测时的时间,当然还有另外一个重要作用,如果知道了每次电量检测的结果及相对应的时间,就能帮助我们有效地监测该锂离子电池电量检测系统的工作情况是否正常,方便我们排查故障原因,及时对该系统进行维护和检修。

参考子程序(以每50ms中断一次举例): void time0(void) interrupt 1 using 2 {

TH0=0x3c;

20

南昌工程学院本科毕业设计(论文)

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最适用于笔记本电脑上,检测各元件状态并更新硬件设置。

21

第四章 软件系统设计

tR SMBC

TSU:STA THD:STTSU:ST SMBD TBUF TSU:DAT TLOW tF THIGH THD:DAT 图4-4 BQ2040总线时序

表4.1 时序特性

符号 FSMB TBUF THD:STA TSU:STA TSU:STO THD:DAT TSU:DAT TLOW THIGH TF TR TLOW:SEXT TTIMEOUT

参数 SMBus工作频率 总线停止和启动间的空闲时间 启动后保持时间 重复启动时间 停止时间 数据保持时间 数据建立时间 低电平时间 高电平时间 时钟/数据下降时间 时钟/数据上升时间 低电平累积时间 最小 10 4.7 4.0 4.7 4.0 300 250 4.7 4.0 25 最大 100 300 1000 25 35 单位 KHz μs μs μs μs ns ns μs μs ms ms

22

南昌工程学院本科毕业设计(论文)

第五章 系统测试

硬件设计完成将待设计的系统分割成各个功能模块,然后组合成一个合理的可行性方案的任务,用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增大。

23

结论

结 论

本文针对基于单片机的锂离子电池电量检测系统的设计进行研究,对该系统的总体设计等方面进行了详细叙述,硬件系统设计主要包括模拟量信号采集部分,电量检测部分,中央处理控制部分,LED驱动输出显示等各个部分的设计,检测结果采用了直观的数码显示,可直接显示锂离子电池的剩余电量信息,避免了人工计算。另外本文还完成了软件系统的设计,用C语言进行编程,实现数据的采集、转换、存储和传输,进一步证实了本设计的有效性和可行性,同时本文给出了硬件原理图、软件流程图及源程序设计。

在设计过程当中,充分考虑了锂离子电池的性能特点,本系统的电路设计结构简单,基于W78E365单片机,用BQ2040进行锂离子电池电量检测,以TM1629驱动控制LED数码输出显示锂离子电池的剩余电量,用较少的外部元件实现高精度测量,降低了开发成本,提高了锂离子电池电量检测效率。经过反复多次的设计及修改,该系统的各项指标均达到了设计要求,具有很高的实用价值。

由于毕业设计的时间限制,希望今后在以下方面进行更深一层的研究: (一)硬件方面:硬件抗干扰能力上还需得到进一步的提高。 (二)软件方面:增加锂离子电池电量检测更多相关功能。

24

南昌工程学院本科毕业设计(论文)

参考文献

[1] 赵灵智,汝强.锂离子电池材料的研究现状[Z],2009:3~4.

[2] 李申飞,易菊兰.电池电量精确测量方法的研究与实现[J].计算机工程与应用,2009,45(17):244~224.

[3] 郭炳焜,锂离子电池.长沙:中南大学出版社,2002.

[4] 王海明,郑绳楦,刘兴顺.锂离子电池的特点及应用[Z],2004:132~134. [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 systems[J].Industrial Electronics, IEEE Transactions on Volume 47, Issue 3, June 2000 Page(s):565~573.

25

致谢

致 谢

毕业设计象征着大学生涯的结束,这也是一个至关重要的环节,它能有效地检验我们的学习成果,也是我们理论联系实际的一次机会。在这几个月的时间里,饶繁星老师严谨的治学态度和热忱的工作作风使我十分佩服,其渊博的专业知识,严以律己、宽以待人的崇高风范,朴实无华、平易近人的人格魅力对我影响深远。虽然在毕业设计的整个过程中我遇到过很多的问题,但他的指导让我受益匪浅,和我同一组的同学也给我了我极大的帮助,加上自己不断的努力摸索,最终完成了毕业设计。在此对帮助我的老师和同学们表示深深的感谢。

经过这次毕业设计,我在理论知识、研究能力及外语水平等各方面的能力都有了很大的提升,并且还提高了我的动手能力与设计能力,同时还学会了使用Protel、KeilC、Autocad等软件的常用操作。这些都是我在平时学习和生活中所得不到的锻炼,更是我人生中宝贵的经历。

大学四年,学到的不仅是书本上的知识,对我来说最重要的是学会如何做人,这才是这几年得到的最宝贵,最值得珍惜的财富,相信在以后的人生道路上,会有我的一番作为。感谢母校四年来对我的培养与教导。

最后,我在此感谢在百忙之中为我的毕业设计评阅并提出宝贵意见的专家们! 由于水平有限,本文难免有遗漏和错误之处,恳请各位老师批评指正,谢谢!

26

南昌工程学院本科毕业设计(论文)

附 录

#include #include #include

sbit SMBC=P1^6;//sbit SMBC=P1^4; //bq2040中SMbus的时钟端 sbit SMBD=P1^7;//sbit SMBD=P1^5; //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,未超时为0 void Delay(void) //延时子程序 { _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_();

27

附 录

_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=0; Delay(); SMBD=0; Delay(); SMBC=1; Delay(); SMBD=1; Delay(); }

SMBC为高电平时,SMBD上出现一个上升沿。该28

当南昌工程学院本科毕业设计(论文)

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();

29

附 录

}

void Send(unsigned char b) //发送子程序 将b按从最高位到最低位的顺序,逐位的发送给bq2040 {

unsigned char i,x,y,z; z=0x80; for(i=1;i<9;i++) { x=b&z; if(x==0) y=0; else y=1; SMBC=0; Delay(); SMBD=y; Delay(); SMBC=1; Delay(); z>>=1; } }

unsigned char Receive(void) {

unsigned char i,g=0x00; for(i=1;i<9;i++) {

SMBC=0; _nop_(); _nop_();

//接收子程序 将bq2040中的数据逐位的读出 30

南昌工程学院本科毕业设计(论文)

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;

31

附 录

ReceiveData_L=Receive(); //接收剩余电量低8位数据 Ackr(); //接收确认

ReceiveData_H=Receive(); //接收剩余电量高8位数据 Nack(); //非确认 Stop(); //结束 }

void Delay2(void) //4s显示延时 {

unsigned char i,j,k; for(i=0;i<255;i++) for(j=0;j<255;j++) for(k=0;k<20;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;

32

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

Top