您的当前位置:首页正文

基于ATmega8的智能充电器

2023-02-12 来源:步旅网
基于ATmega8智能充电器的设计

【摘 要】移动通讯、消费类数码产品、笔记本电脑、便携仪器等便携设备市场的不断扩张,使得我们对电池的性能和工作寿命的要求不断地提高。从上世纪60年代商用镍镉充电电池到近几年的锂离子电池,可充电电池容量和性能得到了飞速的发展。充电电池的使用离不开对其补充能量的充电器,而且充电器的好坏将会直接影响到电池的充电性能和使用寿命。本文详细介绍了镍镉、镍氢、锂电池这三种最为常用的充电电池的特点,同时介绍利用ATmega8和Buck开关电源设计的智能充电的设计和电路工作原理,充电期间对温度、电压、电流三项实时检测,并通过测的值来改变工作状态和停充。还设计通过恒流放电到最低限制电压来测量电池的容量。并通过LCD12864实时的显示电压、电流、温度、充放电状态等信息。

1.概述

随着人们生活水平的提高及科技的发展,很多的设备出现小型化和智能化,电子产品中的小型便携产品离不开对其提供能源的电源,针对这一状况,应运而生的充电式电池飞速的增长,而随之对于充电器的要求也越来越高,人们希望充电器能完全按照人的思维充电,即快速、安全、准确、方便的对电池进行充电。

根据人们对“智能”充电器的要求,对于纯粹的硬件电路已经很难实现智能化,而且势必硬件电路会很复杂。但是嵌入式系统出现解决了这一难题,嵌入式系统内部集成众多的接口及功能模块,而且可以通过编程去尽可能的实现人的思维,可以很方便的实现软件的更新,这样也就加快了充电器的更新速度,使发展的更快。

便携式电子产品目前主要是镍氢(NiMH)、镍镉(Nicd)、锂充电电池(Li-lon),三种充电电池都有轻便、性价比高、放电电流大、寿命长等特点,因此在各种通信设备、电动工具、仪器仪表中有着广泛的应用。普通充电器对电池采取小电流充电方式,没什么电压电流保护电路。这样,将导致电池充满所需时间长,且容易造成电池过充,影响电池寿命甚至引起事故。

所谓的智能充电器,是指在充电过程中可对电压、电流、温度进行实时检测,并根据检测的结果,对检测的结果进行判断以调节各种的充电状态,能最大限度的延长电池寿命,缩短充电时间的充电器。本充电器通过单片机设计的智能快速充电器能够判断电池状态,控制电池的快速充电,适用于不同容量小型的Nicd、 NiMH和Li-lon 电池。该方法能大大缩短充电时间,并能防止电池出现过充现象。

本充电器核心是ATmega8,是AVR单片机的一种,具有极高的性价比,AVR 微处理器是当前市场上能够以单片方式提供Flash、PWM 和10 位ADC的最高效的8 位RISC微处理器。由于程序存储器为Flash,因此可以不用象MASK ROM一样,有几个软件版本就库存几种型号。Flash 可以在发货之前再进行编程,或是在PCB贴装之后再通过ISP 进行编程,从而允许在最后一分钟进行软件更新。10 位A/D 转换器可以提供足够的测量精度,使得充好后的容量更接近其最大容量。而其他方案为了达到此目的,可能需要外部的ADC,不但占用PCB 空间,也提高了系统成本。

本充电器可对1-3节镍镉、镍氢、单节锂电池进行最优化充电,可最大限度使电池达到最大寿命。 电池在不断的充放电中容量会逐渐的减小,但是电池究竟容量为多少?目前市场极少有此设备,为此,本充电器设计一电池容量检测功能,通过对电池恒流放电到最低限制电压,计算出时间得到电池容量。这也是本充电器的又一独到之处。

2.总体设计方案

2.1 设计方框图

本智能充电器主控采用的是MCU,按照充电器的设计思路,可得到如下的方框图。

电源控制 电池

显示部分 1 控制核心 电压、电流、温度采样 图2-1 智能充电器总体方框图

2.2 方案论证与比较 2.2.1 控制核心的选择

核心部件必须得是可程序控制的器件,才能体现人性化,所以主控芯片从MCU入手。由此,得到以下几个方案的设计。

方案一:采用传统8位的51单片机,具有价格低廉,使用简单,技术支持较多等特点,但其采用复杂指令集(CISC),且机器周期长,这势必影响到对程序读取速度,而且51单片机内部没集成其他接口功能模块,如A/D,PWM,D/A等。本设计中信号采集,电源控制需PWM,A/D,D/A模块,这只能增加外围模块,硬件、软件、成本都得增加。

方案二:采用ARM或DSP之类32位的嵌入式模块。这样的芯片具有处理速度快、程序储存器大、功能模块多等优点,但都采用贴片式小封装,有众多的管脚(本充电器只需十几个管脚),硬件上的焊接设计难度大,成本高,大材小用。

方案三:采用Atmel公司生产的AVR系列ATmega8单片机,该单片机采用精简指令集(RISC),一个时钟周期对应一个机器周期,在速度上可达到要求,而且内部集成了A/D、PWM等模块,具有8K的flash储存器,而成本只和传统51相当,是有极高性价比的单片机。

综上论证,本充电器采用方案三。 2.2.2 电源控制的选择

电源控制主要是通过MCU输出控制电源模块的电流的改变,从而起到调节电压或电流的目的。目前常有的管理电源有两种方法,一是模拟式,二是开关式。现对两种充电方式进行比较。

方案一:采用模拟式电源调节方法,就是用模拟量去控制功率三极管等调节器件,使其输出随着输入模拟量改变而改变,这种方法的好处是电源波纹小,输出电的质量高,但其有一致命弱点——功率消耗太大,很多的电能被功率管以发热的形式白白浪费掉,效率一般20%-40%,不符合绿色用电规范。功率管也由于产生大量的热而需面积庞大的散热片来保护功率管。

方案二:采用开关式电源调节方法。此种方式是使功率管处于开关状态,通过储能电感间歇的充放电来改变电压的。这种方式最大优点是电源效率高,一般60%-90%,人们日常生活及工业生产中开关电源是越来越多。这种方式的电源输出电压是脉动的方波,需整流后才能使用,但存在整流输出波纹大的缺点,不过加强滤波,可以使波纹控制在一定的范围内。

从论证来看,开关式有着模拟式不可比拟的优点,因此选方案二。 2.2.3 显示器件的选择

一个实用的充电器必须得包含显示电路,这样才能使使用者查看电池的状态,及是否完成等,因此显示电路得到以下几个方案。

方案一:采用LED显示。发光二极管具有驱动电流小,各种颜色显示直观,接口电路简单,成本低的特点,一般LED只是作为指示用,很难显示一个具体的值,对于调试、程序设计者需要查看各种值就显的无力。从设计上来看不用LED。

方案二:采用LED数码管来显示,这种器件需要外围器件电路来驱动,需要较大的电流,当显示很多值时,需很多的数码管,这样在设计上复杂,成本也会很高,而且需要的接口也较多,从一般的设计上不宜采用。

方案三:采用LCD1602显示。LCD1602可采用四线或八线方式传输数据,另需两、三根控制线,接口较简单,成本也不高,显示较直观,省电,但LCD1602只能显示字符、数字及很少的简单汉字,在显示多组数据时略显不足。

方案四:采用LCD12864显示。LCD12864是图形,汉字显示器件,可显示16*16汉字32个,16*8字符数字64个,功能很多,显示直观,不过成本较高。总体有一定的性价比。LCD12864有很多中主控芯片,根据本设计电路的特点,只是显示汉字、字符和数字,并不需要显示图形,因此可采用带中文字库的LCD,而采用ST7920作主控芯片的LCD12864具有接口电路简单,程序控制方便,不用人为生成汉字,节约程序空间。ST7920的接口方式有并口和串口两种方式,采用串口总的数据线最少只需两根,这对于硬件设计会简单的多。在设计中用LCD12864实时显示电压、电流、温度、状态等信息,显示直观,对于设计来说也提供了帮助。所以本智能充电器采用的是LCD12864。

2.2.4 温度采集模块的选择

智能充电器得用到温度采集模块,这里有三种供选择,DS18B20、LM35、热敏电阻。现在对其一一考虑。

方案一:用高集成度单片机控制芯片DS18B20。这在三种选择之中是最贵的,但是此器件温度已经

2

校准,而且里面集成有温度上下限报警、EEPROM等,它通过严格的单线时序对其读或写,不过要浪费MCU很多的时间和程序储存器。

方案二:用高精度模拟输出温度芯片LM35。这种芯片亦不用进行调节而可直接读取,它输出的是把温度值化为具体的电压值,不过读取器件得有AD口。这在三者中价格居中。

方案三:用热敏电阻进行读取,它最大的优点是价格便宜,不过热敏电阻随温度变化不是直线,需手工进行测量编出数组以对应具体的温度值,由于自己校准的设备不全,难度大,而且也得需要有AD口的MCU来读取。

综上所述,充分发挥ATmega8单片机有AD口的优势,采用方案二,它具有相应快,读取简单,接口方便的优点。

2.2.5 采样电路的设计

在充电或放电中需对电池的各种信息进行测量,以作出应对,因此需信息检测电路。因送入MCU中的信息是模拟量,若直接送入MCU的AD口,有比AD口最大测量电压高的量,有比AD最大输入最大值低得多的量,也有跟其反相的量,因此不能直接送入AD口,需外围变换电路,以降低电压保护AD口或升高电压使AD口测量精度最高或使电压反相以便于测量,所以需要通过运放电路来实现上述变换。因为充电器提供的电源是单电源,不宜使用双电源运放,这样会使电路很复杂,从单电源运放来看,最宜采用通用运放LM324和LM358。这两种运放可单、双电源供电,在单电源下供电电压3V-30V,价格便宜,性能也不错。本次设计一共用6个运放,因此用一片LM324(四运放)加一片LM358(双运放)。 2.2.6 按键设计

按键一般有两类,一类是单一接口控制按键,一类是矩阵按键。矩阵按键在按键多的情况下用,可大大节省端口,另一类在按键少时用。在本次设计中共用五个按键,因此采用一对一接口按键。在这种按键下一般采用按下时低电平有效的方法,因此需上拉电阻,为了使设计简单化,又充分发挥ATmega8的优点,使能内部上拉,因此可省去外部上拉电阻,只用一按键接地就可。

3.充电原理

电池充电是通过逆向化学反应将能量存储到化学系统里实现的。由于使用的化学物质的不同,电池有自己的特性。设计充电器时要仔细了解这些特性以防止过度充电而损坏电池。 3.1 电池技术

3.1.1 镍镉电池(Nicd)

NiCd 电池前几年使用普遍的充电电池。它的优点是价格便宜,易于使用;缺点是自放电率比较高,存在记忆效应。典型的NiCd 电池可以充电1,000 次。失效机理主要是极性反转。在电池包里第一个被完全放电的单元会发生反转。为了防止损坏电池包,需要不间断地监控电压。一旦单元电压下降到1.0V 就必须停机。NiCd 电池一般以恒定电流的方式进行充电。因为镍镉电池会对环境产生污染,因此将逐渐的推出市场。

3.1.2 镍氢电池(NiMH)

继镍镉电池后,重量更轻容量更大的NiMH电池得到更为普遍的使用。在数码相机、数码摄像机等便携式设备中都能见到NiMH电池的身影。镍氢电池容量比镍镉电池高1.5-2倍,且具有不污染环境、价格便宜、性能好等优点。由于过充电会造成NiMH 电池的失效,在充电过程中进行精确地测量以

在合适的时间停止是非常重要的。和NiCd 电池一样,极性反转时电池也会损坏。NiMH 电池的自放电率大概为20%/ 月。和NiCd 电池一样,NiMH 电池也为恒定电流充电。

3.1.3 锂电池(Li-lon)

近几年,锂电池得到长足的发展。和本文中所述的其他电池相比,锂电池具有最高的能量/ 重量比和能量/ 体积比、无记忆效应等优点但是锂电池成本较高而且对充电器的要求也是最高的。锂电池以恒定电压进行充电,同时要有电流限制以避免在充电过程的初期电池过热。当充电电流下降到生产商设定的最小电流时就要停止充电。过充电将造成电池损坏,甚至爆炸。

3.2 电池的安全充电

现代的快速充电器( 即电池可以在小于3 个小时的时间里充满电,通常是一个小时) 需要能够对单元电压、充电电流和电池温度进行精确地测量,在充满电的同时避免由于过充电造成的损坏。 3.2.1 充电方法

锂电池的充电方法为恒定电压法要限流;NiCd电池和NiMH电池的充电方法为恒定电流法,且具有几

3

个不同的停止充电的判断方法。

3.2.2 最大充电电流

最大充电电流与电池容量(C) 有关。最大充电电流往往以电池容量的数值来表示。例如,电池的

容量为750mAh,充电电流为750mA,则充电电流为1C(1 倍的电池容量)。若涓流充电时电流为C/40,则充电电流即为电池容量除以40。 3.2.3 过热

电池充电是将电能传输到电池的过程。能量以化学反应的方式保存了下来。但不是所有的电能都转化为了电池中的化学能。一些电能转化成了热能,对电池起了加热的作用。当电池充满后,若继续充电,则所有的电能都将转化为电池的热能。在快速充电时这将使电池快速升温,若不及时停止充电就会造成电池的损坏。因此,在设计电池充电器时,对温度进行监控并及时停止充电是非常重要的。

3.3 停止充电的判别方法

电池的不同应用场合及工作环境限制了对判断停止充电的方法的选择。有时候温度不容易测得,但可以测得电压,或者是其他情况。本文以电压变化率(-dV/dt) 为基本的判断停止充电的方法,而以温度和绝对电压值为辅助和备份。但是本文所描述的硬件支持以下讲述的所有的方法。

3.3.1 t-时间

这是决定何时停止充电的最简单的方法。通常用于快速充电时的后备方案。有时也作为普通充电 (14 - 16 小时)方法的基本方案。适用于各种电池。 3.3.2 V-电压

当电压超出上限时停止充电。通常与恒定电流充电配合使用。最大电流由电池决定,通常为1C。为了防止充电时电流过大导致电池过热,此时电流限制是非常关键的。这个方法是锂电池的基本充电和停止方案。实际锂电池充电器往往在达到最大电压之后还继续进行第二阶段的充电,以达到100% 的电池容量。对于NiCd 电池和NiMH 电池本方法可以作为后备的判断停止充电方案。

3.3.3 -dV/dt-电压变化率

这个判断停止充电的方法利用了负的电压变化率。对于某些类型的电池,当电池充满后继续充电

将导致电压的下降。此时本方案就非常合适了。这个方法通常用于恒定电流充电,适用于对NiCd 电池和NiMH 电池的快速充电。

3.3.4 I-电流

当充电电流小于某个预先设定的数值时停止充电。通常用于恒定电压充电法。适用于锂电池。 3.3.5 T-温度

绝对温度可以作为NiCd电池和NiMH电池停止充电的依据,但是更适合于作为备份方案。温度超出设定值时任何电池都得停止充电。

3.4 影响充电电池使用寿命的因素 3.4.1 镍镉、镍氢电池

影响镍氢、镍镉电池使用寿命的主要因素是过充电和充电时电池温度过高(通常要求电池温度保持在45度以下进行充电)。另外,由于镍镉电池具有记忆效应,因此,如果在镍镉电池存储的电量没有完全放完的情况下充电的话,也会影响电池的使用寿命。

3.4.2 锂电池

影响锂电池使用寿命的主要因素有以下几点:

过放电:锂电池放电过程中,锂离子不断地从电池负极移动到电池正极,但是不能使锂离子完全地移动,必须保留一部分锂离子在电池负极中。否则电池寿命就会大大地缩短。为保证电池放电结束后电池中还保留部分锂离子,就要求电池在使用中不能过放电。通常锂电池单体的终止放电压为3.0,不要低于2.7V。

充电温度:通常要求锂电池在充电过程中温度不能超过50度,否则会影响电池使用寿命。

最高充电电压:锂电池的最高电压为4.2V,否则会使正极的锂离子移动太多,从而大大缩短电池的使用寿命。

3.5 智能充电器的设计要求

几乎是所有用户都希望充电器的充电速度越快越好。因此,充电器能够提供的充电速率就是充电器设计的一个重要指标,但是要提高这个指标的前提是充电器必须能够在快速充电阶段能够准确的判断电池的状态。快速充电器的一个本质特征就是在过度充电之前自动降低充电速率。同时充电速率最好也不

4

要超过电池生产商的建议值,通常不要超过2C的充电速率。 因此,一个安全可靠的充电器就需要能够在电池的充电过程中能够严格的控制电池的充电电流、电压、温度等物理参数。因此,智能型充电器通常应该包括恒流/恒压控制环路、电池电压监测电路、电池温度监测电路等基本单元。智能充电器的基本硬件方框图如下图所示:

图3-1 智能充电器硬件方框图

4.硬件设计

硬件设计包含MCU、Buck变换器、信息采样、电压基准、按键、LCD显示等电路,现介绍如下:

4.1 MCU电路 4.1.1 MCU简介

本充电器设计采用ATMEL公司2002年推出的一款AVR高档单片机Atmega8。其内部集成了大容量的存储器,提供了PWM脉宽调制脉冲产生器、多路AD转换器、实时时钟电路、串行接口等硬件接口。非常适合用作智能型充电器的MCU控制单元。Atmega8有DIP28和TQFP/MLF32三种封装类型。我们选择了DIP28封装,如下图所示:

5

图4-1 ATmega8封装

ATmega8是基于增强的AVR RISC结构的低功耗8位CMOS微控制器。由于其先进的指令集以及单时钟周期指令执行时间, ATmega8 的数据吞吐率高达1 MIPS/MHz,从而可以缓减系统在功耗和处理速度之间的矛盾。

AVR 内核具有丰富的指令集和32 个通用工作寄存器。所有的寄存器都直接与算逻单元(ALU)相连接,使得一条指令可以在一个时钟周期内同时访问两个独立的寄存器。这种结构大大提高了代码效率,并且具有比普通的CISC微控制器最高至10 倍的数据吞吐率。

ATmega8有如下特点:8K字节的系统内可编程Flash(具有同时读写的能力,即RWW),512 字节

EEPROM,1K 字节 SRAM,32 个通用I/O 口线,32 个通用工作寄存器,三个具有比较模式的灵活的定时器/ 计数器(T/C), 片内/ 外中断,可编程串行USART,面向字节的两线串行接口, 10 位6 路 (8 路为TQFP 与MLF 封装)ADC,具有片内振荡器的可编程看门狗定时器,一个SPI 串行端口,以及五种可以通过软件进行选择的省电模式。工作于空闲模式时CPU 停止工作,而SRAM、T/C、 SPI 端口以及中断系统继续工作;掉电模式时晶体振荡器停止振荡,所有功能除了中断和硬件复位之外都停止工作;在省电模式下,异步定时器继续运行,允许用户保持一个时间基准,而其余功能模块处于休眠状态; ADC 噪声抑制模式时终止CPU 和除了异步定时器与ADC 以外所有I/O 模块的工作,以降低ADC 转换时的开关噪声; Standby 模式下只有晶体或谐振振荡器运行,其余功能模块处于休眠状态,使得器件只消耗极少的电流,同时具有快速启动能力。

本芯片是以Atmel 高密度非易失性存储器技术生产的。片内ISP Flash 允许程序存储器通过ISP 串行接口,或者通用编程器进行编程,也可以通过运行于AVR 内核之中的引导程序进行编程。引导程序可以使用任意接口将应用程序下载到应用Flash存储区(ApplicationFlash Memory)。在更新应用Flash存储区时引导Flash区(Boot Flash Memory)的程序继续运行,实现了RWW 操作。 通过将8 位RISC CPU 与系统内可编程的Flash 集成在一个芯片内,ATmega8 成为一个功能强大的单片机,为许多嵌入式控制应用提供了灵活而低成本的解决方案。

4.1.2 MCU控制单元电路

MCU控制单元电路如下图所示:

6

图4-2 ATmega8控制口电路

图4-3 LC滤波电路 MCU系统时钟和实时时钟的选择: ATmega8具有5种类型的系统时钟源,即外部晶振、外部低频晶振、外部RC振荡、内部RC振荡及外部时钟。由于充电器在充电过程中需要计算充电时间,因此智能充电器的设计中必须包括实时时钟源。根据ATmega8的时钟源特点,本充电器的MCU系统时钟选择使用可校准的内部RC振荡器产生8M时钟,外接32.768KHz的晶振做为实时时钟的时钟源。 PWM脉宽调制波产生器: ATmega8具有3个定时/计数器,可以实现定时/计数功能外,还具有任意小于16位相位和频率可调的PWM脉宽调制输出功能。本充电器使用T/C1产生PWM,为了获得较高的PWM脉冲频率,T/C1的工作模式选择快速模式。PWM脉冲从PB1(15脚)输出,送入Buck变换器中。PB2是做为放电控制输出,它经过两级RC滤波,用运放提高电压和驱动能力,控制功率三极管去改变电流,从而改变了放电电流。 AD转换器: DIP28封装形式的ATmega8具有4个10位精度和2个8位精度的AD转换通道。本充电器在充电过程中需要随时采集电池的充电电流、放电电流、电池电压和电池温度,共需要4个AD转换通道。我们采用ADC0(PC0)采集充电电流数据,ADC1(PC1)采集放电电流,ADC2(PC2)采集电压,ADC3(PC3)采集温度信息。 模拟地的处理:

7

ATmega8的21脚AREF是AD转换器的电压参考源。20脚Avcc是AD转换器的电源引脚,为了减小电磁干扰提高测量精度,Avcc是通过L1和C6组成的LC网络才连接至5V电源端。 下载端口: ATmega8单片机下载方式为ISP下载,只需用四根数据线接口即可引出即可。它采用的是SPI传输方式,这种方式下载简化了程序更新的难度,可随时更新程序。 4.2 Buck变换器 这部分也就是用PWM方式控制的恒流/恒压电路。由于此种电路中开关管是工作在开关状态,因此电路的工作效率较高。Buck电路如下图所示: 图4-4 Buck变换器原理图 工作原理:当开关管Q导通时,输入电源通过电感L向电容C充电,同时电感L开始存储能量。当Q断开后,电感要保持电流从而开始释放能量,二极管D开始导通,电感继续给电容充电。开关管周期性的导通,从而保证了电路输出恒定的输出电压。如果开关管的导通时间增加,则输出电压升高,充电电流加大。反之则输出电压下降,充电电流下降。因此,通过调整PWM的占空比,就可以实现实现充电器的恒流和恒压功能。占空比与输出电压的关系如下: 其中: ton :开关管导通时间 T :PWM脉冲的周期 Vi :输入电压 Vo:输出电压 Vsat :开关管的饱和压降 VD :二极管导通压降 电感L的计算方法如下: 其中: Ipk = 2Iomax Iomax = 最大输出电流 本充电器的Buck电路下图所示: (4-2) tonVoVD (4-1) TViVsatVD

L8

V图4-5 充电器Buck模块 下面讲述本充电器Buck的设计: 从图中可看出开关电源的功率管采用MOSFET,而没有采用晶体管,是因为MOSFET在开关状态有着更小的导通电阻和更快的导通速度,本设计用P型MOSFET管IRF9640,其导通电阻为0.5,导通电压为9V,因此单片机的PWM输出只有5V,不能使功率管完全导通,所以用了一个8050三极管所为驱动,8050放电倍数大约300倍,可使功率管工作于开关状态,同时8050还可起到保护单片机芯片的作用,免受漏感导致的端口穿击,效率较高。二极管可采用导通时间小的肖基特二极管或快速二极管,其电流需>2A。ATmega8采用内部RC生成12MHz的频率,PWM采用快速模式,9位精度,可得到下列数据: 振荡器频率: fosc = 12MHz 输入电压: Vi = 12V 输出最大电压: Vo = 5V 最大输出电流: Iomax= 1A 开关管饱和压降: Vsat = 0.5V 二极管导通压降: VD = 1V 29可得: T42.6s fosc由公式(4-1)得: ton20.45s 再由公式(4-2)算得L为: L70H 4.3 AD基准源的设计 本电路为了使AD误差减小,没有内部2.56V基准源,而采用TL431作为基准源,以减小误差。TL431是一个具有良好的热稳定性能的三端可调基准电源。其典型工作原理图如下图所示: 9

图4-6 TL431典型接法 TL431有3个引脚,分别为:阴极C(CATHODE)、阳极A(ANODE)和参考端R(REF)。TL431的内部含有一个2.5V左右的基准电压,所以当在REF端引入输出反馈时,器件可以通过从阴极到阳极很宽范围的分流,控制输出电压。输出电压可以控制在Vref(2.5V)到36V范围内。当R12和R16的阻值确定时,两者对Vo的分压引入反馈,若V o增大,反馈量增大,TL431的分流也就增加,从而又导致Vo下降。显见,这个深度的负反馈电路必然在VI等于基准电压处稳定,此时Vo(1R1)Vref。选择不同的R1和R2的值R2可以得到从2.5V到36V范围内的任意电压输出,特别地,当R1=R2时,Vo=5V。需要注意的是,在选择电阻时必须保证TL431工作的必要条件,就是通过阴极的电流要大于1 mA 。 充电器基准源部分如下图所示: 图4-7 充电器电压基准模块 本充电器选择的基准电压值VAREF=(1+0)×2.5=2.5V ,实际测量基准为2.49V。 4.4 信息采样电路 本充电器需要实时监控充电过程中的充电电流、电池电压、电池温度以及放电电流值。因此需要运放电路来对这些参数进行放大。LM324是一款使用普遍且价格便宜的4运放集成电路。其工作电压为3-32V,封装如下图所示: 10

图4-8 LM324封装图 由于正常工作状态,Buck电路会产生高频干扰,因此为了是LM324收到较小的干扰,LM324的工作电压用ATmega8经过LC滤波后的模拟电源。 4.4.1 充电电流采样的设计 充电器电流采样是用串入电路的0.25采集电阻两端电压来检测电流的,具体电路如下图所示: 图4-9 充电电流采集电路 由图可以看出,此电路为同相比例运算电路,因此输出和输入的关系如下: uO(1 R21)uI (4-3) R23 因此可得出当充电电流最大(1A)时,R14 、R15上的电压为 uRi1A0.250.25V 而当ADC0可采集的最大电压(2.49V)时对应输入为 uI因此可符合最大电流的条件。

11

uO0.293VuRi 7.5K11K4.4.2 放电电流采集的设计 放电电流同充电采集是用同一个采用电阻,不过当放电时,流过电阻的电流同充电是电流的流向是反向的,因此在不涉及负电源供电的情况下,采用反相比例运算电路,具体电路如下图: 图4-10 放电电流采集电路 反相比例运算电路输出与输入的关系为: uOR20uI (4-4) R22充电器最大放电电流设计为0.75A,因此可得到采用电阻上的最大电压为 uRi0.75A0.25187.5mV 当AD1采集到最大值(2.49V)时对应的输入为 uI1uO332mV>uRi 7.5可满足最大放电电流的条件。 4.4.3 电池两端电压采集设计 电压的采集是电池两端的电压,而不是电池正极的电位值,因此充电器设计是用差分放大电路来实现的。具体电路如下图所示: 图4-11 电池电压检测电路 如图所示,输入电压与输出电压的关系为: 12

(3-5) 其中 R18=R8 R19=R11 当电池最大电压(设为5V)时,输出值为: uOuOR18(uBuI) R19105V2.273V 22 AD2最大值可为uAD22.49V>uO,所以满足条件。 4.4.4 温度采集设计 充电器温度采集采用的是LM35集成电路,它具有以下特点: LM35是一款精密集成电路温度传感器,其输出的电压线性地与摄氏温度成正比。LM35系列传感器生产制作时就已经过校准过,其输出电压与摄氏温度一一对应,使用极为方便。其灵敏度为10.0mV/℃,精度在0.4℃至0.8℃(-55℃至+150℃温度范围内),低输出阻抗,线性输出和内部精密校准使其与读出或控制电路接口简单和方便,可单电源和正负电源工作。 本充电器选用了LM35DM型号,封装类型为贴片封装,如下图所示。工作温度范围为0℃至+100℃。 图4-12 LM35DM封装图 典型应用 利用数字表可以直接测量温度,如室温25℃时,表上读数为0.25V。如下图所示: 图4-13 LM35测试图 本充电器温度测量电路如下图所示: 图4-14 充电器温度采集电路 从图中可看出,采用的是同相比例放电电路,由公式(4-3),AD3口最大电压可为2.49V,可算出最大温度为 13

uLM35 T32.49V0.747V 10uLM3575C 10mV电池最大温度为Tmax45C>10T,而T50s,符合条件,两级的目的使变成更为平滑的直流,即实现了PWM-DA的转化,RC的值也不宜极限大,否则输出衰减太大,同时动态响应也慢。两级RC输出的直流信号最大值为MCU的工作电压,即5V。为了能更好的驱动功率管,双运放LM358用的是12V供电,大约输出口为10V电压,图中的运放是同相比例放大,由公式4-3得 uO(17.5)5V10V 7.5图4-16为了加强功率三极管的驱动而采用一射级跟随器,特点是输入与输出不变,图中的D1264为功率三极管,最大电流为3A,最大功率为30W,完全可满足要求,其放电倍数大约60,所以可得到如下结果: iBmax10V0.7V19.8mA 470 14

iCmaxiBmax1.19A 而放电电流最大imax0.75A4.6 LCD12864显示电路的设计

本设计中用的LCD12864是汉字图形点阵液晶显示模块,主控芯片是ST7920和ST7921,可显示汉字及图形,内置8192个中文汉字(16X16点阵)、128 个字符(8X16 点阵)及64X256 点阵显示RAM(GDRAM)。

主要技术参数和显示特性:

电源:VDD 3.3V~+5V(内置升压电路,无需负压); 显示内容:128 列× 64 行 显示颜色:黄绿

显示角度:6:00 钟直视 LCD 类型:STN

与MCU 接口:8 位或4 位并行或2、3 位串行 配置 LED 背光

多种软件功能:光标显示、画面移位、自定义字符、睡眠模式等

在本设计中用的是串行通讯协议,所以这里只对串行通讯进行介绍。串行线模式数据传输工程如下图:

图4-17 串行线模式数据传输

串行数据传送共分三个字节完成: 第一字节:串口控制—格式 11111ABC

A 为数据传送方向控制:H 表示数据从LCD 到MCU,L 表示数据从MCU 到LCD B 为数据类型选择:H 表示数据是显示数据,L 表示数据是控制指令 C 固定为0

第二字节:(并行)8 位数据的高4 位—格式 DDDD0000 第三字节:(并行)8 位数据的低4 位—格式 DDDD0000 串口接口管脚如下图: 此种LCD的控制命令较多,现介绍如

下:

15

1、 清除指令

功能:清除显示屏幕,把DDRAM 位址计数器调整为“00H” 2、 位址归位

功能:把DDRAM 位址计数器调整为“00H”,游标回原点,该功能不影响显示DDRAM 3、 进入点设定

功能:把 DDRAM 位址计数器调整为“00H”,游标回原点,该功能不影响显示DDRAM 功能:执行该命令后,所设置的行将显示在屏幕的第一行。显示起始行是由Z 地址计数器控制的,该命令自动将A0-A5 位地址送入Z 地址计数器,起始地址可以是0-63 范围内任意一行。Z 地址计数器具有循环计数功能,用于显示行扫描同步,当扫描完一行后自动加一。 4、 显示状态开/关

功能: D=1;整体显示ON C=1;游标ON B=1;游标位置ON 5、 游标或显示移位控制

功能:设定游标的移动与显示的移位控制位:这个指令并不改变DDRAM 的内容 6、 功能设定

功能:DL=1(必须设为1) RE=1;扩充指令集动作 RE=0:基本指令集动作 7、 设定CGRAM 位址

功能:设定CGRAM 位址到位址计数器(AC) 8、 设定DDRAM 位址

功能:设定DDRAM 位址到位址计数器(AC) 9、 读取忙碌状态(BF)和位址

功能:读取忙碌状态(BF)可以确认内部动作是否完成,同时可以读出位址计数器(AC)的值 10、 写资料到RAM

16

功能:写入资料到内部的 RAM(DDRAM/CGRAM/TRAM/GDRAM) 11、 读出RAM 的值

功能:从内部 RAM 读取资料(DDRAM/CGRAM/TRAM/GDRAM) 12、 待命模式(12H)

功能:进入待命模式,执行其他命令都可终止待命模式 13、 卷动位址或IRAM 位址选择(13H)

功能:SR=1;允许输入卷动位址 SR=0;允许输入IRAM 位址 14、 反白选择(14H)

功能:选择4 行中的任一行作反白显示,并可决定反白的与否 15、 睡眠模式(015H)

功能:SL=1;脱离睡眠模式 SL=0;进入睡眠模式 16、 扩充功能设定(016H)

功能:RE=1;扩充指令集动作 RE=0;基本指令集动作 G=1;绘图显示ON G=0;绘图显示OFF 17、 设定IRAM 位址或卷动位址(017H)

功能:SR=1;AC5~AC0 为垂直卷动位址 SR=0;AC3~AC0 写ICONRAM 位址 18、 设定绘图RAM 位址(018H)

功能:设定GDRAM 位址到位址计数器(AC)

在本设计中LCD12864采用两线式串行传输方式,CS脚直接接高电位,表示时刻有效,SID传输数据,CLK是时钟驱动口,由于ATmega8工作频率大约12MHz,传输很快,不会影响到数据的传输速度。若用51单片机,当机器周期较低时,用串口会看到数据的刷屏,传输时间长,不宜采用。

5、软件设计

软件介绍的是用C语言实现ATmega8充电器的设计,软件可以进行扩展以支持多个电池同时充电。若每个电池的电池单元数目一样,则Li-Ion 电池可以恒定电压的方式并行充电。对于NiCd 电池,如果电池温度在允许范围之内,充电程序就会启动。在温度超出限制,或电压超过最大值,或超出最大快速充

17

电时间时停止。检测电池已经充满的普通方法是检测电压降低速率(-dV/dt)。因此,充电器会每隔5秒钟检测一次电池电压,而不是充电电压。这些数据将与上一次数据进行比较。一旦电池充满,充电状态就自动切换到涓流充电,充电程序跳转到涓流充电状态。

下面就结束通过软件来实现智能充电的方法: 5.1 系统的总体设计

在总体设计中,主函数处理的是按键,电池的选择,稳压、稳流的处理,及一些标志位,1S的中断函数是在按键设置,正式充电时才启动,处理的是显示、计时和关PWM测电池电压的标志位。

主函数流程图如下: 主函数 芯片初始化 端口、功能设置

LCD初始化

N 等待电池的接入

及LCD显示

Y 按键处理程序选 标志位代表不同 类型电池及节数 测电池容量镍氢电池标志 镍镉电池标志 锂电池标志 标志 对其节数充电 对其节数充电 锂电池充电

恒流放电到电恒流方式充电 恒压方式充恒流方式充电

池最低值 电

N N N N 错误或错误或错误或错误或

完成? 完成? 完成? 完成?

Y Y Y Y 停止PWM,置错误或 完成的标志位 图5-1 主程序流程图

18

按键程序处理的是电池充电电流的大小,电池的种类,镍镉、镍氢电池的节数,放电电流的大小,放电终止电压等,一共用了五个按键,“+”键、“-”键、“确定”键、“返回”键、“放电”键。具体的按键流程图如下:

按键程序

充电选择电

流 N N “放电”键 充电电流选好,是否按下? 确认按下?

Y Y

放电电流的选电池种类选择

N 电池种类选N 好,确认? 确认?

Y Y

放电终止电 锂电池 镍镉电池 镍氢电池 压选择

电池节数选电池节数选择1、2、3 择1、2、3 N 放电电压

选好,确

定?

N N 选好电选好电 池节数 池节数 Y

Y Y 锂电池标志 镍镉标志 镍氢标志 根据各个类型的标志及记录放电电流和 电池节数的选择对应的放电终止电压, 电池充电程序,启动启动PWM2 PWM1.

图5-2 按键程序流程图

19

当采集温度、电压、电流时,采集到的得值都是变为电压值送到单片机中,因此能否使采集到有效的电压值是很重要的,因此要对电压做滤波处理,这里用的滤波是平均值滤波法,因为AD切换通道后的第一次值可能不准,因此舍去,再对8次采样值求平均值,流程图如下:

采样滤波程序 选择对应的通 道并启动AD

N AD转化完 成?

Y

i=0 value=0 N i<8? Y 启动AD N AD转化完成? Y value+=ADC,,i++ value>>=3 返回value 图5-3 AD采样程序流程图

5.2 镍镉电池充电函数

NiCd 电池的快速充电算法采用恒定电流法。在快速充电模式下充电电流设置为1A ;在涓流模式下则为50mA。判断充电过程结束的方法是电压下降 (-dV/dt) 法。备用的结束充电判别方案还有最大充电电压以及最大充电时间。电池充满后自动切换到涓流模式,MCU 开始执行涓流充电函数。 充电参数简介充电条件: 快速充电:

快速充电电流 = 1A、0.75A、0.5A、0.3A 涓流充电:

20

涓流充电电流 = 50mA

一般充电过程结束的判别标准: 绝对最高温度T = 45C

绝对最大充电电压V = 电池单元数(1、2、3) * 1550 mV 快速充电过程结束的判别标准: 电压下降门限-dV/dt = 15 mV/单元 快速充电过程的错误:

快速充电时的最高温度T = 45C

电池松开

单节电池充电曲线如下:当电压下降15mV时,选择快速充电结束,进入涓流补充充电阶段,又因为镍镉电池有记忆效应,所以充电前先对电池放电处理,再对电池快速恒流充电。

图5-4 镍镉电池充电电压曲线

所以软件设计充电的过程为:以单节电池为例,充电一开始关闭PWM1,检测电池电压,如果电压小于1V,就立即启动PWM1,进入快速充电阶段。若开始电池电压大于1V,就启动PWM2先以一定的电流恒流放电,直到电压检测到小于1V,就停止PWM2,启动PWM1,进入快速充电阶段。当充电电压到达1.4V时,转为快速脉冲充电阶段,这时充电电流和上一阶段电流相同,而此阶段判定的是电池电压,而非充电电压,阶段判定放在1S的中断中,这阶段内容是恒流充电5 S,然后在中断中关闭PWM1等待300mS,此时的电池电压已经趋于稳定,检测电池电压,启动PWM1,在主程序中继续恒流充电,5S 后等待下一次电池电压检测。在中断函数电池电压检测时都跟上一次检测的电池电压比较,选出最大值进行保留,直到判断出最新电压值比最大值小15mV时,置标志位stop为1作为电池正常充满,这就是-dV判定法则,或者当电池电压超过1.55V时,也作为电池充满的标志。下一阶段就是小电流涓流充电以补充充电5小时,以补充充电。5小时到,充电结束,关PWM1。

在以上阶段中如果检测温度过高和电压为最大电压值(5.4V)时,表示错误,关闭PWM1,对应显示温度过高或电池松开。

当节数为2或3节时,对应的cell*2或cell*3和-dV 15mV*2或3即可。 具体的流程图如下:

21

镍镉电池充电函数 2 进入涓流充电阶段 N 电池电压>cell*1VY 关闭PWM1,启动PWM2,进入放电程序 N 1 温度<45C&电压<5.3V? Y N N 温度<45C& 涓流充电1 电压<5.3V? 5hour? Y Y N 充电结束,关闭电压 PWM1 进入快速恒流充电,启动PWM1,关PWM2 N 温度<45C&1 1 电压<5.3V? Y N N 充电电电 压>cell*1.4压>5.3V? Y 进入快速脉冲充电 置电池松开标 置温度过高标志 志 N 温度<45C&1 电压<5.3V? 关闭PWM1, 停止充电 Y

N -dV>-15mV*cell |电 Y

池电压>1.55V*cell

Y 2

图5-5 镍镉电池充电流程图

22

5.3 镍氢电池充电函数

NiMH 电池的快速充电算法采用恒定电流法。在快速充电模式下充电电流设置为1A ;在涓流模式下则为50mA。判断充电过程结束的方法是电压下降 (-dV/dt) 法。备用的结束充电判别方案还有最大充电电压以及最大充电时间。电池充满后自动切换到涓流模式,MCU 开始执行涓流充电函数。 快速充电:

快速充电电流 = 1A、0.75A、0.5A、0.3A 涓流充电:

涓流充电电流 = 50mA

一般充电过程结束的判别标准: 绝对最高温度T = 45C

绝对最大充电电压V = 电池单元数(1、2、3) * 1550 mV 快速充电过程结束的判别标准: 电压下降门限-dV/dt = 10 mV/单元 快速充电过程的错误:

快速充电时的最高温度T = 45C

电池松开

单节电池充电曲线如下:当电压下降10mV时,选择快速充电结束,进入涓流补充充电阶段,镍氢电池没有有记忆效应,所以充电前不对电池放电处理,直接对电池快速恒流充电。

图5-6 镍氢电池充电曲线

所以软件设计充电的过程为:以单节电池为例,启动PWM1,进入快速充电阶段。当充电电压到达1.4V时,转为快速脉冲充电阶段,这时充电电流和上一阶段电流相同,而此阶段判定的是电池电压,而非充电电压,阶段判定放在1S的中断中,这阶段内容是恒流充电5 S,然后在中断中关闭PWM1等待300mS,此时的电池电压已经趋于稳定,检测电池电压,启动PWM1,在主程序中继续恒流充电,5S后等待下一次电池电压检测。在中断函数电池电压检测时都跟上一次检测的电池电压比较,选出最大值进行保留,直到判断出最新电压值比最大值小10mV时,置标志位stop为1作为电池正常充满,这就是-dV判定法则,或者当电池电压超过1.55V时,也作为电池充满的标志。下一阶段就是小电流涓流充电以补充充电2小时,以补充充电。2小时到,充电结束,关PWM1。

在以上阶段中如果检测温度过高和电压为最大电压值(5.4V)时,表示错误,关闭PWM1,对应显示温度过高或电池松开。

当节数为2或3节时,对应的cell*2或cell*3和-dV -15mV*2或3即可。 具体的流程图如下:

23

镍氢电池充电函数 进入快速恒流充电,启动PWM1,关PWM2 温度<45C&电压<5.3V? N Y N 充电电压>cell*1.4Y 进入快速脉冲充电 N 温度<45C&电压<5.3V? Y N -dV>-10mV*cell |电池电压>1.55V*cell Y 进入涓流充电阶段 温度<45C&电压<5.3V? N Y N 涓流充电2hour? N 电压>5.3V? Y 置温度过高标志 置电池松开标志 Y 充电结束,关闭PWM1 关闭PWM1,停止充电 图5-7 镍氢电池充电流程图

24

5.4 锂电池充电函数

锂电池是三种电池中最先进的电池,是容量体积比最大的,也是最娇贵的电池,既不能过充,也不能过放。单节锂电池电压为3.6V或3.7V,最大电压为4.2V50mV,最低放电电压为3V,低于2.7V将严重影响电池的使用寿命,锂电池充电一般为先恒流再恒压,充电时对温度实时检测,防止温度过高。虽然锂电池最后阶段是4.2V恒压充电,但是也不宜长期挂在电源上充电,一般停止充电有两个准则,一是当恒压充电电流小到一定值时停止,另一是恒压充电以一定的时间限制。 快速充电:

快速充电电流 = 1A、0.75A、0.5A、0.3A 一般充电过程结束的判别标准:

恒压充电时间达到2小时 恒压充电电流小于20mA 快速充电过程的错误:

快速充电时的最高温度T = 45C

电池松开

锂电池充电电压曲线如下:

其充电状态曲线如下:

图5-8 锂电池充电电压曲线图

图5-9 锂电池充电状态曲线图

如上图所示,锂电池充电时按其曲线充电,步骤如下:

先对电池以75mA的电流对其预充电1min,检测电压是否达到3V,是,进入恒流快速充电,若否,继续以75mA的电池预充电半个小时,若仍为到达3V,就关闭充电,提示“电池损坏或类型不配”。在半小时内到3V,进入恒流快速充电状态,此时当充电电压达到4.2V,转为快速脉冲充电状态,此时每5S关闭充电300mS,检测电池电压,直到电池电压为4.2V,这判断函数放在中断里进行。当电池电压达到4.2V,进入恒压充电状态,停止充电有两个,电流小于20mA,或恒压充电时间为2小时。

在上面几种充电状态中,当温度超过安全充电范围和电压达到最高电压(5.4V)时,都关闭充电,提示相应的错误原因(温度过高或电池松开)。

软件设计流程图如下:

25

锂电池充电函数 2 预充电(75mA)1min N 温度<45C&充电电压<5.3V? Y N 温度<45C&充电电压<5.3V? Y 电池充电电压达到3V? Y 恒流快速充电状态 N 预充电到30min? N Y 1 N 充电电流>20mA? Y 恒压充电时间达到2h? Y 停止充电,提示相应的错误 充电完成,关闭PWM1 N 1 N 温度<45C&充电电压<5.3V? Y 电池充电电压为4.2V? Y 快速脉冲充电状态 1 N 温度<45C&充电电压<5.3V? Y 电池电压为4.2V? Y 恒压充电状态 N 置温度过高标志

图5-10 锂电池充电函数

26

电压>5.3V? Y 置电池松开标志 关闭PWM1,停止充电 2

5.5 电池容量检测函数

电池容量检测函数比较简单,基本原理是恒流放电到最低电压测量出放电时间即可算出电池的容量。

放电电流:

快速充电电流 = 0.75A、0.5A、0.3A、0.2A 放电结束的判别标准:

最低电压限制 = 1V、2V、3V、3.3V 放电过程中的错误:

快速充电时的最高温度T = 45C

电池松开

具体的软件设计是:选好放电终止电压和放电电流,对其恒流放电,期间计数器计数,当放电到电池最低限制电压时,停止放电,计算计时的多少乘以放电电流即是电池容量,如公式C=t*I;t是时间,单位为hour,I是放电电流,单位为mA,C为电池容量单位,单位为mAh。

在放电过程中,对温度实时检测,当温度过高和电池松开时停止放电。当电池松开时停止后需重新充电,再放电,因此当电池松开时就计算已放电的容量,等人为将电池重新接上时,只需将这次容量与上次相加即可。

检测电池容量的流程图如下: 容量检测函数

选择放电终止电

压和放电电流

N

温度<45C?

Y

N

电压>0.5V?

停止放电,提示 Y 温度过高

Y 电压>限制

电压?

计算时间,C=t*I,

算出电池容量

计算时间,C=t*I, 算出电池容量

显示电池容量,

提示电池松开

停止放电,显示电池容量 图5-11 电池容量检测函数

27

6 调试

这次毕业设计我是先设计的硬件,然后再在板上调试软件的。如果先设计软件再弄硬件,就会因为程序无法调试而陷入被动。所以,硬件设计和软件设计如下: 6.1 硬件调试

为了设计硬件,我大量搜集资料,在众多前辈的基础上,取长补短,确定硬件电路图,接着画原理图、PCB、制板,板出来后,又仔细检查线路是否有断的地方,再将元器件焊接上去。此时,我并没有盲目的接电,而是先用万用表测整体电路是否短路,确认无误后,接电,检测各个器件的电源和地电压是否正常,再次无误后,就开始进行各个模块硬件的调试。

首先,检查单片机是否正常,先在板上下载一个简单的程序(为调试方便,将下载端口接在板上,方便程序的写入调试,省去了下载程序时将芯片拔下的步骤)。这个程序将在软件调试是介绍。单片机正常输出,说明单片机正常,再测的Back电路,用单片机输出一固定PWM波输入,开关电压输出电压正常。测LCD,往单片机写入一以前编好的可用的程序,可LCD是否显示正常。还有单片机基准电压的测定,用我的3 3/4位万用表(精度比较高,我用它做的基准电压表)实测TL431电压为2.490V。在本次设计中用到了很多运放,我全部采用自己加输入电压,用万用表测运放输出电压,同时,在运放的放大方面,由于没有高精度电阻,而全部用误差5%的,测输入和输出之比为真实放大倍数,这个倍数为软件设计程序的校正打下了基础。

这次硬件上基本顺利,只是由于有Back电路,干扰比较大,后又接了几个贴片的滤波电容在板的后面,才使干扰减小。

硬件的成功可使软件设计事半功倍,可以不予余力的去进行软件设计。这次毕业设计有好多同学的设计硬件根本就不对,一直在改软件,焦头烂额,事倍功半,不得其法。

6.2 软件设计

我越来越感觉到在一个成功的硬件上调试软件的方便和快捷。硬件没有故障,软件调试好像也顺从人意。

软件设计我并没有直接写充电器程序,而是从一个个的子程序入手的,做PWM输出实验,AD采样实验,LCD显示实验,异步时钟定时器中断实验,等小模块程序开始了工作,再将各小模块合理搭配,整体程序也就一点一点的出来了。

在整体软件设计上,我最先设计是Li-lon充电函数,因为万事开头难,在这个上下的功夫最大,不过感觉这个最有收获,也是几个模块中最好的模块,再就是设计电池容量检测的程序设计,后就是镍镉、镍氢电池的充电函数。因为有锂电池函数的基础,编写并不算太难。这之中因为要用到按键选择一系列的函数,按键反而成为最有挑战性的模块。按键有“+”、“-”、确定、返回、放电五个键,要实现菜单式的功能,而按键返回后,又有充电、放电的函数,苦思冥想,最好用标志位,while(标志位){„„}实现了功能,从中学到了不少的东西。

软件写好了以后,因为充电涉及到电压电流,又对充电、放电状态的电压、电流用万用表比较和校正,到目前为止,已顺利充满了几块电池,也对几块电池容量进行了测量,设计中出现的故障也都通过更改程序全部解决。这次设计基本成功。

在这次充电器的设计中,大部分时间花在整体电路的设计上,搜索资料,构思整体思路。但毕竟“磨刀不误砍柴工”,这次硬件设计花费三周时间,软件设计花了两周时间,后又充电和放电调试,发现错误,查找原因,改正。

7 总结

本次毕业设计,无论从专业知识、动手能力,还是在其它方面都使我受益非浅,掌握了一些新的知识,提高了自己的动手能力。同时,使我明白了了要设计一个具有一定功能的电路,首先要具备有相当多的知识,并完全了解电路所要完成的各项功能。然后根据所要完成的各项功能选择相应的硬件,并构思出系统电路的基本原理图对系统做需要软件进行设计。最后对电路进行软件和硬件的调试。所以说,没有扎实的专业基础知识,对课题没思路,硬件也就进行不下去,更不用说软件的开发了。

之前,在网上论坛里,有很多高人就提醒过大学生要好好对待毕业设计,大学三年半可以不学,但毕业设计一定要做好,毕业设计一般设计的专业的东西比较全,有人说,一个毕业设计可以学四年的东西,等我做完了之后,深深体会了这句话。我大学里可以说专业课学的不错,这次毕业设计仍然学到了

28

很多以前没学到的东西,甚至不自己去做的,就永远也学不到。

这次毕业设计,用LCD的目的是为了显示实时数据,以方便调试和观看,但大多数实物并没有LCD显示,更多的是用发光二极管,此设计若将LCD换为发光二极管指示,完全可用于商业用途。因此,这个毕业设计有较高的实用价值。

致谢词

再次,我要感谢http://www.ouravr.com/,从论坛中我学到了很多avr的知识和例子,对于avr的知识,我虚心学习,咨询问题,得到高人的指点,从中avr的知识学到了很多。

29

因篇幅问题不能全部显示,请点此查看更多更全内容