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.

[参考译文] CCS/ADS1231REF:ADS1231REF 的数据速率问题、以及在 MSP430F5529LP 的接收缓冲器中接收准确的代码

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

https://e2e.ti.com/support/data-converters-group/data-converters/f/data-converters-forum/933142/ccs-ads1231ref-problem-w-data-rate-of-ads1231ref-and-receiving-accurate-codes-in-receive-buffer-of-msp430f5529lp

器件型号:ADS1231REF
主题中讨论的其他器件: ADS1231MSP430F5529MSP430F449ADS1232REF

工具/软件:Code Composer Studio

根据 ADS1231数据表第13页的时序图、当速度较高时、所有24位数据输出(t_conv)的总时间应为12.5ms、这是我在 ADS1231REF 板上配置的。 但是、我的示波器显示信号在其他情况下工作。 为什么在该持续时间内应输出全部24位数据时、1位数据的长度约为12.5ms? 如何加快电路板的数据输出?

下面是示波器的图片。 如您所见、一个低位的持续时间大约为12.5ms。 在这里、SCLK 以32、768Hz 的频率运行、并且所有8个脉冲都在数据输出的1位范围内生成。 因此、我的程序在此时钟设置处获取的数据主要是0xFFFF。

当我将 SCLK 设置为大约80Hz (79.92Hz)以与 ADS1231REF 的数据速率同步时、这是我接收到的数据。 它非常不一致、无法转化为实际预期数据。  

调试点:代码为10d8dec
调试点:代码为 bd3dba
调试点:代码为 e767d5
调试点:代码为9b1b0f
调试点:代码为8f0fdc
调试点:代码为9f1fc2
调试点:代码为84048a
调试点:代码为1028269
调试点:代码为9a1a9d
调试点:代码为 df5f8a
调试点:代码为 d050db
调试点:代码为10f8fda
调试点:代码为15ddd86
调试点:代码为 ff7f47
调试点:代码为127a7ea
调试点:代码是10b8bbb

我的程序是否有问题? 下面是我的代码中从 ADS1231获取24位代码的函数。

int32_t get_Code (空)

  int32_t 代码、data1、signExtension;
  int16_t data2;
  int8_t data3、sign;

                   //当 DRDY (P7.0)变为低电平时、可以输出新数据。 然后、在 SCLK 的第一个上升沿、数据被位移出
  while (P7IN 和 BIT0);//在 P7.0 (DRDY)变为低电平时退出循环/新数据就绪

  while (!(UCB0IFG & UCTXIFG));
  UCB0TXBUF = 0x21;


  Data1 = UCB0RXBUF;
  符号= data1 >> 7;
  如果(符号) signExtension = 0xff;
  否则 signExtension = 0x00;
  signExtension <<= 24;
  Data1 = data1 << 16;


  while (!(UCB0IFG & UCTXIFG));
  UCB0TXBUF = 0x22;
  while (!(UCRXIFG));
  Data2 = UCB0RXBUF;
  Data2 = data2 << 8;


  while (!(UCB0IFG & UCTXIFG));
  UCB0TXBUF = 0x23;
  while (!(UCRXIFG));
  Data3 = UCB0RXBUF;


  while (!(UCB0IFG & UCTXIFG));
  UCB0TXBUF = 0x24;//第25个 SCLK 周期将 DRDY 置为高电平

  代码= data1 + data2 + data3 + 0x800000;         //使 ADC 代码为单极
  Code &= 0x00FFFF;
  printf ("调试点:代码为%04lx\n"、代码);

  故障码;

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

    Yamen、您好!

    我通读了您在此处找到的其他帖子:

    https://e2e.ti.com/support/microcontrollers/msp430/f/166/t/928115

    总之、您要将 MSP430F5529 LaunchPad (LP)连接到 ADS1231REF 板。  您将 LP 连接直接连接到 ADS1231REF 测试点。  这会使板载 MSP430与 LP 直接竞争。  通过将板载 MCU 保持在复位状态、您的解决方案听起来是合理的、但是、复位开关还控制用于为 ADS1231REF 的数字部分供电的3.3V LDO 上的使能引脚。  此外、您必须确保 PDWN 引脚不会悬空。

    因此、您必须添加连接以将 PDWN 引脚拉至高电平、并断开 SCLK、DOUT、SPEED 和 PDWN 引脚与板载 MCU 的连接。  一种方法是小心地切断 TP 处的布线、以断开与 MCU 的通信。  此外、请勿按住复位开关。  移除数字电源然后驱动输入将导致过多的电流流经数字输入引脚、这可能会损坏 ADS1231。  在断开与板载 MCU 的任何连接之前、我建议您观察板载 MCU 的通信、以查看其在捕获操作中应该是什么样的。

    另一个问题是需要将 ADS1231REF 的接地端连接到 LP 的接地端。

    最后、您需要在每次转换完成之间的时间内捕获转换结果。  为此、您需要更快的 SCLK。  SCLK 的速度可高达5MHz、但我建议使用1MHz 至2MHz 范围内的器件。  这里的目标是在下一个转换结果完成之前完全读取转换结果。  对于该 ADC、内部振荡器驱动转换时钟。  与许多 SAR ADC 一样、转换与 SCLK 无关。

    此致、

    Bob B

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

    我有点困惑。 LaunchPad 是否意味着连接到40引脚接头的 MSP430F5529 MCU? 通过板载 MCU、您是说 eZ-FET 仿真器吗?

    由于 ADS1231REF 上标记为 DOUT、SCLK 等的空洞是测试点、您是否无法输入信号? 例如、如果走线被切断并且通信被断开、由 LP 生成的 SCLK 信号将如何被发送到 ADS1231REF?

    我将一根导线焊接到 PWDN 测试点、将其连接到我的 LP 的 P2.2、并将输出设置为高电平。 我还将 ADS1231REF 的接地端连接到 LP 的接地端。

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

    Yamen、您好!

    我不讨论仿真器。  ADS1231REF 板上有一个 MSP430F449、用于控制 ADS1231REF 板上的 ADS1231。  测试点是监控点。  当您将 MSP430F5529 LaunchPad 连接到 ADS1231REF 时、两个 MCU 将相互竞争。  

    因此、您需要切断或移除 ADS1231上板载 MSP430F449的通信。  两个 MSP430器件不能同时连接到 ADS1231。  我建议、在断开连接之前、您应监控 MSP430F449的输出、以查看通信内容。

    此致、

    Bob B

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

    哦、好的、我现在了解了差异。

    如何监控 MSP430F449的输出? 当我断开测试点与 LP 的连接时、我是否应该能够看到 MSP430F449生成的 SCLK 信号? 相反、我得到一条平坦的线。

    我可以使用什么来切割线迹? 我假设我应该从测试点切割它们通向 MSP430F449的位置。

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

    Yamen、您好!

    是的、假设在施加信号并将复位开关保持在低电平时过程中没有任何损坏、您应该能够在测试点看到 SCLK。  您是否看到 LCD 显示屏完全更新?  如果是、那么您应该能够看到 SCLK。

    此致、

    Bob B

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

    我相信 SCLK 和 DOUT 信号使用板载 MCU 按预期工作。 我在下面附上了示波器的图像。 蓝色信号为 SCLK、黄色信号为 DRDY/DOUT。 在每个位移出之前、DRDY/DOUT 在一段时间内变为高电平。 我认为这是因为新数据尚不可以输出。 然后、DRDY 在新数据就绪时转换为低电平、并在 SCLK 的每个上升沿开始串行移位。

    在我之前的设置中、当 SCLK 测试点直接连接到引脚接头时、LP 生成的时钟信号是否从未到达 ADS1231REF? 我想弄清楚为什么 ADS1231REF 现在能够与 SCLK 的上升沿同步、而在从 DOUT 输出的每个数据位之前、无论 SCLK 如何、每位输出的数据始终为12.5ms。 这就是我之前将 LP 的时钟输出设置为80Hz 的原因。

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

    Yamen、您好!

    您在示波器图中显示的黄色轨迹线的时序显示了转换结果写入 ADS1231输出缓冲器的更新周期。 图19中的数据表时序图显示了典型更新周期(tUPDATE)为90us。  您的范围设置为每个分部40us、因此我们可以看到更新周期匹配得非常好。

    数据一旦可用、就应立即从器件中读取。  固件使用具有高到低边沿触发中断的 GPIO 来读取转换结果。

    当您将 LaunchPad 连接到 ADS1231时、微输出相互竞争。  不能同时将两个输出连接在一起。  此外、如果按下复位开关、数字电源的 LDO 也会被禁用。  当数字电源从为 ADS1231提供 DVDD 关闭时、ADS1231随后由数字 I/O 随机供电、该 I/O 通过输入引脚上的 ESD 结构反向驱动电流。  这违反了 ADS1231的绝对最大额定值。  对于这种类型的输入条件、您将获得奇数行为。  

    此致、

    Bob B

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

    因此、为了防止微输出相互竞争、我必须从 DOUT、PWDN、SCLK 和速度测试点切断通向板载 MCU 的走线。 然后、我将能够仅通过 LP 控制 ADS1231。 我应该如何切割线迹?

    在我的代码中、我向传输缓冲器发送第四个虚拟值以生成第25个时钟周期并将 DRDY 设置为高电平、然后我有几行代码来计算24位代码并清除中断标志。 当我退出 ISR 并准备重新进入时、DRDY 信号是否会由于新数据就绪而变为低电平、以便在高电平到低电平转换时不会触发中断?

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

    Yamen、您好!

    要切断布线、您需要能够切割铜的锋利物品。  我使用了一把爱好刀、就像在艺术品或建筑模型中使用的刀。  我还使用了一个锋利的工具、例如牙科工具或小爪、将铜迹线从焊盘上刮走。 您可能还需要放大镜。  在这个过程中、请非常小心、不要伤害自己。

    如果您使用中断例程、则无需发送 SCLK 的额外字节来强制 DOUT/DRDY 处于高电平。  仅当您轮询引脚时才需要执行此操作。  当转换完成时、总是有一个更新周期。  如果 DOUT/DRDY 在传输的最后一位数据中已处于高电平、则会看到信号转换为低电平。  如果 DOUT/ DRDY 处于低电平、则您会看到引脚脉冲从低电平到高电平再到低电平、以表示新结果就绪。  因此、在每次转换后、应该始终显示一个高电平到低电平的转换。

    至于您的时间、我不能说您运行例程需要多长时间、但您应该能够轻松捕获每次转换的结果。  在80sps 时、您有12.5ms 的时间来捕获数据并重新输入正常代码流。  我记得、LP 的运行速度是板载微控制器的3倍、在该微控制器中有足够的时间来捕获和显示每个转换结果的转换数据。

    此致、

    Bob B

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

    我能够从 DOUT 和 SCLK 测试点切断通向板载 MCU 的走线。 示波器上的信号现在更有意义、但我遇到了另一个问题。 为了校准刻度、我在刻度上无负载且在程序中输入预先确定的校准质量的情况下测量代码和重量。 然后、我可以根据校准期间获得的值、在无限循环上计算以克为单位的重量。 但是、这些是我收到的结果。

    您的体重为38.58728。
    您的体重是54.12695。
    您的体重为54.47614。
    您的体重为40.20233。
    您的体重为57.00787。
    您的体重为421.2299。
    您的体重为38.58728。
    您的体重为38.41266。
    您的体重为1881.292。
    您的体重为45.70233。
    您的体重为37.9325。
    您的体重为37.9325。
    您的体重为37.9325。
    您的体重为37.9325。
    您的体重为37.9325。
    您的体重为37.9325。
    您的体重为37.9325。

    如您所见、经过大约10次计算后、我的程序卡住了。 以下是我的示波器在首次~10测量(工作时)期间以及在它卡住后的图像。

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

    Yamen、您好!

    DOUT/DRDY 线路输出的外观不正确。  我看到许多长系列、没有新的转换数据。  我建议您不要发送 SCLK 来检索数据、从而确保系统按预期工作。  根据速度设置、您应该会看到 DOUT\DRDY 每100ms 或每12.5ms 切换一次(加电后首次转换除外、其中第一个输出需要4个数字滤波器转换周期才能稳定)。  在许多时间段中、长伸展时间可达400ms。  这让我相信您在 PDWN 或速度方面或两者之间存在一些连接问题。  或者、您可能没有将 ADS1231REF 的接地端连接到 LaunchPad 的接地端。

    此致、

    Bob B

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

    Yamen、您好!

    您的代码也有问题。  我想您说它是由中断驱动的吗?  它实际上是轮询。  此外、在收集数据时、需要确保在尝试读取数据之前等待传输周期完成。  我想您在数据1中错过了这个。  不清楚您尝试对顶部的符号扩展执行什么操作。  但是、我看到您正在尝试将结果转换为单极值。

    此致、

    Bob B  

     

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

    尊敬的 Bob:

    现在、即使程序正在运行并且生成了 SCLK、我的 ADS1231REF 板也不会输出任何数据。 之前、我已经切断了 DOUT 和 SCLK 测试点的布线、但在您最近的答复之后、我继续并切断了 PWDN 测试点旁边的布线。 但是、我的示波器不测量来自 DOUT 的任何信号、只是它持续设置为高电平。 附件是电路板背面的图片。 右侧的圆圈表示我为 SCLK/DOUT 剪切布线的位置、左侧的圆圈表示 PWDN。 我使用万用表检查连接是否实际上中断。

    此外、我最初发布的代码不是我使用的更新代码、抱歉。 下面是我用于收集数据的中断服务例程。

    #if defined (__TI_Compiler_version__)|| Defined (__IAR_systems_ICC__)
    #pragma vector = Port1_vector
    _interrupt void Port_1 (void)
    #Elif defined (_GNU_)
    void __attribute__((interrupt (Port1_vector))) Port_1 (void)
    其他
    错误编译器不受支持!
    #endif

      int32_t data1;
      int16_t data2;
      int8_t data3;

      开关(__even_in_range (P1IV、P1IV_P1IFG7))
      {
        案例 P1IV_P1IFG1:
        is 就绪= true;
        P1IFG &=~BIT1;//清除中断标志
        中断;

        案例 P1IV_P1IFG3:
        while (!(UCB0IFG & UCTXIFG));
        UCB0TXBUF = 0x21;
        while (!(UCRXIFG));
        Data1 = UCB0RXBUF;
        Data1 = data1 << 16;

        while (!(UCB0IFG & UCTXIFG));
        UCB0TXBUF = 0x22;
        while (!(UCRXIFG));
        Data2 = UCB0RXBUF;
        Data2 = data2 << 8;

        while (!(UCB0IFG & UCTXIFG));
        UCB0TXBUF = 0x23;
        while (!(UCRXIFG));
        Data3 = UCB0RXBUF;

        代码= data1 + data2 + data3 + 0x800000;
        Code &= 0x00FFFF;

        P1IFG &=~BIT3;//清除中断标志
        中断;

      }

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

    Yamen、您好!

    您剪切迹线的位置看起来是正确的。  我确实看到 SCLK 焊点看起来很差、可能连接不好。

    速度引脚不能悬空、因此请检查电压以确保其处于适当的电平。  如果您监控 DOUT/ DRDY、您应该会看到该切换以选定的数据速率(速度)进行。  如果 DOUT 始终为高电平、则我将确保 PWDN 引脚设置为逻辑高电平。  如果 PWDN 为低电平、ADS1231将处于断电状态。  同时确保 SCLK 保持低电平。  如果 SCLK 保持高电平、ADS1231将进入睡眠状态。

    您现在如何为 ADS1231REF 板供电?  模拟和数字电源都必须处于标称工作电压、否则 ADS1231将保持复位状态。

    此致、

    Bob B

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

    PWDN 引脚以某种方式设置为低电平、因此我修改了代码、现在电路板正在输出数据。 当 SCLK 未发送到 ADS1231REF 时、新数据大约每12.5ms 准备就绪一次、这是有道理的、因为速度设置为高电平。 我正在使用9V 电池为电路板供电。

    为了校准我的传感器、我使用用户输入的校准权重、当校准质量被放置在刻度上时 ADC 输出的代码(由校准阶段的中断触发器确定)、 和在刻度上未加载时 ADC 输出的代码(由零加载阶段的中断触发确定)。 然后、我将这些值插入 ADS1231REF 数据表第8页的公式1和2中、以计算质量。

    但是、我的结果并不一致、而且存在许多异常值。 下面是我获得的结果的日志。 前十几次左右的测量是校准质量、在完全运行的范围内、测量值约为51.246 g (我将其输入到程序中作为校准质量)。 然后、我取下校准质量、等待几秒钟、在刻度上没有负载、然后放置我的手机、我之前测量的是232.5 g。如您所见、结果跳了相当多的一步。 这种不一致性是否有原因? 也许我需要针对噪声进行调整、或者我的称重传感器配置有问题? 谢谢!

    您的体重为50.87415克。
    您的体重为64.2309克。
    您的体重为50.46387克。
    您的体重为64.2309克。
    您的体重为50.87415克。
    您的体重为65.78082克。
    您的体重为50.09918克。
    重量为49.87128克。
    您的体重为48.73157克。
    您的体重为51.51233克。
    您的体重为64.4588克。
    您的体重为50.23596克。
    重量为49.00513克。
    您的体重为57.62091克。
    您的体重为57.89441克。
    您的体重为51.10205克。
    您的体重为55.61511克。
    您的体重为50.96533克。
    您的体重为67.23956克。
    您的体重为50.46387克。
    您的体重为51.46674克。
    您的体重为52.28729克。
    您的体重为51.46674克。
    您的体重为10.94067克。
    您的体重为-8.98047克。
    您的体重为-11.5789克。
    您的体重为-10.9863克。
    您的体重为-10.3025克。
    您的体重为-0.638184克。
    您的体重为-10.8495克。
    您的体重为-9.02606克。
    您的体重为-10.4392克。
    您的体重为-10.4848克。
    您的体重为-9.84662克。
    您的体重为-9.98334克。
    您的体重为-0.455872克。
    您的体重为-9.89221克。
    您的体重为-8.34229克。
    您的体重为161.4205克。
    您的体重为246.5754克。
    您的体重为245.4358克。
    您的体重为247.7151克。
    您的体重为254.2795克。
    您的体重为253.7781克。
    您的体重为253.1399克。
    您的体重为252.0002克。
    您的体重为245.8005克。
    您的体重为254.5074克。
    您的体重为253.4134克。
    您的体重为253.459克。
    您的体重为729.2929克。
    您的体重为251.362克。
    您的体重为251.0885克。
    您的体重为253.0943克。
    您的体重为252.7752克。
    您的体重为255.6015克。

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

    Yamen、您好!

    您似乎有相当大的噪声。  噪声最可能的来源是布线中的噪声、但 ADC 转换过程也会产生一些噪声。  您可能已经说过、但可施加到称重传感器的最大重量是多少?您所用称重传感器的灵敏度(以 mV/V 为单位)是多少?

    如果我知道返回的代码结果、我将更容易知道发生了什么、而不是实际计算重量。  这将帮助我确定测量中的噪声量。  返回的值应为连续且连续的数据样本(无缺失样本)。  

    校准重量的平均值似乎是54.63克、但大部分时间噪声都很大且是周期性的。  我想这是电源线周期噪声。  在这种情况下、如果您更改为10sps (速度引脚为低电平)、则噪声应显著降低、读数应更稳定。  10sps 时、数字滤波器应消除电源线路周期噪声。  确定噪声源后、需要在 ADC 输入端添加一些滤波。  串联电阻为0欧姆、因此很可能需要增加。

    此外、您正在尝试使用比看起来的满量程重量低得多的重量进行校准。  校准是确定系统偏移和增益的过程。  当重量较小且噪声相当大时、用于增益的斜率因子可能会在测量之间发生显著变化。  如果校准重量远接近可应用于称重传感器的最大重量、则更容易确定增益斜率。

    但是、在您能够有效校准之前、您需要降低测量的噪声。

    此致、

    Bob B

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

    我使用的是4负载单元配置、每个配置都可以支持高达50千克(总计200千克)的重量。 称重传感器的灵敏度为1.0mV/V

    我修改了程序以打印代码、而不是计算出的权重、以便更轻松地进行调试、但我注意到、虽然我清除了 P2.2 (连接到速度测试点)、但在程序期间速度设置为高、数据输出速率为80SPS。 我之前没有从速度测试点切割任何布线、因为我只看到一条通向 ADS1231芯片本身的布线? 如何将速度设置为低电平并降低数据速率? 下面是电路板上速度测试点的放大图像。

    我在处理系统噪声方面没有太多经验。 如何确定噪声源? 串联电阻为0欧姆意味着什么?  

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

    Yamen、您好!

    驱动器与速度引脚最有可能发生竞争。  电路板的顶部显示了可以切割的速度测试点旁边的布线。

    您在 R23和 R24提供的图片中可以看到滤波电阻器。  请注意、这些电阻器在顶部标记为"0"。  这些值应替换为一些电阻值、以提供噪声截止频率来限制外部噪声。

    当您将多个称重传感器连接在一起(如人体体重秤)时、接线将用作天线。  您需要限制接线中从 EMI/RFI 拾取的噪声和电源线路周期噪声。

    此致、

    Bob B

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

    尊敬的 Bob:

    感谢您在测试点方面的帮助。 我切断了电路板顶部速度测试点旁边的迹线、现在所有引脚在代码中都按预期工作。

    在10SPS 时、这些是我获得的结果。 您可以看到、噪声更小、但仍然足以破坏重量测量。

    您的体重为232.7239克。 代码是1365759。
    您的体重为232.7664克。 代码为1362943。
    您的体重为232.7548克。 代码为1363711。
    您的体重为232.7664克。 代码为1362943。
    您的体重为232.7741克。 代码为1362431。
    您的体重为232.8205克。 代码是1359359。
    您的体重为232.6659克。 代码是1369599。
    您的体重为232.7471克。 代码是1364223。
    您的体重为232.7664克。 代码为1362943。
    您的体重为232.6427克。 代码为1371135。
    您的体重为232.5924克。 代码为1374463。
    您的体重为232.6659克。 代码是1369599。
    您的体重为232.6813克。 代码是1368575。
    您的体重为232.8051克。 代码是1360383。
    您的体重为232.7045克。 代码为1367039。
    您的体重为232.8901克。 代码为13594751。
    您的体重为232.8398克。 代码是1358079。
    您的体重为232.604克。 代码为1373695。
    您的体重为232.6697克。 代码是1369343。
    您的体重为231.564克。 代码是1442559。
    您的体重为232.5924克。 代码为1374463。

    如何更换 R23和 R24? 我是否应该手动将其从电路板上焊开并放置我自己的 SMD 电阻器组件?

    谢谢、

    亚门

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

    Yamen、您好!

    是的、噪声似乎仍然相当明显。  是的、移除 ADS1232REF 上用于 R23和 R24的0欧姆电阻器并将其替换为足以滤除噪声的值将非常有用。  仍然存在的问题是了解噪声源和需要滤波的频率。

    我对代码和测量值确实有疑问、因为它们看起来不匹配。  如果您的称重器总容量为200kg、灵敏度为1mV/V、 然后、在可能的总代码中、您的测量将被限制为负载单元的 FSR 除以 ADC 的 FSR、该值将为5mV (使用5V 激励)除以39mV、相当于总范围的1/8。 如果我们认为无噪声位为17.4、那么2^17.4中的1/8将导致大约22138个总刻度计数。  分辨率将为200kg/22138或9G。  因此、信息中有一些内容您没有充分解释。

    此致、

    Bob B

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

    我向您提供的信息来自我在 SparkFun 上找到的规格表、尽管我当前使用的加载单元是从亚马逊的第三方订购的。 下面随附了规格的屏幕截图。

    如果我计划进行精确的称重、我是否需要更精确的称重传感器?

    我不太理解您是如何获得负载单元的 FSR 的。 请向我解释一下。

    谢谢!

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

    Yamen、您好!

    您说您使用了四个灵敏度为1mV/V 的50kg 负载单元。  我假设您使用5V 输出作为基准电压/激励源。  当总负载分布在四个负载单元上时、当四个负载单元中的每一个输出5mV (1mV/V * 5V 激励)时、您将拥有200kg 的满容量。  因此、称重传感器的 FSR 为5mV、200kg 是可应用的最大重量。

    就精确的秤重而言、这意味着许多不同的东西、具体取决于您的观点。  对于高精度称重传感器、通常需要花费大量成本来获得高精度和高精度。

    请注意、使用所描述的称重传感器时、您会看到线性度、可重复性、迟滞等方面的一些潜在误差。  那么、您的设计限制是什么、测量需要多精确?

    此致、

    Bob B

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

    尊敬的 Bob:

    与分析平衡不同、重量比值不必太精确。 但是、它应该能够准确地测量到一个小数点的人的体重。 我应该研究线性度更高、滞后更小等的负载单元、还是我的电流负载单元设置足够了?

    我目前正在进行器件的 PCB 设计、我的主要重点是限制噪声并保持清晰的信号。

    谢谢、

    亚门

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

    Yamen、您好!

    一个十进制位置表示什么测量单位?  根据我之前的分析、我确定 ADS1231可以使用您描述的设置解决的绝对最佳值是9克。  假设测量中没有外部噪声。  根据手机称重后发送的最后数据、您到达了9G 目标窗口。

    如果您希望达到1/10克、则需要将分辨率提高100倍。  这将需要对您的设计进行重大更改、即使这样、我也不确定您是否可以达到该目标。

    如果测量单位为磅、则1/10磅约为45克、这很容易适应9克分辨率窗口。

    此致、

    Bob B

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

    尊敬的 Bob:

    磅的小数点应足够精确。

    如果我想以磅为单位显示重量测量值、最多可显示两个小数点、则连续测量值之间的差值应约为4.5克(1/100磅)、这不适合9克分辨率窗口。 要增加分辨率窗口、我必须得到精度为两倍的称重传感器(例如称重传感器的灵敏度为0.5mV/V)、对吧?

    谢谢、

    亚门

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

    此外、增大激励电压是否会导致更精确的重量测量? 我可以在 PCB 上支持10V 激励电压吗?

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

    Yamen、您好!

    解决较小重量的能力与转换噪声以及称重传感器的容量和灵敏度有关。  如果您从1mV/V 灵敏度变为0.5mV/V、则动态范围会减半、且难以解析的幅度将是原来的两倍。  如果您将灵敏度提高到2mV/V、则动态范围将增加2、并且可以更轻松地解决较小的重量问题。

    如果您以10V 激励1mV/V 负载单元、则会将输出电压增加2、类似于使用2mV/V 负载单元灵敏度。  这听起来不错、但您必须在两个方面小心谨慎。  一种方法是、测量不再是比例式的、将受到额外的噪声和漂移的影响。  第二个问题是、当称重传感器以10V 激励时、平衡点是中等激励电源、即5V。  ADS1231的输入范围为 AVDD-1.5V 至 AGD+1.5V、5V 超出该范围。  要使用10V 励磁、您需要使用双极电源进行励磁、例如+7.5V 和-2.5V。  以这种方式使用电源将平衡点(或无负载条件)设置为2.5V、处于 ADS1231的输入范围内。

    此致、

    Bob B

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

    尊敬的 Bob:

    我的错误是指灵敏度为2mV/V 的称重传感器、而不是0.5mV/V

    您是否有任何有关确定噪声源的提示? 我尝试为 R23和 R24选择有效值、但我不知道滤波器的截止频率应为多少。

    谢谢、

    亚门

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

    Yamen、您好!

    2mV/V 灵敏度将优于1mV/V  在查找噪声源时、您需要收集一系列数据、并绘制这些数据并在图中搜索周期性波形噪声、或在 FFT 中绘制数据。  一个噪声源是50/60Hz 的电源线周期噪声、具体取决于工作区域。  即使是从光源或相邻的电源布线中、也可在布线中轻松拾取电源线周期噪声。  另一个常见的噪声源是 EMI 或 RFI。  这种干扰可能来自运行中的电机、风扇、手机、WiFi 或任何其他高频内容。  该噪声可能会混叠回到通带中、或者如果信号足够强、则可以在 ADS1231输入电路中进行整流、并在测量中产生直流失调电压。

    如果以80sps 运行、则50/60Hz 在 ADC 的通带内。  10sps 的运行将使数字滤波器中的50/60Hz 陷波。  对于80sps 下的运行、您可以尝试从1k 电阻器开始。  但是、环境噪声可能会因位置而异、因此首先消除进入 PCB 的噪声是最好的方法、而不是在经过 PCB 后处理噪声。 使用正确端接的屏蔽电缆就是这种做法之一。

    此致、

    Bob B