ADS1230的DRDY/DOUT输出跳变厉害
TI专家,
你们好。
我是刚涉及数模转换器的软件工程师,使用了ADS1230作为AD转换芯片来写测重仪的程序(采用5v外部电压为传感器供电)。由于该传感器是TI07年的产品,从论坛中没有足够的资料能比对问题,我了解到该传感器为20位精度传感器(有效精度在17.3位以上),可以把模拟电路输入的毫伏级电压通过增益转换成数字输出(我采用64倍增益),在未接上电路模拟器时,ADS1230读到的数据始终为最大值524287(bit:01111111111111111111),但一旦接上模拟器,0毫伏输入的情况下,DOUT的数据变成20000(bit:1111101XXXXXXXXXXXXX)左右,但只有前7位保持稳定,后面13位一直反复跳变,逐渐加大电压输入,DOUT数字也在逐渐增加,当模拟器逐渐输入到40毫伏时,传感器读数变为44000(bit:1111010XXXXXXXXXXXXX)左右,同样只有7位稳定。
现在有几个问题想请教:
1.初值524287是否正确?
2.40毫伏的变化范围从理论上应该是多少?44000-20000约为24000应该不对。
3.仅有7位数字有效,观察每个电压值变化范围在2000左右,能否估计是何原因导致该问题产生?(由于我不是硬件工程师,先将我的程序发上来,请帮助确认程序本身是否有问题,然后帮助分析硬件可能会存在什么问题?)
程序如下,采用powerdown模式和offset模式都试过,结果都一样。
void OffsetAD(void)
{
unsigned char i=0;
for(i=0;i<26;i++)
{
ADS_CLK1=1;;;
ADS_CLK1=0;;;
}
}
void initads(void)
{
ADS_SPEED = 1;
ADS_PDWN1 = 0;
ADS_CLK1=0;
delay30u();
delay30u();
ADS_PDWN1 = 1;;;;;;;;;
}
long read_ADS1230(void)
{
unsigned char i=0;
long ADresult=0;
char* hzcode;
// powerdown-mode:
initads();
//offset-mode:
/*
while(ADS_DOUT1)
{
OffsetAD();
}
*/
while(ADS_DOUT1);
for(i=0;i<20;i++)
{
ADS_CLK1=1;;
ADS_CLK1=0;;
ADresult=ADresult<<1;
if(ADS_DOUT1)
{
ADresult++;
}
}
ADS_CLK1=1;;
ADS_CLK1=0;;
ADresult&=0xfffff;
if(ADresult>524287)
{
ADresult=1048576-ADresult;
}
return ADresult;
}
Hi
按照0111 1111 1111 1111 1111的输入输入,意味着此时模拟输入的电压将超过0.5Vref/64, 因为这个数字是满量程的输出。 所以初始524287正不正常要视乎你传感器位接入时ADS1230实际的输入电压时多少? 建议确认。
Hi
接上模拟器,0毫伏输入的情况下,DOUT的数据变成20000(bit:1111101XXXXXXXXXXXXX)左右,但只有前7位保持稳定. 意味着只有ADS1230只有7位的有效位,这个是非常偏低的,正常应该是19~20位左右,见如下:
建议你检查一下你的板子是否有很好的做到数模隔离,稳定的低noise电源(5V),高精度低noise的外部参考电压。
是否有供电部分的原理图,可以放上来先确认一下。
Hi
主要的问题在于硬件设计上,程序问题不大,因为已经可以得到相应的数模转换,只是转换准度上做得不好。
选择PGA=64, 5V参考电压,模拟输入范围是0~40mV, 理论的数字输出范围就是00000~0FFFFF.
- 谢谢各位专家,由于硬件不是我做的,电路图暂时无法上传,等我们的硬件工程师回来后我上传上来,谢谢。
kevin,
附件为ADS1230部分的电路,请帮助看看是否正确。
测量了AINP,AIPN之间的电压,和输入的毫伏级电压完全吻合,也很稳定,REFP和REFN之间的电压也一直是5v,但CAP之间的电压值一直波动,我估计就是因为这个跳动引起了读数的不稳定,是否如此?要怎么解决这个问题?
这部分电路看不出什么问题,供电是怎样的?你说的cap之间的波动有没有波形看一下,另外输入是否也有波动呢?
供电是电路板上外接电源单独提供的5v电压,很稳定,没有任何波动。
CAP不好采集波形,但可以确认跳动没有什么规律,而且有0.01~0.1V的变化
实在没有进展,从程序到电路均没看出什么问题,各位专家有没有什么好的建议?
专家你好!这是我的硬件电路图,麻烦您帮我看一下哪里有问题,7、8脚输入的是差分电压,实际放大倍数只有两倍不到,采集到的数据和5、6的电压是吻合的。
和你遇到相同的问题,请问你的问题解决了吗?
现在都想骂人了