1. 程式人生 > >一種針對滑動變阻器AD值採集線性化處理演算法

一種針對滑動變阻器AD值採集線性化處理演算法

在專案中,用到了採集旋鈕(滑動變阻器)的AD值,然後需要將資料傳送給上位機。方法比較簡單,但是有個要求就是:旋鈕旋轉的角度(輸出阻值,Rx表示)需要和傳送給上位機的的資料(Y表示)成線性關係(正比例關係)。為了達到此要求,動用了一些數學思維,對整個過程進行了分析和研究,達到了很好的線性效果。

未線性化處理的現象分析

滑動變阻器在AD採集的電路中如下圖所示(微控制器內部自帶AD採集,AD_IO輸出給微控制器):

這裡寫圖片描述
根據理論分析推導,該電路的旋鈕輸出阻值和AD值(Ud),即Rx和Ud無法成線性關係,推導如下:

假設變數:Ua表示輸入的模擬量,Ud表示採集的數字量,Rk為與旋鈕串聯的固定阻值,採集精度為10位採集精度(0-1024),5V的參考電壓。

則:Ua/5=Ud/1024 ==》 Ud=(1024*Ua)/5

根據電路圖可知電位Ua:Ua=5*Rx/(Rx+Rk),代入上式得:

Ud=1024*Rx/(Rx+Rk)
= 1024*(Rx+Rk-Rk)/(Rx+Rk)

==》Ud=1024-1024*Rk/(Rx+Rk)。 (—-式1)

上式就是Ud和Rx的函式關係式,一般正常來說,Y=Ud(即採集的AD值傳送給上上位機,Y=5-5*Rk/(Rx+Rk))。明顯Y和Rx不成線性,將函式進行變換,可以看出該函式其實是個反比例函式的平移後的影象。

通過實際測試,儘量保持均勻旋轉旋鈕,然後將採集的AD值傳送給上位機,並通過EXCEL表格繪圖,也可以大致的繪製出該函式影象,如下:

這裡寫圖片描述

因此可以證明Y和Rx不成線性關係。Y的變化隨Rx增加不斷趨於平緩。若要將傳送給上位機的的數字量與實際的Rx成線性關係,需要做如下處理。

線性化處理

要實現傳送給上位機的的數字量與實際的Rx成線性關係,需要對Ud(測得的實際AD值)進行相關的變換得到Y,再將Y傳送給上位機。使得Y=K*Rx(正比例,K為比例係數)。

**因此需要做的是,如何對Ud進行變換,產生合理的Y值,即得求出函式關係式:Y=f(Ud),以滿足**Y=K*Rx。

處理方法:

將因為:Y=K*Rx,則Rx=Y/K,代入上面的式1中,得:

Ud=1024-1024*Rk/(Rx+Rk)=1024- (1024*Rk *K)/(Y+Rk *K)

化簡得:

Y=(1024*Rk *K)/(1024-Ud) - Rk *K (—-式2)

上式就是Y=f(Ud)關係式。

Y:傳送給上位機的資料。

Ud:實際採集的AD值(該公式預設10位解析度,其他解析度可更改1024值)

Rk:串聯的電阻值(常數),一般該常數為旋鈕總值的10分之一以上,因為由式1可知,如果該值太大,Ud的取值範圍會變小。

K:Y與Rx的線性關係斜率,根據輸出要求給定。

實際測試

測試要求和結果

已知:現採用總值50k的滑動旋鈕,Rk選擇2.2K電阻,AD採集為10位解析度,5V供電。

要求從0滑動到旋鈕最大值,使得資料傳送給上位機值為0–250範圍:
即Rx:0–50k
Y:0–250。
可得線性關係斜率(係數):K=250/50=5

代入各個引數到公式2。儘量保持均勻旋轉旋鈕,並通過微控制器採集AD值Ud,將Y值傳送給上位機。最後用EXCEL將資料繪出,如下效果圖(不平滑地方可旋轉不均勻有關係):
可以看出線性效果很好!並且也能滿足0–250的範圍輸出。

這裡寫圖片描述

誤差分析(校正)

由於理論公式存在一定的誤差,對於公式:Ua/5=Ud/1024,比如參考電壓不一定精確為5V的現象,因此可能會對實際結果有一點影響。

方法:可以微調公式3裡的1024的值,然後滑動旋鈕到最大值和最小值,使得上位機資料Y也滿足線性關係的最大值和最小值輸出。

總結

可以看出Y與Rx能成很好的線性關係,達到所要求的目的,說明該演算法具有較強的可行性和實用性!該演算法不僅用於在旋鈕的AD採集線性化處理,在其他方面的線性化處理也能提供參考。