首页>>科技 >>内容

电池容量测试仪的用途,充电电池容量测试仪设计

发布时间:2023-09-19 20:08:42编辑:温柔的背包来源:

很多朋友对电池容量测试仪的用途,充电电池容量测试仪设计不是很了解,每日小编刚好整理了这方面的知识,今天就来带大家一探究竟。

电池容量测试仪的用途,充电电池容量测试仪设计

电池容量是衡量电池质量的重要指标。有许多方法可以测试充电电池的容量。根据电池的放电曲线,短时间放电可以大致得出电池容量。这种方法最大的优点是速度快,但是充电电池的放电曲线并不通用,很多劣质电池的初始电压也很稳定。一旦进入中后期,电压下降很快,这样得出的结论会很不准确。

最可靠准确的方法是用标准电流放电,测量整个过程的实际放电时间。放电电流不同,充电电池最终能释放的电量也不同,有一定差距。蓄电池的容量标注有统一的标准。目前应用最广泛的是10小时倍率放电容量和20小时倍率放电容量。

10小时倍率放电容量是指电池以恒定电流放电,放电时间可维持10小时左右,直至电池电量耗尽。这个电流称为10小时额定电流(衡量电池耗尽的标准不能以电池放电端电压降低到零为准)。电池过度放电会导致电池容量降低,不可恢复,甚至过早损坏,彻底失效。所以每个电池的放电终止电压都有严格的规定,可以在相关资料中找到。

过放过充是充电电池达不到使用寿命而提前报废的主要原因。实时流量测量方法最大的缺点是费时费力,因为需要的时间长,所以测量精度容易受到各种外界因素的影响。在测量过程中,如果以10小时的额定电流连续放电时间至少为5小时,那么需要足够的耐心、精力和时间来做这么长的测试。

科学技术的发展非常迅速。今天,单片机已经变得非常普及。通过单片机的程序控制,自动控制放电时间和深度,便于准确测量电池的实际容量,实现全程自动控制。虽然模拟实际放电测容量的方法有点浪费能源,但是对于1A、2A以下的小容量充电电池是完全可行的,对于大容量电池也需要进行抽样检验。

下面介绍的电池容量测试仪采用89S51作为控制芯片,图1是硬件的电路原理图。图1硬件电路原理图

这种电池容量测试仪由两个完全独立的部分组成:放电电路和单片机控制定时。单片机的部分制作费时费力,而单片机在市场上很受欢迎。没有必要手工制作。随便找个51单片机实验板。放电电路相对简单,仅由四个或五个元件组成。单片机主要负责计时放电时间,最终得到一组可靠的数据,用于电池性能的考虑。

这个放电电路的本质是一个模拟晶闸管。当我们将待测电池连接到电路的相应位置时,按下启动按钮。如果电池还有剩余,电池两端的放电电压会保持在设定值以上,晶体管VT1会瞬间饱和,电池通过电阻R2放电。该电路具有可靠、精确和陡峭的开关特性,VT1绝对工作在饱和截止的两种状态。

通过可调电阻调节和设定开关电路的临界值(即充电电池的放电终止电压),可以适应各种类型充电电池的全保护放电。因为个人应用不需要非常精确的测试结果,所以原则上最好模拟实际测试中电池的放电情况,只需要得到一个大概的电池容量。为了快速完成电池测试过程,这里的电路设计采用两小时倍率电流放电。

通过各种电池测量结果的横向对比,容量差异还是比较明显的,足以作为衡量电池好坏的标准。以1000mAH、1.2V镍氢电池的测试为例,500mA的放电电流需要2 的放电电阻,电池终止放电电压要控制在1V以上。放电终止电压由可调电阻器R1调节和设置。

普通可调电阻精度差,容易漂移,会导致设定的端电压随着时间的推移和使用环境的变化而大幅波动。为了确保放电终止电压准确且易于设定,R1可以使用3296系列精密可调电位器。3296多圈可调精密电位器的调节范围一般为50T,所以每圈的调节范围为2%,每圈电阻变化约为0.005%,因此容易调节,获得准确稳定的电阻。

终止电压的设定必须在实际放电过程中进行。如果负载电阻R2的阻值发生变化,设定的终端电压也会发生变化,因此需要重新设定。具体调试方法就不详述了,请参考相关资料。

这种放电电路不需要单独的电源,与电池类型无关。完全可以适应镍镉、镍金属氢化物、锂电池、铅酸蓄电池等多种类型电池的保护性放电,但需要根据电池类型和容量重新设定电路的端电压和放电电流。如果电池容量比较大,晶体管VT1、VT2的耗散功率要相应增加,同时不要忘记增加负载电阻R2的功率。

图2是放电电路的印刷电路图,其具有少量的部件并且易于制造。图2印刷电路图各种电池两小时倍率电流放电所能维持的放电时间一般小于1.5小时。这里的单片机计时系统采用秒计时和4位LED数码管显示。最大计时时间9999秒,约2.7小时。

图1单个LED数码管内部由八个发光管组成,分别作为8的七段字体部分和小数点。这里使用的是共用阳极数码管,内部八个发光管的阳极并联引出,用于使能控制。

在实际电路中,L1是第一个数码管的公共阳极端子。单片机的输出输入接口数量非常有限,所以4位LED数码管驱动器采用动态显示。四个独立数码管led中的A、B、C、D、E、F、G、dp八个发光管对应的阴极都是并联的。统一由单片机P0口的8位输出驱动。为了显示数字,数码管还必须在公共阳极端子施加正电压。

因此,为了显示四个数码管中的一个,只需要在P0端口输出字体代码的同时,给这个数码管的公共阳极端子加一个正电压。当然,同时其他三个数码管的公共阳极端子也要保持低电压,以免显示混乱。数码管的共阳极驱动电流大,所以用晶体管来控制。

以第一个数码管为例。在P0口输出字码的同时,P37输出低电平,晶体管T4导通,则公共阳极端子L1得到高电平,数字将显示在第一个数码管上。

程序设计是以单片机P37口作为计时控制端子,P37口输入低电平,计时程序启动,4只数码管显示时间。放电电路中按下启动按键,放电过程触发,VT1导通,电池端电压降落到放电电阻R2两端,A端对地为高电平,通过电阻R4迫使三极管VT3导通,P37口电平就被拉低了,单片机计时程序启动。

电池电压降到终止电压以后,放电电路自动关闭,A端电压消失,VT3恢复截止状态,计时程序停止,数码管维持显示当前持续时间。

如要进入下次测试,首先按动单片机复位键,当前计时清零,等待下一次测试开始。

程序设计比较简单。它的大致流程如下:初始化,P3端口置位,设立常量a为时间计数器,依次对a的十进制数值各位进行提取,顺序输送到P0端口,P2端口中的P24、P25、P26、P27各位是依次作为四位数码管的使能控制端,通过P2端口的配合,就可以完成对各位数码管的驱动,时间的动态显示。

程序进行中要不断地检测P3端口数值以决定计时状态:如果电池处于放电过程之中,三极管VT3导通,将迫使P37端口电压降到零,P3端口值就是127,单片机程序检测到这一结果,时间常量a将自动加1,指示期间放电时间已经延续1秒种了。这1秒钟的时间精确计算是比较麻烦的。计时程序是一个循环结构,每一周期耗用时间都是一致的。

所以在使用keil软件调试过程中,通过对时间计数寄存器sec的观察计算,可以得出一次循环大致需要的时间。以此为据再通过适当改变延时子程序循环次数将常量a计时周期控制在1秒以下,剩余微小的时间差就可以通过插补空指令来校正了。计时精度只要控制在千分之一以下就可以了。

在51单片机使用11.0592MHz晶体振荡器的情况下,指令周期大约1.085微秒,所以将计时精度控制在千分之一以下问题不大。误差总是会有的,只能通过精确计算来控制了,也可以通过更换更高频率的晶体振荡器提高单片机时钟频率的方法来进一步提高计时的精度。

如果放电过程中,意外原因或者人为终止放电过程,P37端口变为高电平,程序循环依旧会进行下去,只是时间常量a停止自动加一,时间显示维持不变。

编译后,写入单片机内部,做好放电电路部分与51单片机的连接,便可投入使用。

电池接入后,按动轻触按键“启动”,就会进入一次容量测试过程,期间电池取出接入,都不会影响到单片机计时。电池放电完毕,单片机数码管显示锁定,给出总放电持续时间,单位为秒。可以自行人工计算放电小时数。当然也是可以自行对程序进行改进,直接以小时分钟形式进行显示。只要单片机不断电,数码管将持续显示当前放电时长。

如果要进入下次测量过程,只需要按动单片机复位键,数码管清零,单片机程序转入起点,你就可以进入新一次的容量测试过程了。

充电电池如果较长时间闲置,它的实际容量将受到影响,重新启用第一次能够释放的容量远远达不到标注容量,放电电压也很不平稳。至少要经过三次以上的充电放电循环,电池完全激活,容量才能恢复到应有的水平。充分考虑这种因素的影响,所以容量测试一般采取多次平均的方式,或者循环充放电三次以后放电持续时间为准,以此衡量电池容量才算是恰当。

#include “reg51.h”

char

code disp={40,235,50,162,225,164,36,234,32,160};

//字形码

void delay(unsigned int dt)

{ unsigned int j=0;

for(;dt》0;dt--)

{ for(j=0;j《125;j++)

{;}

}

}

void main()

{ int a,b,c,led1,led2,led3,led4;

P3=255;

a=0;

for(;)

{b=a;

led1=b%10;

P2=239;

P0=displed1;

delay(6);

P2=255;

b=b/10;

led2=b%10;

P2=223;

P0=displed2;

delay(6);

P2=255;

b=b/10;

led3=b%10;

P2=191;

P0=displed3;

delay(6);

P2=255;

b=b/10;

led4=b%10;

P2=127;

P0=displed4;

delay(6);

P2=255;

for(c=44;c》0;c--)

{

P2=239;

P0=displed1;

delay(5);

P2=255;

P2=223;

P0=displed2;

delay(5);

P2=255;

P2=191;

P0=displed3;

delay(5);

P2=255;

P2=127;

P0=displed4;

delay(5);

P2=255;

}

if(P3==127)

delay(3);

if(P3==127)

a=a+1;

else a=a;

}

}

以上知识分享希望能够帮助到大家!