簡體   English   中英

將24位2的Compliment(MSB優先)值轉換為電壓

[英]Convert 24 bit 2's Compliment (MSB first) value to a voltage

我有一個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

問題出在您使用的長字型。 它是整數1,結果小於1,則結果為0。 使用浮點數,您將擁有:

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

maxValue = 0x7FFFFF = 8,388,607

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

Yu試圖將分數存儲到很長一段時間。 結果將始終為零。 您需要將其中一個操作數強制轉換為雙精度並將結果存儲為雙精度。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM