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.

[参考译文] ADS1115:读取 ADS1115的4个通道数据

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

https://e2e.ti.com/support/data-converters-group/data-converters/f/data-converters-forum/1226197/ads1115-reading-4-channels-data-of-ads1115

器件型号:ADS1115

您好!  

我们 使用 ADS1115读取所有4个通道上的传感器数据。 要求如上所述。  

1.从 ADS1115的通道1到通道4读取数据并存储在阵列中。  

2. FFT/Goertzel 应用于存储的数据。 因此、我们需要至少128个 FFT 样本和200个 Goertzel 样本。  

3.由于 ADS1115支持每秒860个样本、因此我们可以从全部4个通道每秒读取128个样本。 如果我们从2个通道读取数据、则可以读取256个样本。 这种理解是否正确?  

4.我们已经实施了 Goertzel 算法并进行了验证。 在测试过程中、我们发现当我们仅读取一个 ADS1115通道(它可以是通道1或通道2、但一次读取一个通道)时、该算法有效。 但是、当我们逐一读取2个通道并实施 Goertzel 算法时、算法的输出不符合预期。  

我们想知道在逐一读取2个通道时、ADS1115是否无法提供适当的输出?  

我们已将 ADS1115配置为连续模式、我们通过微控制器计时器中断(每5ms)定期读取数据。 我们使用内部时钟为8MHz 的 Atmega328微控制器。

如果我们以正确的方式使用 ADS1115、请提供建议。

谢谢。

Purushottam  

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

    尊敬的  Purushottam:

    Unknown 说:
    3. ADS1115支持每秒860个样本、因此我们可以在一秒内从全部4个通道读取128个样本。 如果我们从2个通道读取数据、则可以读取256个样本。 这种理解是否正确?  [/报价]

    数据传输速率为每秒860个样本、您每条通道每秒最多可读取215个样本。 如果您使用2个通道、将每秒430次采样。  

    ADS1115具有一个以1MHz 频率运行的集成振荡器、输出数据速率与振荡器频率成比例缩放。 内部振荡器随温度和时间漂移、因此输出数据速率可能有+/-10%的变化。  

    即使在低端、如果您要多路复用 全部4个通道、则每秒仍能读取193个样本、这仍比您刚才提到的每通道128个样本高。  

    [quote userid="348117" url="~/support/data-converters-group/data-converters/f/data-converters-forum/1226197/ads1115-reading-4-channels-data-of-ads1115我们想知道当我们逐一读取2个通道时、ADS1115是否无法提供正确的输出?  [/报价]

    如果在正在进行的转换期间(或在连续转换模式下运行)更改了配置寄存器、新配置直到正在进行的转换完成后才会生效。  新配置不会重置数字滤波器并重新启动转换。  这会导致在假设返回的数据用于新的多路复用器配置的情况下读取先前的转换数据。

    在更改多路复用器配置时可能会出现问题、其中先前的转换已完成和新的转换已开始时不清楚。  

    建议在对多路复用器进行连续循环时、使用单次模式而不是连续模式。

    这将解决从前一个通道读取转换但将其解释为下一个所选通道的结果的问题、这可能是您在仅从一个通道读取时得到预期结果的原因。 但当您一个接一个地读取2个通道时、则不会如此 

    此致、

    天使

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

    您好,Angel,

    感谢您的讲解。  

    我们已将连续转换模式更改为单次转换、推荐用于读取每秒860个样本的2个通道。  

    转换1个样本所需的时间约为1.16ms。 因此每1.16ms 警报引脚就会从高电平变为低电平。 但在本例中、它是每5ms 生成一次。  我们已经尝试改变采样率,但在所有情况下,警报引脚的变化5倍晚.  这样做的原因是什么?

    蓝色的波形为警报引脚状态、该状态每6.241ms 变化一次、速率为860SPS。  

    此致、

    Purushottam  

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

    尊敬的 Purushottam:

    上周末是一个美国假期,因此 Angel 将在明天(5月31日)我们一天结束时回复您。

    -Bryan

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

    尊敬的 Purushottam:

    警报引脚默认为低电平有效、因此您需要的是将线路拉至低电平而不是高电平时、这会缩短图表中所示的时间。

    此致、

    天使

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

    您好,Angel,

    您好!!

    我同意在转换完成时 ALERT 引脚会被拉低。 因此、当 ADC 配置为860SPS 时、读取一个通道时、每隔1.16ms 应将线路拉至低电平。  

    但在本例中、线路在每6.1ms 被下拉一次。 这仅为1000ms/6.1ms = 每秒163个样本。  

    因此、我想知道为什么会发生这种情况。 尽管我获得了应用于 ADC 通道的正确信号值、但缺失的样本为 Goertzel 幅度计算带来了意想不到的结果。  

    谢谢。

    Purushottam  

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

    尊敬的 Purushottam:

    当采样率为860SPS 时、每次转换大约需要1.16ms 完成。 此时间仅考虑发出转换启动命令和转换结果准备就绪之间所需的时间。  对配置寄存器进行编程以在正确配置下进行转换 以及在完成转换后读取结果时、并未考虑数字 I2C 通信的时间、这两种时间都需要时间。

    在您读取了之前的结果后、警报引脚将向下计数、发出下一次转换且转换结果完成。

    从读取前一个结果、重新为器件供电和通过 I2C 发出新的转换启动与转换结果准备就绪之间、转换时间仅占6.1ms 时间的一部分。

    您是否检查过数字通信的 运行速率? 这可能就是无论选择何种数据速率、都使 ALERT 引脚具有类似时序的原因。

    有一些方法可以优化时间、例如在从转换寄存器中读取数据之前立即启动下一个转换、这样转换就可以在读取之前的结果的同时进行。

    此致、

    天使