TIwilliam hill官网
直播中

李静

7年用户 1017经验值
私信 关注
[问答]

使用ADS1256中的三个通道作定时采集遇到的疑问求解


  • 各位专家,使用ADS1256中的三个通道作定时采集,采样率30Ksps,单端输入,AINCOM接2.5V参考电压,其余输入端悬空。测试中,arm芯片开始能正常读到数据,但偶尔会三个通道的采样值相互串,第一个通道串得频些,数据正常(测试中,3个通道接了3个不同的电压)。但时间长了(40分钟)以后,三个通道采集的数据则都出现问题,得到的不再是接入的参考电压值了。请问专家,这是哪里出了问题?

    • 附AD程序:
    void AD1256Init()
    {
    //*************自校准****************

    • while(DRDY);
    • PCout(2)=0;
    • SPI3_ReadWriteByte(adSELFCAL);
    • while(DRDY);
    • PCout(2)=1;
    • //**********************************
    • ADS1256WREG(REG_STATUS,0x04); // 高位在前、使用缓冲
    • ADS1256WREG(REG_ADCON,PGA_2); // 放大倍数2
    • ADS1256WREG(REG_DRATE,DATARATE_30K); // 数据30Ksps
    • ADS1256WREG(REG_IO,0x0E);
    • while(DRDY);
    • PCout(2)=0;
    • SPI3_ReadWriteByte(adSELFCAL);
    • while(DRDY);
    • PCout(2)=1;
    }

    signed int ReadADConvertData(unsigned char channel)
    {

    • unsigned int sum=0;
    • while(DRDY);//当ADS1256_DRDY为低时才能写寄存器
    • ADS1256WREG(REG_MUX,channel); //设置通道
    • delay_us(2);
    • PCout(2) = 0;
    • SPI3_ReadWriteByte(adSYNC);
    • delay_us(2);
    • SPI3_ReadWriteByte(adWAKEUP);
    • delay_us(2);
    • SPI3_ReadWriteByte(adRDATA);
    • delay_us(10);
    • sum |= (SPI3_ReadWriteByte(0xff) << 16);
    • sum |= (SPI3_ReadWriteByte(0xff) << 8);
    • sum |= SPI3_ReadWriteByte(0xff);
    • PCout(2) = 1;
    • if (sum>0x7FFFFF) // if MSB=1,
    • {
    • sum -= 0x1000000; // do 2's complement
    • }
    • return sum;
    }

    void ADS_Results(float res[3])
    {

    • int Result,i;
    • for(i = 0;i <= 2;i++)
    • {
    • Result = ReadADConvertData( (i << 4) | NEGtiVE_AINCOM);
    • res[((i & 0x07)>0)?((i & 0x07) - 1):2] = Result*2.9802325940409414817025043609744e-7;
    • }
    }
    另外,在AD之前运用opa4277作信号处理(滤波及加法威廉希尔官方网站 ),运放的供电正常,但发热很厉害,烫手。这是为什么?

回帖(3)

杨红

6 天前
   我觉得你的测试, 最好不要采集悬空的通道.
运放发热厉害, 这一定有问题, 试试运放后串个小电阻再接采样
举报

李妍

6 天前
一开始能正常采集数据,硬件软件应该都没问题。时间长了不准确,芯片是否有发烫现象? 
采集之间相互串扰,那么layout方面有将模拟信号和数字信号分开?各自参考模拟地和数字地?
举报

河神大人

6 天前
根据您提供的信息,您在使用ADS1256进行定时采集时遇到了数据串扰和长时间采集后数据异常的问题。以下是一些建议和可能的原因:

1. 硬件连接问题:请检查您的硬件连接是否正确且稳定。确保所有连接线都牢固,没有松动或接触不良的情况。此外,检查电源和地线是否正确连接,以确保稳定的电源供应。

2. 干扰问题:在长时间采集过程中,可能会受到外部电磁干扰的影响。请确保您的威廉希尔官方网站 板远离可能产生干扰的设备,如手机、无线设备等。此外,可以考虑在威廉希尔官方网站 板上添加屏蔽层,以减少干扰。

3. 电源问题:长时间工作可能导致电源波动或不稳定。请检查您的电源供应是否稳定,以及是否有足够的功率供应给ADS1256。如果可能,尝试使用更稳定的电源或增加电源滤波。

4. ADS1256配置问题:请检查您的ADS1256配置是否正确。根据您的描述,您使用的是单端输入和30Ksps的采样率。请确保您的配置与这些参数相匹配。此外,检查您的SPI通信是否正确,包括时钟速率、CPOL和CPHA等。

5. ARM芯片问题:长时间工作可能导致ARM芯片过热或出现其他问题。请检查您的ARM芯片是否有足够的散热措施,以及是否在正常工作温度范围内。

6. 软件问题:请检查您的AD程序是否有任何错误或漏洞。您提供的代码片段不完整,因此无法判断是否存在问题。请确保您的程序正确地初始化ADS1256,并且正确地读取数据。

综上所述,您需要从硬件连接、干扰、电源、配置、ARM芯片和软件等多个方面进行排查,以找到问题的根本原因。希望这些建议对您有所帮助。
举报

更多回帖

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