ADS1255后八位一直跳动厉害,该如何解决?
输入电压信号理论上是一个很定值,但是采样得到的后八位数据一直在跳动,应该如何完善?
还有 一个问题,每次上电的时候,后八位跳动的数据是正常的,但是经常就出现一个定值(303030h),这个问题该如何解决。我只能通过重新上电,等到出现想要的值,才进行AD采样。 谢谢。
Hi
ADS1255是24位的ADC,假设有效位做到20位,对于恒定的输入信号做采样转换,得到的只是前20位恒定,后四位跳动。
按照你的说法8位跳动,也就是你的有效位只做到16位。
关于ADC的有效位见datasheet: http://www.ti.com.cn/cn/lit/ds/symlink/ads1255.pdf 有效位参数与采样率,PGA的关系。
你可以参考这个图标,如果你的有效位比较低,就要确认电路中的Noise,数模隔离,基准电压等等。
Hi
请问得到303030H这个值时,输入的模拟恒定电压是多少(或者说输入时多少)? 并且这个是发生在数模时候(上电时,还是正常工作中的异常)?
建议查一下这个时候的时序?
检查一下基准源和供电的噪声;另外,关于精度,这个帖子可以参考一下-
http://www.deyisupport.com/question_answer/analog/data_converters/f/58/t/1341.aspx
是上电时候经常出现这个现象,在工作之中没有发现这个问题。按照理论计算(303030h)得到电压值:1.8823v。我的实际输入电压是1.875v,这应该差不多。
情况就是有时上电是这个定值,有时候还有其他定值(这个就是完全错误的),还有就是出现3037XXh,这个就是正常的。
情况是不是出在初始化的问题? 延时问题? 至于后八位的跳动应该是我电路设计的稳定性不好。但是我要迫切解决的问题是如何让每次上电复位的时候都是工作正常,谢谢。
初始化是这么写的:
void Init_Ads1255(void)
{
//ET0=0;
_Nop();_Nop();_Nop();
Set_Ads1255_Reset();
_Nop();_Nop();_Nop();
Set_Ads1255_Selfcal();
_Nop();_Nop();_Nop();_Nop();_Nop(); _Nop();
_Nop();_Nop(); _Nop(); _Nop();_Nop(); _Nop();
while(!ADS_RADY);
while(ADS_RADY);
Write_Ads1255_Init(ADS1255_STATUS);
_Nop();_Nop(); _Nop();_Nop();
Set_Ads1255_Standby();
//ET0=1;
}
void Write_Ads1255_Init(uchar addr)
{
uchar send[] = {ADS1255_WREG,0x0A,0xf7,0x01,0x20,0x53,0x00,0x00,0x00,0x00,0xa0,0x99,0x3a};
send[0] |= addr;//starting from register addr(as used 0101 "addr"b)
Write_SPI_Several_Byte(sizeof(send),send);
}
我对采样的速率没有为什么要求,是对PD产生的弱小光电流信号的检测,理论上是一个定制。 谢谢
Hi
把你的前端采样的电路发上来看看?
如果是对直流定值采样,采样率可以低一点,这样有效位比较高,数字输出的noise小一些(小于8位的跳动,能做到3位左右)
R5 R6值互换了。 这就是前端。
Hi
断开前端的这些模拟信号,直接外部输入一个稳定的直流信号给到ADS1255, 看看上述上电瞬间转换异常的现象?
对比: http://www.ti.com.cn/cn/lit/ds/symlink/opa703.pdf 第九页可以看到运放OPA输出瞬间的反应,会有一个较高spike输出的不稳定(或者说不准确情况), 而这种情况在“LARGE SIGNAL STEP RESPONSE” 好很多,可以改善。
另外OPA704反应速度上会比OPA703快,可以加以改善。
LOG104启动,虽然datasheet中没有提供这些波形,但是相信也会存在同样的问题。
故在上电瞬间,输入可能存在一些不稳定的状况,或许您可以通过时序上(延时)来改善这个问题。