[英]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.