TI论坛
直播中

李维嘉

8年用户 1513经验值
私信 关注
[问答]

ADS1230运行一段事件, 约半小时到两小时,数据会乱跳怎么解决?


  • 问题描述: 开始测量正常,运行一段事件, 约半小时到两小时,数据会乱跳

    #define NOP90nS()  _nop_()   //11.0592Mhz   stc单片机 1T模式 单nop约90ns
    #define NOP180nS() NOP90nS();NOP90nS()

    long ads1230_read(void)
    {        long dat = 0;        unsigned char i;        if(ADS1230_DOUT) return 0xFFFFFFFF;        EA=0;                for(i=0;i<24;i++)//获取20位有效转换, 后4位无效,作用是为下一次转换做准备        {                                ADS1230_SCLK = 1; NOP180nS(); //手册时钟信号最低100ns ,                ADS1230_SCLK = 0; NOP180nS();                        dat <<= 1; if(ADS1230_DOUT) dat ++;                        }        EA=1;                dat &= 0xFFFFFFF0;         return dat; //按24位数据返回,低4位无效。}void weight_loop(void) // 此段程序约为 1.4ms
    {
    long  dat      = 0;
    dat = ads1230_read();
    if(dat == 0xFFFFFFFF) return;  //器件未准备好,直接返回
    if(dat & 0x00800000) dat |= 0xFF000000; //负数处理
    。。。。后边数据运算代码省略

    }

回帖(4)

朱红艳

2024-12-5 16:02:44
是否有变量溢出
举报

谢云生

2024-12-5 16:03:03
这种情况还是需要多试几块板子,因为本来就是软硬件相结合的,先确定硬件还是软件,然后再行排除
举报

王婷

2024-12-5 16:03:08
数据跳动,如果不是输入信号引起的话,那就是噪声引起的,所以在电路上和layout上都需要注意,比如尽量使用高精度低噪声的参考电压源,差分输入等。 或者是我们先设置ADC为比较低的配置,比如比较低的转换速率,比较小的增益试试,看是不是转换速率过高引起的。
举报

听风说梦

2024-12-5 18:02:22
从您提供的代码片段和问题描述来看,ADS1230数据乱跳可能是由于以下几个原因导致的:

1. 电源不稳定:长时间运行可能导致电源电压波动,影响ADS1230的稳定性。请检查电源是否稳定,或考虑使用稳压器。

2. 温度影响:长时间运行可能导致ADS1230芯片温度升高,影响其性能。请检查芯片的散热情况,确保散热良好。

3. 干扰:长时间运行可能导致电磁干扰累积,影响ADS1230的稳定性。请检查周围环境是否存在电磁干扰源,并采取相应的屏蔽措施。

4. 代码问题:长时间运行可能导致代码中的某些问题暴露出来。请检查代码逻辑,确保没有死循环或资源耗尽等问题。

针对以上可能的原因,您可以尝试以下解决方案:

1. 检查电源和散热:确保电源稳定,散热良好。

2. 增加软件滤波:在数据处理部分增加软件滤波,如低通滤波、平均滤波等,以减少干扰对数据的影响。

3. 优化代码:检查代码逻辑,避免死循环、资源耗尽等问题。

4. 硬件滤波:在ADS1230的模拟输入端增加硬件滤波,如RC滤波器,以减少干扰对数据的影响。

5. 软件重置:在代码中增加定时器,定时重置ADS1230,以避免长时间运行导致的问题。

希望以上建议能帮助您解决问题。如果问题仍然存在,请提供更多详细信息,以便进一步分析。
举报

更多回帖

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