2012-11-24 15 views
2

在我問這個問題之前,我會給出問題的背景。在PIC中計算方程式

我的PIC 18F彙編器例程解決Rntc到T°C的關係。 但精度最好是3位數。

彙編器例子中使用的NTC參考電阻I是10000歐姆,對應於25°C的溫度。

在只有3個可用位數,方程的解決方案是= XF6,D246 顯示T的顯示器上,24和6

的時間之間的小數點計算T,包括牛頓近似約爲800us 。這個計算時間看起來比MPLAB C

彙編程序更好的計算公式 Y = 9.228 * X * X-840.852 * X + 25236.82運行的開方成比例 b2-4ac的問題...當我嘗試包含小數點時,數字溢出了我的24位數學套件我必須使用a = 9。 b = 840 c = 25236

Q1使用整數,是否有一些技巧使用24位數學計算上述數字?

回答

5

我不認爲真的需要比10位左右的精度更多。

方程sqrt(a* x^2 + b*x + c),x = 178..1196給出了非常線性的響應。人們甚至不必使用查找表進行分段線性逼近。

的線性方程將是Y = 3.03x-129

EDIT:方程可以通過注意被進一步簡化的是0.03 * X〜=256分之8* X;
因此y=a+(a<<1)+(a>>5) - 131; // 8/256 = 0.03125 to be precise.

該常數被修改爲131以微調誤差爲零均值。 的曲線顯示180<x<1200

Relative vs Absolute error

+0

非常感謝亞希Suihkonen –

+0

非常感謝亞希Suihkonen相對誤差(左)和絕對誤差(右),我嘗試了線性表達式y = mx + C作爲你的建議。即y = -408.867 * x + 20693。不幸的是,在25ºC時,方程式指出26ºC,這是最差的偏差。實際上,對於我的應用,快速溫度計的誤差爲1ºC是可以接受的。非常感謝。 –