ATmega8智能充电器的设计 精品.doc_第1页
ATmega8智能充电器的设计 精品.doc_第2页
ATmega8智能充电器的设计 精品.doc_第3页
ATmega8智能充电器的设计 精品.doc_第4页
ATmega8智能充电器的设计 精品.doc_第5页
已阅读5页,还剩23页未读 继续免费阅读

付费下载

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

基于ATmega8智能充电器的设计 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,按照充电器的设计思路,可得到如下的方框图。 电源控制电池控制核心电压、电流、温度采样显示部分按键控制图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。这在三种选择之中是最贵的,但是此器件温度已经校准,而且里面集成有温度上下限报警、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.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 智能充电器的设计要求几乎是所有用户都希望充电器的充电速度越快越好。因此,充电器能够提供的充电速率就是充电器设计的一个重要指标,但是要提高这个指标的前提是充电器必须能够在快速充电阶段能够准确的判断电池的状态。快速充电器的一个本质特征就是在过度充电之前自动降低充电速率。同时充电速率最好也不要超过电池生产商的建议值,通常不要超过2C的充电速率。 因此,一个安全可靠的充电器就需要能够在电池的充电过程中能够严格的控制电池的充电电流、电压、温度等物理参数。因此,智能型充电器通常应该包括恒流/恒压控制环路、电池电压监测电路、电池温度监测电路等基本单元。智能充电器的基本硬件方框图如下图所示: 图3-1 智能充电器硬件方框图4. 硬件设计 硬件设计包含MCU、Buck变换器、信息采样、电压基准、按键、LCD显示等电路,现介绍如下:4.1 MCU电路4.1.1 MCU简介本充电器设计采用ATMEL公司20XX年推出的一款AVR高档单片机Atmega8。其内部集成了大容量的存储器,提供了PWM脉宽调制脉冲产生器、多路AD转换器、实时时钟电路、串行接口等硬件接口。非常适合用作智能型充电器的MCU控制单元。Atmega8有DIP28和TQFP/MLF32三种封装类型。我们选择了DIP28封装,如下图所示: 图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控制单元电路如下图所示:图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)采集温度信息。 模拟地的处理: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的占空比,就可以实现实现充电器的恒流和恒压功能。占空比与输出电压的关系如下: (4-1) 其中: :开关管导通时间 T :PWM脉冲的周期 :输入电压 :输出电压 :开关管的饱和压降 :二极管导通压降 电感L的计算方法如下: (4-2) 其中: = 2 = 最大输出电流 本充电器的Buck电路下图所示:图4-5 充电器Buck模块下面讲述本充电器Buck的设计: 从图中可看出开关电源的功率管采用MOSFET,而没有采用晶体管,是因为MOSFET在开关状态有着更小的导通电阻和更快的导通速度,本设计用P型MOSFET管IRF9640,其导通电阻为0.5,导通电压为9V,因此单片机的PWM输出只有5V,不能使功率管完全导通,所以用了一个8050三极管所为驱动,8050放电倍数大约300倍,可使功率管工作于开关状态,同时8050还可起到保护单片机芯片的作用,免受漏感导致的端口穿击,效率较高。二极管可采用导通时间小的肖基特二极管或快速二极管,其电流需2A。ATmega8采用内部RC生成12MHz的频率,PWM采用快速模式,9位精度,可得到下列数据: 振荡器频率: = 12MHz输入电压: = 12V 输出最大电压: = 5V最大输出电流: = 1A开关管饱和压降: = 0.5V二极管导通压降: = 1V可得: 由公式(4-1)得: 再由公式(4-2)算得为: 4.3 AD基准源的设计本电路为了使AD误差减小,没有内部2.56V基准源,而采用TL431作为基准源,以减小误差。TL431是一个具有良好的热稳定性能的三端可调基准电源。其典型工作原理图如下图所示: 图4-6 TL431典型接法TL431有3个引脚,分别为:阴极C(CATHODE)、阳极A(ANODE)和参考端R(REF)。TL431的内部含有一个2.5V左右的基准电压,所以当在REF端引入输出反馈时,器件可以通过从阴极到阳极很宽范围的分流,控制输出电压。输出电压可以控制在(2.5V)到36V范围内。当R12和R16的阻值确定时,两者对Vo的分压引入反馈,若V o增大,反馈量增大,TL431的分流也就增加,从而又导致下降。显见,这个深度的负反馈电路必然在VI等于基准电压处稳定,此时。选择不同的R1和R2的值可以得到从2.5V到36V范围内的任意电压输出,特别地,当R1=R2时,Vo=5V。需要注意的是,在选择电阻时必须保证TL431工作的必要条件,就是通过阴极的电流要大于1 mA 。 充电器基准源部分如下图所示: 图4-7 充电器电压基准模块 本充电器选择的基准电压值(10)2.52.5V ,实际测量基准为2.49V。4.4 信息采样电路 本充电器需要实时监控充电过程中的充电电流、电池电压、电池温度以及放电电流值。因此需要运放电路来对这些参数进行放大。LM324是一款使用普遍且价格便宜的4运放集成电路。其工作电压为332V,封装如下图所示: 图4-8 LM324封装图 由于正常工作状态,Buck电路会产生高频干扰,因此为了是LM324收到较小的干扰,LM324的工作电压用ATmega8经过LC滤波后的模拟电源。4.4.1 充电电流采样的设计充电器电流采样是用串入电路的0.25采集电阻两端电压来检测电流的,具体电路如下图所示: 图4-9 充电电流采集电路由图可以看出,此电路为同相比例运算电路,因此输出和输入的关系如下: (4-3) 因此可得出当充电电流最大(1A)时,R14 、R15上的电压为 而当ADC0可采集的最大电压(2.49V)时对应输入为 因此可符合最大电流的条件。4.4.2 放电电流采集的设计放电电流同充电采集是用同一个采用电阻,不过当放电时,流过电阻的电流同充电是电流的流向是反向的,因此在不涉及负电源供电的情况下,采用反相比例运算电路,具体电路如下图: 图4-10 放电电流采集电路 反相比例运算电路输出与输入的关系为: (4-4)充电器最大放电电流设计为0.75A,因此可得到采用电阻上的最大电压为 当AD1采集到最大值(2.49V)时对应的输入为 可满足最大放电电流的条件。4.4.3 电池两端电压采集设计电压的采集是电池两端的电压,而不是电池正极的电位值,因此充电器设计是用差分放大电路来实现的。具体电路如下图所示: 图4-11 电池电压检测电路如图所示,输入电压与输出电压的关系为: (3-5)其中 R18=R8 R19=R11当电池最大电压(设为5V)时,输出值为: AD2最大值可为2.49V,所以满足条件。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,可算出最大温度为 电池最大温度为10T,而T50,符合条件,两级的目的使变成更为平滑的直流,即实现了PWM-DA的转化,RC的值也不宜极限大,否则输出衰减太大,同时动态响应也慢。两级RC输出的直流信号最大值为MCU的工作电压,即5V。为了能更好的驱动功率管,双运放LM358用的是12V供电,大约输出口为10V电压,图中的运放是同相比例放大,由公式4-3得 图4-16为了加强功率三极管的驱动而采用一射级跟随器,特点是输入与输出不变,图中的D1264为功率三极管,最大电流为3A,最大功率为30W,完全可满足要求,其放电倍数大约,所以可得到如下结果: 而放电电流最大,满足条件。 4.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 串行线模式数据传输串行数据传送共分三个字节完成:第一字节:串口控制格式 11111ABCA 为数据传送方向控制:H 表示数据从LCD 到MCU,L 表示数据从MCU 到LCDB 为数据类型选择:H 表示数据是显示数据,L 表示数据是控制指令C 固定为0第二字节:(并行)8 位数据的高4 位格式 DDDD0000第三字节:(并行)8 位数据的低4 位格式 DDDD0000串口接口管脚如下图:此种LCD的控制命令较多,现介绍如下:1、 清除指令功能:清除显示屏幕,把DDRAM 位址计数器调整为“00H”2、 位址归位 功能:把DDRAM 位址计数器调整为“00H”,游标回原点,该功能不影响显示DDRAM3、 进入点设定 功能:把 DDRAM 位址计数器调整为“00H”,游标回原点,该功能不影响显示DDRAM 功能:执行该命令后,所设置的行将显示在屏幕的第一行。显示起始行是由Z 地址计数器控制的,该命令自动将A0-A5 位地址送入Z 地址计数器,起始地址可以是0-63 范围内任意一行。Z 地址计数器具有循环计数功能,用于显示行扫描同步,当扫描完一行后自动加一。4、 显示状态开/关功能: D=1;整体显示ON C=1;游标ON B=1;游标位置ON5、 游标或显示移位控制功能:设定游标的移动与显示的移位控制位:这个指令并不改变DDRAM 的内容6、 功能设定功能:DL=1(必须设为1) RE=1;扩充指令集动作 RE=0:基本指令集动作7、 设定CGRAM 位址功能:设定CGRAM 位址到位址计数器(AC)8、 设定DDRAM 位址功能:设定DDRAM 位址到位址计数器(AC)9、 读取忙碌状态(BF)和位址功能:读取忙碌状态(BF)可以确认内部动作是否完成,同时可以读出位址计数器(AC)的值10、 写资料到RAM功能:写入资料到内部的 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;绘图显示OFF17、 设定IRAM 位址或卷动位址(017H)功能:SR=1;AC5AC0 为垂直卷动位址 SR=0;AC3AC0 写ICONRAM 位址18、 设定绘图RAM 位址(018H)功能:设定GDRAM 位址到位址计数器(AC)在本设计中LCD12864采用两线式串行传输方式,CS脚直接接高电位,表示时刻有效,SID传输数据,CLK是时钟驱动口,由于ATmega8工作频率大约12MHz,传输很快,不会影响到数据的传输速度。若用51单片机,当机器周期较低时,用串口会看到数据的刷屏,传输时间长,不宜采用。5、软件设计软件介绍的是用C语言实现ATmega8充电器的设计,软件可以进行扩展以支持多个电池同时充电。若每个电池的电池单元数目一样,则Li-Ion 电池可以恒定电压的方式并行充电。对于NiCd 电池,如果电池温度在允许范围之内,充电程序就会启动。在温度超出限制,或电压超过最大值,或超出最大快速充电时间时停止。检测电池已经充满的普通方法是检测电压降低速率(-dV/dt)。因此,充电器会每隔5秒钟检测一次电池电压,而不是充电电压。这些数据将与上一次数据进行比较。一旦电池充满,充电状态就自动切换到涓流充电,充电程序跳转到涓流充电状态。下面就结束通过软件来实现智能充电的方法:5.1 系统的总体设计在总体设计中,主函数处理的是按键,电池的选择,稳压、稳流的处理,及一些标志位,1S的中断函数是在按键设置,正式充电时才启动,处理的是显示、计时和关PWM测电池电压的标志位。主函数芯片初始化端口、功能设置LCD初始化等待电池的接入及LCD显示按键处理程序选标志位代表不同类型电池及节数镍镉电池标志对其节数充电镍氢电池标志对其节数充电测电池容量标志锂电池标志锂电池充电恒压方式充电恒流方式充电恒流方式充电恒流放电到电池最低值错误或完成?错误或完成?错误或完成?错误或完成?停止PWM,置错误或完成的标志位NNNNYYYYNY主函数流程图如下:图5-1 主程序流程图 按键程序处理的是电池充电电流的大小,电池的种类,镍镉、镍氢电池的节数,放电电流的大小,放电终止电压等,一共用了五个按键,“+”键、“-”键、“确定”键、“返回”键、“放电”键。具体的按键流程图如下:按键程序充电选择电流“放电”键是否按下?YN充电电流选好,确认按下?NY电池种类选择电池种类选好,确认?NY锂电池镍镉电池镍氢电池电池节数选择1、2、3电池节数选择1、2、3选好电池节数选好电池节数NNYY镍氢标志镍镉标志锂电池标志根据各个类型的标志及电池节数的选择对应的电池充电程序,启动PWM1.放电电流的选择确认?NY放电终止电压选择放电电压选好,确定?NY记录放电电流和放电终止电压,启动PWM2图5-2 按键程序流程图当采集温度、电压、电流时,采集到的得值都是变为电压值送到单片机中,因此能否使采集到有效的电压值是很重要的,因此要对电压做滤波处理,这里用的滤波是平均值滤波法,因为AD切换通道后的第一次值可能不准,因此舍去,再对8次采样值求平均值,流程图如下:采样滤波程序选择对应的通道并启动ADAD转化完成?NYi=0 value=0i=3返回value 图5-3 AD采样程序流程图5.2 镍镉电池充电函数 NiCd 电池的快速充电算法采用恒定电流法。在快速充电模式下充电电流设置为1A ;在涓流模式下则为50mA。判断充电过程结束的方法是电压下降 (-dV/dt) 法。备用的结束充电判别方案还有最大充电电压以及最大充电时间。电池充满后自动切换到涓流模式,MCU 开始执行涓流充电函数。充电参数简介充电条件: 快速充电: 快速充电电流 = 1A、0.75A、0.5A、0.3A 涓流充电: 涓流充电电流 = 50mA 一般充电过程结束的判别标准: 绝对最高温度T = 绝对最大充电电压V = 电池单元数(1、2、3) * 1550 mV 快速充电过程结束的判别标准: 电压下降门限-dV/dt = 15 mV/单元 快速充电过程的错误: 快速充电时的最高温度T = 电池松开单节电池充电曲线如下:当电压下降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即可。具体的流程图如下:镍镉电池充电函数2进入涓流充电阶段电池电压cell*1V? ?N温度&电压5.3V?Y1N关闭PWM1,启动PWM2,进入放电程序Y温度&电压5.3V?涓流充电5hour?1NNYY电压cell*1?VVN充电结束,关闭PWM1Y进入快速恒流充电,启动PWM1,关PWM2温度&电压5.3V?置电池松开标志置温度过高标志关闭PWM1,停止充电

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论