基于单片机控制的智能充电器的设计与实现
1 引言
铅酸蓄电池是目前大容量电池的主要品种,其制造成本低、容量大、价格低廉,使用范围非常广泛。铅酸蓄电池的基本充电方式有两种:恒压充电和恒流充电。如果单独采用一种方法,比如恒流法,则在充电后期由于充电电流不变,容易使容量下降而提前报废。单独采用恒压法,充电初期电流过大,可能致使电极活性物质脱落,后期电流又过小,形成长期充电不足,影响蓄电池的使用寿命[1]。因此,充电器大部分都是综合采用两种方法的多阶段充电方式。近年来,先恒流、再恒压、最后恒压浮充的三阶段充电方式被逐渐接受。
目前,三阶段充电方式主要采用模拟控制的方案。虽然具有实时性好、带宽高的优点,但其硬件电路复杂,控制不灵活。为此,本文设计了一种数字控制的充电器,采用单片机作为控制回路的核心,通过电压、电流实时采样,从而控制输出电压和输出电流,实现了三阶段充电策略,可智能灵活的控制蓄电池的充电,提高蓄电池的利用效率,并有助于提高蓄电池的使用寿命和性能。
2 充电器电源结构
系统的总体设计框图如图1所示。主要由3部分组成:第一部分为开关电源部分,采用反激DC/DC变换器;第二部分为电压、电流采样电路;第三部分为单片机核心的PWM输出,再经驱动电路驱动反激电路。
图1 充电器电路总体设计框图
系统由电压采样电路、电流采样电路实时分别采样电压、电流,将采样的电压、电流各自送单片机的RA0、RA1,经过单片机内部的A/D转换模块转化为数值,然后根据编写的软件进行对应操作,由PWM模块得到相应的占空比,再由RC2将占空比送到驱动电路,用于驱动反激电路的开关管,从而在输出端得到相应的电压或电流对铅酸蓄电池进行充电。
3 数字控制电路结构
数字控制电路通过相应信号的获取和输出,监测和控制充电器对应的工作过程,使其能自适应工作。然而,主电路输出是模拟信号,单片机能够处理的却是数字信号,因此在处理信号之前,必须先通过模数转换器(ADC)将模拟信号转变为数字信号。假定ADC字长为N,则模数转换精度为1/2N,N越大精度也越高,但价格越贵。数字控制器PWM单元的时间分辨率及模数转换精度,决定了充电器的输出电压、输出电流、输出功率的精度。为了同时满足精度需求及降低成本的考量,需要选择合适位数的ADC和PWM数字控制器。
ADC转换器选定后,需要选择PWM位数。如果PWM位数太小,将导致输出电压在某一电压值附近上下波动,造成极限环现象,输出电压将发生周期性抖动,进而影响到采样数据,最终影响到整个系统的处理精度。因此,PWM单元分辨率越高越好。
PWM位数N与频率fPWM满足下式:。式中,fclk表示单片机的时钟频率。PR2为单片机PWM周期寄存器,fPWM越高存入PR2的值越小。设存入PR2的值为M,则最大分辨率为分频值f/M。由此可见,频率不一定越高越好,过高的频率会降低PWM分辨率。PWM输出的频率与分辨率之间的关系如表1所示。
表1 PWM频率与分辨率的关系(fclk=40MHz)
为了保证足够高的分辨率,保证输出电压纹波受PWM分辨率的影响小于输出滤波电容的影响,本设计选用10位PWM。
同时,考虑到其它需求,本系统对数字控制器的具体要求主要包括:(1)内置ADC模块,至少2个ADC信道,精度在10位以上;(2)至少内置1个PWM单元,PWM精度在10位以上;(3)至少两个定时器;(4)有中断优先级设置;(5)至少5个I/O口;(6)价格低于50元人民币。
综合考虑以上因素,选择microchip公司的PIC18F2620作为数字控制芯片。PIC18F2620的主要性能有:10个10位的ADC信道;最高外接时钟频率可达到40M:1024字节的数据EEPROM,用于储存可变数据;可延长电池寿命的低功耗强化设计,睡眠模式下耗电仅为100nA等等,其性能满足系统需要。
4 系统软件设计
4.1 主程序设计
三阶段充电,开始时采用恒流充电,中间为恒压充电,最后采用浮充充电。该充电法减少了充电出气量,充电比较彻底,延长了蓄电池使用寿命。三阶段充电法充电电流和充电电压变化曲线如图2所示。
图2 三阶段充电特性图
根据三阶段充电的原理,画出系统的主程序流程图,如图3所示。(其中Um为蓄电池的最大电压上限,Ubat为恒压充电门限,Ibat为恒流充电门限,其值一般取蓄电池容量的1/10。)
单片机系统的主程序,主要用于A/D采样初始化、PWM初始化、定时和中断系统、定时器的初值设定,然后一直检测充电器的电压与电流,进行三阶段的自适应充电。
程序中需要注意一下问题。
(1)因为需要同时采样电压和电流2个变量,此时可根据PIC18F2620的采样单元特点,可通过直接改变A/D控制寄存器ADCON0.2~3位进行更换通道
- 基于PIC单片机的智能型漏电断路器设计(11-25)
- 基于PIC单片机的无线实时监控防盗系统的设计与实现(11-18)
- PIC单片机键盘矩阵扫描C语言程序(12-02)
- PIC单片机控制第一个发光管闪动程序(12-02)
- PIC单片机驱动LCD12864液晶显示闪动字体程序(12-02)
- PIC单片机控制8位流水灯C语言程序(12-02)