TI中文支持网
TI专业的中文技术问题搜集分享网站

用cc2530测量电池电压的问题

大家好,这两天在用cc2530做电池电压测量的实验,碰到一个问题,详细描述如下:
测试方法:写一段裸机程序,将测量值通过串口发送到串口助手上查看,主要代码在下面,完整代码见附件.

while(1)
{
uint16 voltage=0;
ADCCON3 = 0x3f;//根据手册可知:512抽取率,测量的是vdd/3的值
ADCIF = 0 ;//貌似没用
while (!(ADCCON1 & 0x80));//等待转换结束
//赋值
voltage = ADCH;
voltage = (voltage<<8)|ADCL;
voltage >>=2;
//发送值
sprintf(str,"vol=%d 0x%04x \n",voltage,voltage); UartSendString(str,sizeof(str));
//每1s重复一次 Delay_ms(1000);
}

测量结果:1.当用仿真器供电时,有数据且数据有效,接近满值8191,
2.当用直流电源供电时,分两种情况:
电压在 3.15V以下 或 3.60V以上 时,数值为满值8191,显然是错误的,无效数据
电压3.15~3.60V左右,有值,但是值有问题,解释:cc2530内部基准电压为1.15V(来自手册),也就是说1.15V对应的值是8191,所以如果我测的值是8191,即是说我的VDD/3 = 1.15 —->VDD=3.45 ,但是我现在的现象是在3.15~3.60V之内我测的值是波动的,并且我把电源供电调整到3.45V出来的也并不是8191这个数,所以说我对此值的有效性有怀疑,但是即使这个值是正确的,对我来说也没有任何用处:范围太窄我需要测量的范围在2.5-3.3V左右,所以现在咨询各位出现这个情况的原因是什么?我在网上也看到好多网友有这样的情况,但是都没有找出答案,希望TI官方能给个说法,难道说2530的这个功能就只能达到这个程度吗?

另外:我用0.7脚作为输入,以AVDD5为基准电压测试外部电压是可用的,误差没计算,说明如果作为电压表,2530是可行的.
各位大神,求帮忙

gaoyang9992006:

我觉得楼主应该是电路问题,有时候的问题不一定在软件上。反正这个就是测ADC,软件基本上不会有大问题。主要在外部的处理电路,你肯定用内置的参考直接测外边的不行,可以通过分压后侧。这样把被测量控制在参考的满量程内。

wei shi5:

回复 gaoyang9992006:

不是的,按理说这个程序不需要外部电路的,直接测量Vdd的电压,手册上123页说的很清楚:还可以输入一个对应AVDD5/3的电压作为一个ADC输入,这个输入允许诸如需要在应用中实现一个电池监测器的功能.注意在这种情况下参考电压不能取决于电源电压,比如AVDD5电压不能作为一个参考电压.

所以,理论上,只能用内部基准电压作为参考典电压.现在的主要情况是只有3.15V~3.60V的区间内才能测到有效的数值,其他电压下都得不到有效的值,我想知道这是为什么,

wei shi5:

回复 gaoyang9992006:

哥们,能不能做下实验帮我看看啥情况啊?

wei shi5:

这么个问题没人知道啊,求解答@VV 

vijay ye:

回复 wei shi5:

你直接使用协议栈的试试

xin yang:

兄弟,问题解决了没有,读出来也是,电源电压变化AD值基本不变。有点坑

user4888137:

增加一句 ADCCON2 = 0x3F;就

ok了

赞(0)
未经允许不得转载:TI中文支持网 » 用cc2530测量电池电压的问题
分享到: 更多 (0)