一種針對滑動變阻器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採集線性化處理,在其他方面的線性化處理也能提供參考。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章