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.

[参考译文] ADS1234:处理2&#39的缩放应用程序用带符号整数补充数据

Guru**** 2513185 points
Other Parts Discussed in Thread: ADS1234

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

https://e2e.ti.com/support/data-converters-group/data-converters/f/data-converters-forum/945360/ads1234-scale-application-dealing-with-the-2-s-complement-data-with-signed-integer

器件型号:ADS1234

我知道这听起来很简单、但从 ADS1234读取数据后、我在数学方面遇到了困难。  如果数据为负(数据> 0x7FFFFF)、则我添加(数据+ 0xFF000000)以填充整数并将其传递到换算集成逻辑。  这看起来非常好。 阈值时的情况下运行。  系统希望始终为正的数字朝向相同的方向。  例如、0 -> 0xFFFFFF.  我尝试了几种方法并不断下降(由于数学技巧不佳)。  我尝试删除负位/补码/+1 ~(data & 0x7FFFFF)+1并通过将0x80000添加到正数将正数放在上。  

我尝试了一些其他的东西,但没有快乐地掉下来。   

Scott

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

    您好、Scott、

    我不能完全确定我是否关注您正在做的事情。 二进制补码将在正方向输出一个0至0x7FFFFF (正满量程)的代码、从0xFFFFFF-1 (-1)输出到0x800000 (负满量程)。  如果要将24位转换值存储为有符号整数、则只需检查转换结果的 MSB (位23)以查看它是否为"1"。  如果为1、则需要对值进行符号扩展、以便结果保持为负。  您可以通过多种方法来执行符号扩展。  一种方法是将值0xFF000000添加到转换结果中、如您所述。  另一种方法是使用左移8位(<<8),右移8位(>>8)。  或者、您也可以采用数学密集型更强的补码和加1方法。

    长 ADCresult;//32位有符号整数
    
    /*捕获转换结果并将其存储为24位值*
    
    / if (ADCresult & 0x800000)//检查 MSB 是否设置为二进制补码
    {
    /*第一个选项*/
    ADCresult |= 0xFF000000;
    
    /*第二个选项*/
    ADCresult = ADCresult << 8;//shift result、以便 MSB 确定结果为负
    ADCresult = ADCresult >> 8;//将负值移回24位结果
    
    } 

    还有很多其他方法可以使用、但我不会再讨论这些方法。  进行在线搜索将提供一些其他方法。

    此致、

    Bob B

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

    我知道这听起来有点坚不可及,但我认为我有一个生动的大脑,所以让我把它放出来。  当我增加体重时,忽略金额;

    0x00700000

    0x00780000

    0x007FFFFF

    0xFF800000

    0xFF880000

    0xFF900000

    实际上、我的数学使用整数的方式中存在一个阶跃值、即使权重在上升、该值也会开始下降。

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

    您好、Scott、

    在二进制补码0xFF800000中、24位值为负满量程。  0x007FFFFF 为正满量程。  因此、0x007FFFFF 至0xFF800000之间的跳转是从正满量程到负满量程。   

    您不能超过满量程、因此如果您在0x007FFFFF 且保持增加权重、您将始终看到0x007FFFFF、因为这是 ADC 的最大满量程输出。

    此外、在您的示例中、您实际上是在负满量程时减小重量而不是增加。 请注意、使用二进制补码0xFFFFFFFF 实际上比0x00000000少一个(-1)。

    此致、

    Bob B

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

    Bob、

    当我增加体重时、我似乎遇到了不连续性。  这看起来是对的吗?

    GRAMS ATD 数据
    000   0x898FE0
    100    0x8A3530
    200    0x8ADA70
    300    0x8B7FC0
    400    0x8C2410
    500   0x8CCA40
    600   0x8D6F80
    700   0x8E14C0
    800    0x8EBA00
    850    0x8F0C79
    870   0X8F2D85
    872    0x8F3092
    873    0x8F3238
    874    0x70CF48
    875    0x70D887
    880    0x70D8A0
    900    0x70FAC0
    1000   0x719FAC

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

    您好、Scott、

    否、数据看起来不正确。  对于称重传感器或应变元件、您应该会看到一个接近于0的无负荷输出代码。  这可能类似于0xFFFFFF00到0x0000FF 的"给予"或"接受"范围。  0克的值是一个非常负数、1000克的值是一个非常正的数字。  有趣的是、在许多情况下、每100克的计数约为42320次。

    您显示的十六进制数据是直接来自 ADS1234吗?  或者、您是否正在进行某种校正、例如将二进制补码值转换为单极值?

    您是否有任何可供我查看的通信示波器快照或逻辑分析仪快照?  您有一个原理图供我查看吗?  AVDD、DVDD 和基准电压是多少?

    此致、

    Bob B

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

    尊敬的 Bob:  

    十六进制数据直接来自 ADS1234。  我已将示波器波形检查为特定的数据读取、并匹配。

    我连接了原理图和空载示波器布线。   

    我没有进行"偏移校准"。  这是问题吗?

    Scott

    e2e.ti.com/.../scope-trace.pdf

    e2e.ti.com/.../Scale.pdf

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

    您好、Scott、

    我没有得到示波器跟踪。  从原理图中、我看到模拟电源上有很多电感。  这可能是加电问题、尤其是在电源斜升缓慢或不单调的情况下。  有各种内部节点需要非常短的持续时间、但电感可能会扼流的大瞬时电流。  一般来说、我不想在电源上看到电感器、但有时需要电感器。  一种可能的替代方法是使用较小的值或电阻而不是扼流圈来创建低通滤波器。  

    我建议您保持 PDWN 为低电平、直到 AVDD 和 DVDD 电源达到标称工作电压、然后将 PDWN 变为高电平。  在 PDWN 设置为高电平大约100ms 后、对 PDWN 引脚进行脉冲至少100us 的低电平时间。  这应将 ADS1234重置为良好的起点。

    如果上电导致输出代码出现问题、则 PDWN 脉冲应将问题拉直。

    此致、

    Bob B

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

    尊敬的 Bob:

    在系统完全通电后、我将  ADS1234断电 (使其变为低电平) 2秒钟、然后在读取之前加电(使其变为高电平) 2秒钟。  已再次尝试连接示波器跟踪。

    e2e.ti.com/.../7506.scope-trace.pdf

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

    Bob、

    我刚刚检查了 AVDD、它是一个坚固的岩石。  问题是我的数据始终是错误的。  听起来我在硬件方面做了一些错误。    

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

    您好、Scott、

    我应该建议的另一点是、在您发出 PDWN 引脚脉冲后、向 ADS1234发送26个 SCLK 以强制进行自偏移校准。  PDWN 脉冲不会执行的一项操作是修复偏移寄存器中的任何损坏数据。  我会尝试在第一次测量后发送26个时钟、以查看数据是否在自偏移校准后自行校正。  如果数据看起来仍然不正确、那么让我们测量输入到被转换的 ADC 输入的模拟电压、测量到 AGND 的 AINP 输入和到 AGND 的 AINN 输入、并让我知道这些电压。  还要告诉我用于增益引脚的引脚电压。

    此致、

    Bob B

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

    尊敬的 Bob:

    我已尝试过所有3个增益设置、均高于0、问题发生在相同的值但重量不同的情况下。

    我现在将尝试进行自偏移校准、然后返回给您结果。

    Scott

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

    您好、Scott、

    您碰巧捕获了不同增益设置的十六进制值、以便我进行比较吗?  我认为自偏移校准应该会产生显著的影响、但我想我们会看到。

    此致、

    Bob B

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

    尊敬的 Bob:

    自偏移校准后、我没有看到差异。

    我仅捕获了增益设置2的十六进制值、但存在类似的-与+不一致。   

    Scott   

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

    您好、Scott、

    对于 ADC 输入、您是否进行了我请求的从 AINP 到 GND 和从 AINN 到接地的电压测量?  您能给我提供有关所用传感器的更多信息吗?

    此致、

    Bob B

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

    AINP1接地- 2.454

    AINN1至接地- 2.454

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

    您好、Scott、

    我假设您使用连字符、电压不是负值、对吧?  我还假设电压为空载、这也是正确的吗?  您能重复一下并给出100克重量结果以及输入相对于接地的电压吗?

    还有几个问题、您当前连接的是所有传感器还是仅连接一个传感器?  您是否有机会向我发送一些测试设置的图片?  如果您的器件在每个输入端显示的电压与接地端相对相同、并且在电源达到标称工作电压后对 PDWN 引脚进行了脉冲、并且您发出了自偏移命令、则转换结果应该会看到接近0的代码(+/-噪声)。  我感到困惑的是、除非部件损坏、否则为什么您会看到很多不同的东西。

    另一项检查是使用由同一激励供电的等值电阻器创建分压器。  在电阻器的结点、将 AINP 和 AINN 输入连接在一起。  这将创建一个外部短路、不会包括任何潜在的传感器偏移、我们也许可以更清楚地了解是否存在硬件问题。

    此致、

    Bob B

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

    e2e.ti.com/.../TAL201.pdf

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

    我假设您使用连字符、电压不是负值、对吧? 是的、抱歉!!

     我还假设电压为空载、这也是正确的吗? 正确

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

    e2e.ti.com/.../TestSetup1.pdfe2e.ti.com/.../TestSetup2.pdf

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

    您好、Scott、

    我必须承认,你让我偶然发现这个。  我过去使用过与您使用的类似的加载单元、您的设置非常简单。  您是否曾尝试拔下除一个加载单元以外的所有电池、以查看是否有任何不同的行为?  其中一种可能是您的5V 电源可能会出现压降、但即使这样、您也不应该看到 ADS1234输出转换结果的奇怪行为。  您能不能详细介绍一下您在上面使用的 ADS1234封装标记以及您如何/在哪里收到 ADS1234?

    此致、

    Bob B

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

    我从 DigiKey 购买了器件、我希望购买时可以。  我认为我缺少 AGND 会损坏器件。  我从批次中拔出另一个电路板、得到: 无负载传感器0 = FF9945、传感器1 = FFF179、传感器2 = FFF0AA、 传感器3 = 0004FC9。  这似乎与您所说的内容有很大不同和接近。

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

    您好、Scott、

    这似乎更合理。  我建议您在加电后仍发出自偏移校准、以便您看到的唯一偏移量是相对于称重传感器偏移量的。  此外、对于您的系统、您应该使用128的增益(两个增益引脚都设置为高电平)、因此在进行自偏移校准之前、请确保适当设置增益。

    此致、

    Bob B

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

    尊敬的 Bob:

    我更改了增益和校准、一切看起来都应该一样。 根本原因是我在失地时销毁了2个广告。 第三个电路板/AD 正常工作。

     

    感谢你们的帮助!!!!

    Scott