TI论坛
直播中

一曲作罢

10年用户 979经验值
擅长:可编程逻辑 电源/新能源 MEMS/传感技术
私信 关注
[问答]

ADS1230的DRDY/DOUT输出反复跳变是怎么回事?


  • 我是刚涉及数模转换器的软件工程师,使用了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;
    }

回帖(5)

李煜启

2024-12-30 15:38:40
   按照0111 1111 1111 1111 1111的输入输入,意味着此时模拟输入的电压将超过0.5Vref/64, 因为这个数字是满量程的输出。 所以初始524287正不正常要视乎你传感器位接入时ADS1230实际的输入电压时多少? 建议确认。
举报

刘彬彬

2024-12-30 15:38:50
 是否有供电部分的原理图,可以放上来先确认一下。
举报

周杰

2024-12-30 15:39:00
   主要的问题在于硬件设计上,程序问题不大,因为已经可以得到相应的数模转换,只是转换准度上做得不好。
   选择PGA=64, 5V参考电压,模拟输入范围是0~40mV, 理论的数字输出范围就是00000~0FFFFF.
  
举报

刘继牛

2024-12-30 15:39:13
这部分电路看不出什么问题,供电是怎样的?你说的cap之间的波动有没有波形看一下,另外输入是否也有波动呢?
举报

更多回帖

发帖
×
20
完善资料,
赚取积分