This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

[参考译文] ADS1230:输出数据波动

Guru**** 2539500 points
Other Parts Discussed in Thread: ADS1230

请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/data-converters-group/data-converters/f/data-converters-forum/937102/ads1230-output-data-fluctuation

器件型号:ADS1230

大家好、

我们正在设计具有以下规格的称重秤。

  1. 称重传感器500千克  
  2. 称重传感器输出2mV/V
  3. VREF 5VDC
  4. 输入电源5 VDC
  5. ADS 增益128
  6. 数据速率10SPS
  7. 连接 ATMHz 328控制器

我在 ADC 输出计数方面遇到问题、输出计数继续波动。

当我在 +ve 引脚上施加0.00 VDC 电压并读取 ADC 输出时、但数据计数仍然波动。

请帮助我解决 ADC 值波动问题以及如何测量噪声?

#include 

int ADS1230_DOUT = 12;//用于 ADS1230的 DRDY/DOUT 的引脚
int ADS1230_SCLK = 13;//用于 ADS1230的 SCLK 的引脚
int ADS1230_NPDWN = 5;//用于 ADS1230的 nPDWN 的引脚

float 容量= 50000;
float 灵敏度= 2;



void ReadData (){
SPI.beginTransaction(SPISettings(400000、NPDWN

= 0);intM32 = 0;intSPI = 0;intMIRt 计数
对于(int i = 0;i < 10;i++){

if (digitalRead (ADS1230_DOUT)=低电平)
{
int32_t sample = 0;
采样|= SPI.transfer (0);
采样<<= 8;
采样|= SPI.transfer (0);
采样<<= 8;
采样|= SPI.transfer (0);
采样<<= 8;
采样/= 1L << 12;
SUM = SUM + SAMPLE;
count++;


}
}

SUM = SUM / COUNT;
Int32_t WEIGHT =(Capacity * SUM)/((1L << 20)* 128 *((敏感度/ 1000)));

Serial.println (权重);
SPI.endTransaction ();

}



void setup()
{
Serial.begin (9600);

pinMode (5、1);
digitalWrite (5、1);
PinMode (ADS1230_DOUT、输入);
SPI.begin();
}
void loop()
{
ReadData();
delay (1000);
}

我们的 ADC 输出、

28332
28213.
28299
28340
28310
28265
28312
28310
28263.
28245.
2828287
28273.
28332
28291
28306
28327
28323
28286.
28256
28323

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好、Nikhil、

    我想这是一个使用 Arduino 的原型。  如果是这种情况、则接线中可能会有很多噪声拾取。  噪声可从 EMI/RFI 中拾取、其中最常见的噪声源是电源线路周期噪声。  

    您是否有连接原理图?  您是否在 ADS1230输入端使用 RC 滤波器?

    在您的代码中、您似乎尝试同时对多个转换求平均值、但您的代码无法按预期工作。  在 ReadData()函数中有 for 循环,在第一次通过循环时,ADS1230_DOUT 将为低电平,数据将被读取。  读取数据后、DOUT 将返回高电平、每次连续通过 for 循环时都将跳过读取任何新结果。  结果将是您平均1个结果而不是10个结果。

    为了准确确定噪声量、最好将数据作为原始数据进行捕获、而无需进行任何计算。  因此、最好查看"um"值而不是"weight"值(尽管我想您可以同时打印这两个值)、这样我就可以实际看到噪声计数的数量并确定是否存在任何特定的噪声信号。  最好能看到至少128个连续和连续转换结果、最高可达1024个。

    此致、

    Bob B

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    尊敬的 Bob:

    是的、我们使用 Arduino 尝试此操作。 我们正在关注 Circuititar 网站 上的电路和原理图。 我已附上原理图。   

    现在我们使用的是 Circuitar 的库。 但出现了相同的噪声。

    所以我们后来认为我们无法从 ADS 正确读取数据、所以我们添加了缓冲区、如电路原理图所示。

    但出现相同的噪声。  

    此致、

    Nikhil

    e2e.ti.com/.../weighing_5F00_scale.pdf

    e2e.ti.com/.../Load_5F00_Cell_5F00_v1.0.pdf

    e2e.ti.com/.../2043.data.txt

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好、Nikhil、

    对于您的0V 输入、我对您如何执行此操作感到困惑。  确保您具有 ADS1230的有效基准电压、对于模拟输入、您需要将输入连接到 PGA 的正确输入范围、否则您将看到超出 PGA 范围的影响。  

    检查 ADS1230噪声的最佳方法是使用大小相等的电阻器创建分压器、并使用与称重传感器相同的激励为电阻分压器供电。  在两个电阻器的结处、将两个模拟输入连接到此点、以有效地造成对中间电源短路。  转换结果应与您所使用配置的数据表中给出的噪声表相匹配。

    如果噪声超出表数据、则需要确定噪声源。  这通常是由电源噪声或接地不良导致的。  使用短路输入案例获得适当的噪声后、您可以移除分压器并替换为称重传感器。

    如果您仍然看到过量噪声、则需要发现噪声源。  最有可能是负载单元电缆引入了噪声。

    我确实注意到您的原理图中有一些内容。  您应该在 DVDD 电源引脚上有一个旁路电容、而不仅仅是 ADS1230的 AVDD 引脚。  此外、我还建议您在 ADS1230的 REFP 和 REFN 输入之间添加一个100nF 电容。  CAP 输入上的 C8应为低阻抗连接、而 CAP 应使用优质电容器尽可能靠近输入引脚。  C13和 C15的值不应与 C14相同、因为共模滤波器的差异可能会导致输入差。  C14应主导滤波器、其值需要至少比 C13和 C15大10倍。  如果 C14为100nF、则 C13和 C15应不大于10nF。

    此致、

    Bob B