原创 基于PIC16F676的镍氢电池充电管理系统设计

2008-4-11 17:25 2215 2 2 分类: 模拟

摘要:分析了镍氢电池充电管理系统的设计需求,提出了一种采用电压、温度和时间进行综合管理的充电管理方案。设计了基于PIC16F676的新型柔性充电系统,同时给出了该系统的软硬件设计方法。
关键词PIC16F676;电池;充电器


       随着科技的发展,对便携式仪器仪表的需求越来越多。为这些仪表选择充电电池并设计充电管理电路是这类产品设计的重要内容。镍氢电池与其它类型电池相比,具有比容量大(相当于镍镉电池的两倍),无污染、无记忆、重量轻,价格适中(只有锂离子电池一半的价格)等优点,在国内仪器仪表行业中越来越受到青睐。


1镍氢电池充电系统设计理论基础
    点击看大图


     正极上析出氧气,负极上析出氢气。这三个化学反应决定了镍氢电池充电电路要求如下:


1)电池充电终止电压:


       电池充电时,极板上的活性物质已经全部饱和,电池电压不再上升而是略有下降。此时,若继续大电流充电,将会大大影响电池的寿命,此时的电压称为充电终止电压,一般单节电池不超过1.6伏。充电终止电压与电流充电率、环境温度、电池生产工艺等因素有关。电压负增量控制方法是一种公认的比较先进的控制方法(-V),电压从峰值下降5~10Mv/节时及时终止快速充电;最大电压控制方法可以作为辅助控制方法。


2)电池充电电流:


       充电电流取决于电池容量C。现在新型镍氢电池可以达到1C以上的充电率,但充电电流过大会使电池内部压力升高较快,安全阀打开,电池漏液,引起安全问题。在设计中,充电电流取0.5C


3)电池充电时间:


       电池充电时间和充电电流的大小有关,充电电流取0.5C左右时,电池充满约需要2~3小时。


4)电池温度:


       在电池充满电后会发生析氧和析氢反应,使电池内部压力增大,温度上升。当电池温度超过55度或者温度超过2/分时候应及时终止快速充电。另外,如果环境温度低于5度或者高于40度时候不应该启动快速充电。


       目前,大多数充电电路仅采用上述的一个或者两个参数进行控制,很难达到理想的控制要求。为此,本文设计了一种新型柔性充电管理电路;通过对上述几个参数同时进行综合控制,可以更高效、更加安全地完成充电管理过程。


2镍氢电池充电管理电路硬件设计
  点击看大图


       电池充电原理图如图1所示,包括充电控制电路和充电状态检测电路。充电电路以PIC16F676为核心,PIC16F676Microchip推出的一款新型PIC单片机,DIP14或者SOIC14封装,2个定时器,输出IO口切换频率可以达到250KHZ2KFlash,多路AD,使得PIC16F676特别适用于低成本的电池管理系统。芯片内部集成了上电复位、欠压检测和看门狗电路,使用内部晶振(4M晶体),这些都极大的简化了外围电路的设计。


       充电电路以及充电过程:


       PIC16F676RC3口或者RC4口用于输出占空比可调的PWM脉冲信号控制NPN三极管8050的通断。启动RC3口通过定时器1控制引脚输出高低电平即可以对电池进行充电控制。电池充满时候,停止定时器,RC3输出低电平,NPN三极管截止,便可以停止充电。


       在一个PWM脉冲周期中,当NPN三极管导通时,MOSFETBD442的栅极为高电平,外部电源经过肖特基二极管,检测电阻给电池充电;当NPN三极管8050截止时候,MOSFETBD442的栅极为低电平,外部电源停止充电。在下一个PWM脉冲周期,重复上述过程。
    点击看大图


      充电状态检测电路:


1)  电池端电压检测:通过精密电阻R18R19分压获得电池端电压,将此信号接到PIC16F676RC1引脚AD检测引脚。


2)  电池温度检测:在电池组内内置一个具有负温度系数的热敏电阻,通过测量热敏电阻的端电压可以准确地测量到电池组的温度。为保证测量精度,回路中采用了精密稳压源LM385以产生精确的基准电压(1.25V)。此基准电压1.25V同时作为PIC16F676芯片AD转换的参考电压。


3)  充电电流检测:由运算放大器LM324构成一个差动放大器,检测PIC16F676的充电电流。充电电流过大时候,应减小PWM的占空比;反之,应增大PWM的占空比,从而使充电电流维持在何时的范围内。


3 镍氢电池充电管理电路软件设计


       本系统利用电池电压,温升、充电时间以及电压变化量等参数来综合判断是否应该结束充电过程。软件按功能可以分为PWM控制模块、计时模块以及电压检测、电流检测、温度检测等几个部分。程序流程图如图2所示。


       系统工作时候,PIC16F676不断检测电池组端电压。若此电压数值低于1.25NVN为电池节数),检测环境温度,如果环境温度在5~40度之内,则启动PWM开始充电。在充电过程中,CPU不断采集充电电流的大小,并将实测电流数值与设定数值相比较。若两者相差超过10%时,调整占空比,可使充电电流维持在设定数值附近。另外,CPU还将不断测量电池端电压、电池温度,并对充电时间进行计时。当这些参数满足下列的充电终止条件时候,停止充电:当电池电压大于设定电压或者电池电压出现5~10毫伏/分钟/节的负△V变化时;电池温度超过55度,或者出现0.5/分的温升时候,充电时间大于180分钟(本系统采用0.5C充电),都应该停止充电。


       在电池长时间闲置或者放电情况下,在充电前期电压会出现起伏,形成-V。通过设置延时定时器,在充电初始10分钟内不判断电池电压变化,可防止误判断终止充电。


       本系统软件的核心部分为AD转换和定时器产生PWM这两个模块。下面给出这两个部分的相应的程序,编译环境为PIC16


///////////////////////////////////AD初始化程序//////////////////////


void AD()  //电量测试子程序


{


       ADCON0=0X59;  //启动AN3  AN0,AN1作模拟口


       ADCON1=0X84;  //结果右移


       TRISA3=1;       //做输入口用


       ADGO="1";        //启动AD


       ADIF="0";         //清除AD标志


       while(ADIF==1);  //等待AD采样完成


       ADIF="0";         //清除AD标志


       while(ADGO)continue; //等待转换结束


}


///////////////////////////////////TMR1 定义///////////////////////////


void  tmint()


{


 


     GIE="1";


     PEIE="1";


     TMR1IF=0;


     TMR1IE=1;   //设置中断使能


     T1CON=0x31;    // 预分频设置18   开定时器


     TMR1H=0x9E;


     TMR1L=0x57;    //定时参数


}


/////////////////////////////////定时器中断服务程序////////////////////////


void interrupt clkint0(void)


{


      TMR1IF=0;


      TMR1H=0x9E;                 //初值25000200毫秒


      TMR1L=0x57;                 //25000-1


      s0=1;


}


 


4 结论


       此充电电路经过实际调试,试验性能可靠,可很好地实现快速充电和电池保护等功能能。而且简单实用。通过修改软件中相应的设定值,此电路不仅可以给不同节数的电池充电,也可以用来给铅酸、镍铬、锂离子等不同品种的电池充电。该电路具有很好的推广价值。若能进一步完善该电路,在充电过程中加入具有去极化功能的放电环节,将会提高电池的充电接受能力。

文章评论0条评论)

登录后参与讨论
我要评论
0
2
关闭 站长推荐上一条 /2 下一条