【问题标题】:Convert 24 bit 2's Compliment (MSB first) value to a voltage将 24 位 2 的 Compliment(MSB 优先)值转换为电压
【发布时间】:2015-02-25 20:37:43
【问题描述】:

我有一个用于测量差分信号的 ADC (AD7767)。来自 ADC 的数据是 2 的补码 MSB 前 24 位值。我想将此值转换为电压。使用的参考电压为 5 伏。我正在使用 Arduino IDE。我目前所拥有的基本上是这样的:

const long minValue = 0x800000;
const long maxValue = 0x7FFFFF;
signed long result = 0;
....
long voltage = (result * 0x5) / maxValue;
Serial.println(voltage);

这会打印一个值 0。

值是什么:

result = 1010101101010101

0x5:又名Vref

(result * 0x5) = 110101100010101001
(result * 0x5) / maxValue = 0

【问题讨论】:

标签: c++ arduino spi 24-bit


【解决方案1】:

你正试图将一个分数存储到一个 long 中。结果将始终为零。您需要将其中一个操作数转换为双精度并将结果存储在双精度中。

【讨论】:

    【解决方案2】:

    问题在于您使用的长类型。 它是整数 1,结果小于 1,结果为 0。 使用浮动你将拥有:

    (结果 * 0x5) = 110101100010101001 = 219,305

    最大值 = 0x7FFFFF = 8,388,607

    结果 = 219,305 / 8,388,607 = 0.026 [伏特]

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-01-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多