文/謝瑞豐 程磊楊 李斌
電位器在電子電路中應用廣泛,使用它可以方便地校正系統、調節放大器內的偏移電壓或增益、調諧濾波器以及控制屏幕亮度等。數字電位器與傳統機械電位器相比,擁有更高的可靠性和精度,電壓毛刺更小。機械電位器更容易受到物理環境變化的影響,比如振動、沖擊和游標污染等。而擁有整體結構的數字電位器,在所有上述情況下,都不會受到影響。
不同于傳統機械電位器,數字電位器的滑動端游標是按抽頭移動的,無法實現電阻的連續調整,但是每個抽頭對應的阻值是恒定的,這使數字電位器有著很好的精確分壓能力。抽頭數量決定了數字電位器的調節精度,目前市面上數字電位器的調節精度最高達到1024抽頭。
實現萬倍級調節精度的數字電位器首先需要突破1024抽頭分辨率,工程應用時主要通過堆疊或級聯數字電位器等方案增加總抽頭數以提高調節精度。傳統的堆疊電路通常需要10個及以上的1024抽頭數字電位器才能達到萬倍級的調節精度,而采用級聯電路僅需3個1024抽頭數字電位器就可以將調節精度提升至萬倍以上。級聯連接的數字電位器也存在一定的缺陷,其游標抽頭對應的電阻是非線性的,會影響調節精度。
本文在級聯電路的基礎上提出了一種誤差消除電路結構與程序算法,減小了抽頭電阻誤差對精度的影響,實現了一種萬倍級電壓調節的高精度數字電位器。
如圖1所示,3個電位器組成的級聯電路,設單個電位器抽頭數為N,級聯電位器的抽頭數可以提升至 N2。Rp的大小由數字電位器U3游標每移動一格時測得AW/BW端阻值改變量決定。3個1024抽頭的數字電位器按圖1搭建級聯電路,抽頭數增加至1048576,理論調節級數達到了百萬級。這里的1048576是虛擬的,需要對3個數字電位器進行相干調整,才能實現級聯數字電位器的游標抽頭調節。
首先,引用公式1,它表示了級聯電路的輸入電壓VA與輸出電壓V0的關系。

D與D3代表數字電位器游標位置所對應的抽頭數,游標的抽頭數從A端開始計數,游標在A端時對應抽頭數為0,且有0≤D≤N-1,0≤D3≤N-1。D是第一級滑動抽頭移動數值,填入數字電位器 U1和U2中。D3是第二級滑動抽頭移動數值,填入數字電位器U3中。
其次,若按照公式1編寫STM32內部程序會進行浮點運算產生誤差,且1024的總抽頭數對于1、2個抽頭來說是很大的,視N為∞對公式1取極限,避免了浮點運算,將公式(1)化簡為公式(2):

再次,設級聯數字電位器游標抽頭參數為n,通過公式(3)設置參數n可全局調整D與D3的值。即n除以1024的商作為粗調步數D,余數作為精調步數D3。

最后,游標抽頭參數n決定了級聯數字電位器實際接入電路中的游標抽頭數,級聯數字電位器的輸入電壓VA與輸出電壓V0在理想情況下滿足等式通過軟件程序對n值進行設定,用算法將其換算為D與D3,并填入級聯數字電位器中,完成3個數字電位器游標抽頭的相干調節。輸出電壓的實測值與理論值的偏差可以直觀的體現級聯數字電位器的調節級數與精度。

圖1:由3個數字電位器組成的級聯電路

圖2:差分比例運算電路
本文采用3個1024抽頭AD5292數字電位器組成級聯數字電位器。AD5292數字可編程電位器帶有16位SPI總線,可由單片機通過SPI協議對其進行編程,標稱電阻50kΩ,電阻容差±1%,最大可處理33V端電壓。
AD5292級聯數字電位器的游標每滑動1個抽頭時阻值的平均改變量為47.372Ω,因此級聯電路中的Rp選用47 Ω 1%容差的金屬膜電阻。
數字電位器存在非線性抽頭電阻的問題,對輸入電壓的衰減能力與調節級數不匹配。AD5292級聯數字電位器的抽頭調節級數達到了百萬級,輸入電壓VA=26.000V時,滑動抽頭每移動一格,輸出電壓的平均改變量=25.4μV,接近Multisim 14.0軟件模擬結果的24.8μV,調節級數為1023622。
將AD5292級聯數字電位器游標設置為1抽頭時,對輸入電壓的理論衰減能力應該是1048576倍,即輸入端VA=10V時,理論輸出值V0理論=9.54μV。但是輸出端實際測得電壓V0=20.158mV,輸入電壓VA只衰減了496倍。需要增設誤差消除電路配合程序算法以優化級聯數字電位器的調節精度。
在圖1的級聯電路輸出端增設LM358減法電路,以提升級聯數字電位器對電壓的衰減能力,減小輸出電壓的誤差。如圖2所示的差分比例運算電路,存在以下關系:
級聯電路的輸出端口接在u12處,通過差分比例運算電路將u12與u11端口電壓作減法運算后輸出U0。使用LM358運放搭建此減法電路,單運放減法電路對于信號源的輸入電阻較小,信號源電壓衰減較大,需在集成運放的同相輸入端和反相輸入端加入LM358運放作為電壓跟隨器,提高輸入阻抗,引入電壓串聯負反饋。u11電壓是可調節的,由電位器Rb(W103 BOCHEN 3296旋轉式微調電位器)提供u11,調整Rb阻值以改變需減去的u11的大小。增設了減法電路的級聯電路如圖3所示。
在由公式3編寫的游標抽頭設置程序中,加入變量衰減倍數P,通過等式將衰減倍數P轉換為游標抽頭參數n,進而可對數字電位器的D與D3進行調控。編寫算法使得衰減倍數P與實際測得輸入輸出電壓之比相匹配,以實現萬倍級調節的性能。STM32單片機MCU運行抽頭設置程序,將衰減倍數P轉換為D與D3并由開發板通過SPI總線將D與D3發送至對應數字電位器的RDAC寄存器中,改變接入電路中的抽頭數,從而改變輸出電壓的大小。通過電腦串口改變單片機MCU中的P參數,在增設了LM358減法電路的級聯電路的輸出端檢測輸出電壓U0,U0與理論值之間的差距得到了很大改善,但是當衰減倍數P>1500時,輸出電壓U0與理論輸出值之間存在幾個毫伏電壓差,在大倍數衰減時,理論輸出電壓本就是毫伏級,幾毫伏的電壓誤差是不能容忍的。填入衰減倍數P后,需對P值進行算法擬合優化,以減小輸出電壓U0的誤差。使用Matlab對優化前后的P值點進行三次方曲線擬合計算,得出擬合函數表達式。

公式(4)是根據優化前后P值點擬合的函數表達式,其中Y代表優化后的P值,X代表優化前的P值,各系數是由Matlab根據測試數據計算得出(α1=1155.7、α2=2968.5、α3=6990.8、α4=7239.2、β=4875、γ=3083.1)。

圖3:完善的級聯數字電位器系統
優化程序算法后,填寫1500至10000倍的衰減倍數P時,實測輸出電壓與理論輸出電壓的誤差減小至0.23%。
為檢驗級聯數字電位器的調節級數與精度是否達到設計要求,測量輸出電壓值并與理論輸出值進行比對。輸入電壓VA=10.000V時,上位機填入的衰減倍數由大到小,在10000至1內均勻取取點并記錄輸出電壓,圖4是使用Matlab繪制的實測輸出電壓曲線,并與理論輸出電壓曲線進行比對。當設置級聯電位器的衰減倍數為10000倍時,從LM358減法電路輸出端測到的輸出電壓為1.001mV,誤差為0.1%。當設置衰減倍數為1時,輸出電壓為9.9327V,誤差為0.6%。理論輸出電壓的曲線由公式 V衰減倍數 畫出。從繪制的曲線中可以看出,實測值曲線與理論值曲線近乎重疊,擬合的非常好。
衰減倍數P在1至10000內調整時測得輸出電壓V0的平均誤差為0.862%,級聯數字電位器擁有了萬倍級的調節能力,且擁有很高的精度。
級聯數字電位器的抽頭數增加到了百萬級,輸出電壓的誤差也隨之增大。本文在級聯電路的輸出端增設LM358減法電路,編寫算法減小輸出電壓誤差,抵消了數字電位器非線性游標抽頭對調節精度造成的影響,實現了萬倍級電壓調節能力的高精度數字電位器。

圖4:1~10000衰減倍數 實測電壓與理論值電壓圖像