既然有人看,我就写了:
据我分析各厂家充电器的截止充电电压是很准确的:4.2V,这个不容置疑,有那么多的玩家用了那么长的时间,如果有问题电池早就报废了。但是充电和放电电流的准确性就没那么多人关心了,就像没有那么多人关心我这个帖子一样,不过只要还有人愿意看我就要写出来,一个是让大家用的心里有数,另一个也写出来防止以后忘了。说不定厂家也能因此改进一下,造福模友呢。
开始正文,上图为我的测试环境,首先说说为什么电流不准:
1.电流比电压测量精度低,电路复杂。测量电压可以直接加到单片机的ADC上,测量电流要经过取样电阻、运放放大环节,环节多了精度就下降了,不过这不是主要原因。
2.对于放电来说,测量原理不同。
电压是连续量,电流是个pwm波,需要通过计算得出有效值。放电电路的电流没有取样环节,所以cpu是不知道放电电流的,也无法闭环调整,是个估计值。
3.使用者对于准确性要求不高,误差对使用影响不大。
无非就是充放电时间长短的问题,再加上电池容量本来也说不准,所以这个事就说不清楚了。即使真想测量也不太容易,电压好测,有个万用表往电池上一并就能知道,电流还要串联在回路里,诸多不便。
下面来具体分析一下放电电路:
如图所示,BT1为锂电池,R16为放电电阻,U1为光耦,Q8为开关(其实是个mos管,不是三极管,图中画错了不过不影响理解)。 工作原理:如果cpu输出高电平,光耦导通,R16就有电流流过,电流大小为电池电压值除以R16的电阻值,如果电池电压是4.2V,电阻为1.4欧姆,那么电流就是3A。这个数值就是能设置到最大的放电电流。 如果我不需要这么大的放电电流怎么办?只要控制流过电阻的电流时断时续,相当于减小了电流,就可以模拟出我需要的电流了。电路中的cpu就是通过控制光耦,继而控制mos管通断实现这一目的的。但是这里有三个问题需要考虑: 1.光耦导通和截止是有延迟的,在不同状态下延迟不等。 下图是实测的光耦两端的波形,黄色的是输入端的,即cpu给出的,蓝色是输出端的,即电阻上实际流过的电流。从图中可以看出,虽然频率没有变,但是占空比发生了改变,这会导致实际的等效电流比预先设置的要大,而且还大不少。
后续我进行了分析(具体分析内容还没来得及写,后续补充),并且调整了电路参数,使输入输出的延时基本一致了,即保持原来的占空比,图中黄色还是输入信号,蓝色的为输出,显示成了反相。 但是这样做就准了吗? 我实测发现还是不准,以前实际电流偏大,现在又偏小了。omg! 因为还有以下问题
2.随着电池电压的变化,流过放电电阻的电流也是会变的。 假设上个问题中的光耦是理想的,占空比和电流值是线性关系吗?显然不是的,因为这里的电阻是不变的,但是电池电压是变的,随着放电电压是逐渐降低的,而且幅度还挺大,从4.2V到3.0V,所以电流也是变的。如果想保持恒流放电,软件上就要随着电压调整占空比,以补偿电流的变化。这个厂家会这么做吗? 我没有仔细测试这个问题,无法给出准确结论,因为我发现占空比在不停的变,我无法捕捉一个稳定的数值。另外即使厂家考虑这个问题了,补偿的是否准确也是个问题。如果再考虑上一个问题,那算法可就复杂了。
3.PWM的有效值和平均值是不一样的。 上面提到,如果占空比为1,也就是开关一直导通,那么电流是3A。如果占空比为50%,也就是说一半时间开,一半时间关,那么电流是不是就是1.5A呢?答案似乎很简单,但这个问题我想了很久,因为我被有效值给搞糊涂了,有效值是建立在功率等效的基础上的,按照公式方波的有效值应该是平均值开根号,大约为2.1A左右。这个我得再想想。。。
当上述3个问题搅在一起的时候,我们的una6的电流还能准吗? 如果上面说的都是放电不准,充电不是这个电路,为什么也不准呢?
|