WinCE 电池电量数模转化及百分比转化

来源:互联网 发布:自适应单页源码 编辑:程序博客网 时间:2024/06/06 01:55

 这一阶段主是要是在做PND的案子.是在WINCE平台下.分到的模块是电源管理.内容

挺多的.但是很觉得有意思.这几天在做电池.将电池的数字信息从寄存器中读取,

经过转化为模拟电压值.最后根据放电曲线转化为相对应的百分比.原来在看代码

的时候,还以为读取的已经是转化后的模拟量.后来,从网上查了下资料才了解要根

据ADC转化的位数以及相对应的最大参考电压通过写算法来将数字量转化为模拟量

. 用到的芯片是ALC5611,它将ADC和TOUCH PENAL集成到芯片中.电池接AUX4.电池

信息从TOUCH PENAL的寄存器中读取.ADC的转化位数为12bit,即相应的十进制数为

4096. 电路接的VDD为Vout = 3.3V.电池最大电压为Vcc = 4.2伏.因此相应

的,4096对应3.3V.在电路中,在将电池接入到AUX4以前,串联一个电阻(R1)再关联

一个电阻(R2)起到分压的作用.因此,相应的求数字量转化为模拟量的公式即为:
Vcc = ((R1+R2)/R2)*Vout;

4096/3.3 = V_digital/Vout;


Vout = ((R1+R2)/R2)*V_digital*3.3/4096;

在网上查了些资料,找到了一些关于百分比转化的算法.贴出来,分享.

 

在电压曲线中可分为4. 10~3. 80V ,3. 80V~3. 60V ,3. 60~3. 30v 这三个区间,对电池电压值进行分区间的处理,三个区间上的曲线斜率近似为:
4. 10~3. 80V : K1 = (100 - 70) / (4. 10 - 3. 80) ;

(近似曲线斜率)
3. 80~3. 60V : K2 = (70 - 20) / (3. 80 - 3. 60) ;
3. 60~3. 30V : K3 = 20/ (3. 60 - 3. 30) ;
4. 10~3. 30V : K= 100/ (4. 10 - 3. 30) ;
在进行电池电量百分比的转换时,当我们获得在559~455 这个区间内的采样值后,首先获得原来
的百分比值voltage _ percent = ( even _ samp -455) ·100/ (559 - 455) 。然后针对不同的区间进
行相应的调整,得到的电量百分比分别为:
4. 10~3. 80V : voltage_percent + = ( 4. 10 -even_samp*7. 5/1024) ×( K - K1 )
3. 80~3. 60V : voltage_percent + = ( 3. 80 -even_samp *7. 5/1024) ×( K - K2 )
3. 60~3. 30V : voltage _percent - = ( even_samp - 3. 30V*7. 5/1024) ×( K - K3 )

 

这里,用的10bit的数模转化。最大的参考的电压为7.5。因此,1024对应的就是7.5。可以根据具体的情况,用公式进行相应的计算。

原创粉丝点击