微控制器是10位ADC,是能用軟體擴成12位結果的。
方法其實很簡單,但卻是偽12位的結果。
下面透過例項進行擴位演算,看看偽12位結果,在使用上的侷限性。
二進位制數位的擴位和縮位,為保證結果能在全域範圍被表示,使用最高位對齊、左右移位的方法進行擴位或縮位。
是以損失最低位得到擴縮結果,因為最低位的數值表達絕對值是最小的。
對於擴位,擴位幾位,二進位制數就左移幾位,數位擴充套件以後,實際精度為原有數位的精度,精度沒有任何提升。
對於縮位,縮位幾位,二進位制數就右移幾位,數位縮減以後,實際精度為現有數位的精度,精度反而下降。
例項:下圖是用最高位對齊、左右移位的方法進行擴位和縮位的演算
從上圖中的例項,可看出,10位擴位成12位後,最小計數值變成了二進位制的‘100’,是偽12位解析度,實際解析度不變,最低2位是無法透過計算,補上實際數值的。
從上圖中的例項,可看出,10位縮位成8位後,最小計數值依然是二進位制的‘1’,但是最大技術值縮小了4倍,實際解析度降低,原來的最低2丟棄了。
正所謂“巧婦難為無米之炊”對於ADC而言,硬體決定了最高精度,軟體是無法透過計算彌補缺失的精度的。因為,任何數學計算,只能從高精度降到低精度,而無法從低精度升高到高精度。
數位丟失了,是無法憑空臆造出來。因此在系統設計時,對精度的預估,只能高不能低,因為高了,可以降低,低了無法提高。
很多時候,處於成本、設計、專利、原始碼等原因。
所使用的微控制器,可能只有10位精度的ADC,但是系統要求12位精度的ADC結果來參與計算,實現軟體介面的通用性。
如果實際產品可以接收10位精度的ADC,僅僅只是軟體介面需要12位精度數值,就可以透過高位對齊左移擴位的方式來實現。
如果實際產品必須要求12位精度的ADC,那麼就只有透過片外增加獨立的高精度ADC,比如下圖的這個ADC晶片。
片外增加的獨立ADC精度可能高於12位。
那麼就可以透過高位對齊右移縮位的方式來實現。
這樣降低精度的計算,仍然可以保持精度為12位,完全不會喪失系統對ADC的精度要求,甚至還有在未來提高精度的可能性。
微控制器是10位ADC,是能用軟體擴成12位結果的。
方法其實很簡單,但卻是偽12位的結果。
下面透過例項進行擴位演算,看看偽12位結果,在使用上的侷限性。
10位二進位制數的擴位和縮位二進位制數位的擴位和縮位,為保證結果能在全域範圍被表示,使用最高位對齊、左右移位的方法進行擴位或縮位。
是以損失最低位得到擴縮結果,因為最低位的數值表達絕對值是最小的。
對於擴位,擴位幾位,二進位制數就左移幾位,數位擴充套件以後,實際精度為原有數位的精度,精度沒有任何提升。
對於縮位,縮位幾位,二進位制數就右移幾位,數位縮減以後,實際精度為現有數位的精度,精度反而下降。
例項:下圖是用最高位對齊、左右移位的方法進行擴位和縮位的演算
從上圖中的例項,可看出,10位擴位成12位後,最小計數值變成了二進位制的‘100’,是偽12位解析度,實際解析度不變,最低2位是無法透過計算,補上實際數值的。
從上圖中的例項,可看出,10位縮位成8位後,最小計數值依然是二進位制的‘1’,但是最大技術值縮小了4倍,實際解析度降低,原來的最低2丟棄了。
正所謂“巧婦難為無米之炊”對於ADC而言,硬體決定了最高精度,軟體是無法透過計算彌補缺失的精度的。因為,任何數學計算,只能從高精度降到低精度,而無法從低精度升高到高精度。
數位丟失了,是無法憑空臆造出來。因此在系統設計時,對精度的預估,只能高不能低,因為高了,可以降低,低了無法提高。
如何真正解決微控制器ADC不足的問題很多時候,處於成本、設計、專利、原始碼等原因。
所使用的微控制器,可能只有10位精度的ADC,但是系統要求12位精度的ADC結果來參與計算,實現軟體介面的通用性。
如果實際產品可以接收10位精度的ADC,僅僅只是軟體介面需要12位精度數值,就可以透過高位對齊左移擴位的方式來實現。
如果實際產品必須要求12位精度的ADC,那麼就只有透過片外增加獨立的高精度ADC,比如下圖的這個ADC晶片。
片外增加的獨立ADC精度可能高於12位。
那麼就可以透過高位對齊右移縮位的方式來實現。
這樣降低精度的計算,仍然可以保持精度為12位,完全不會喪失系統對ADC的精度要求,甚至還有在未來提高精度的可能性。