文/謝瑞豐 程磊楊 李斌
電位器在電子電路中應(yīng)用廣泛,使用它可以方便地校正系統(tǒng)、調(diào)節(jié)放大器內(nèi)的偏移電壓或增益、調(diào)諧濾波器以及控制屏幕亮度等。數(shù)字電位器與傳統(tǒng)機械電位器相比,擁有更高的可靠性和精度,電壓毛刺更小。機械電位器更容易受到物理環(huán)境變化的影響,比如振動、沖擊和游標污染等。而擁有整體結(jié)構(gòu)的數(shù)字電位器,在所有上述情況下,都不會受到影響。
不同于傳統(tǒng)機械電位器,數(shù)字電位器的滑動端游標是按抽頭移動的,無法實現(xiàn)電阻的連續(xù)調(diào)整,但是每個抽頭對應(yīng)的阻值是恒定的,這使數(shù)字電位器有著很好的精確分壓能力。抽頭數(shù)量決定了數(shù)字電位器的調(diào)節(jié)精度,目前市面上數(shù)字電位器的調(diào)節(jié)精度最高達到1024抽頭。
實現(xiàn)萬倍級調(diào)節(jié)精度的數(shù)字電位器首先需要突破1024抽頭分辨率,工程應(yīng)用時主要通過堆疊或級聯(lián)數(shù)字電位器等方案增加總抽頭數(shù)以提高調(diào)節(jié)精度。傳統(tǒng)的堆疊電路通常需要10個及以上的1024抽頭數(shù)字電位器才能達到萬倍級的調(diào)節(jié)精度,而采用級聯(lián)電路僅需3個1024抽頭數(shù)字電位器就可以將調(diào)節(jié)精度提升至萬倍以上。級聯(lián)連接的數(shù)字電位器也存在一定的缺陷,其游標抽頭對應(yīng)的電阻是非線性的,會影響調(diào)節(jié)精度。
本文在級聯(lián)電路的基礎(chǔ)上提出了一種誤差消除電路結(jié)構(gòu)與程序算法,減小了抽頭電阻誤差對精度的影響,實現(xiàn)了一種萬倍級電壓調(diào)節(jié)的高精度數(shù)字電位器。
如圖1所示,3個電位器組成的級聯(lián)電路,設(shè)單個電位器抽頭數(shù)為N,級聯(lián)電位器的抽頭數(shù)可以提升至 N2。Rp的大小由數(shù)字電位器U3游標每移動一格時測得AW/BW端阻值改變量決定。3個1024抽頭的數(shù)字電位器按圖1搭建級聯(lián)電路,抽頭數(shù)增加至1048576,理論調(diào)節(jié)級數(shù)達到了百萬級。這里的1048576是虛擬的,需要對3個數(shù)字電位器進行相干調(diào)整,才能實現(xiàn)級聯(lián)數(shù)字電位器的游標抽頭調(diào)節(jié)。
首先,引用公式1,它表示了級聯(lián)電路的輸入電壓VA與輸出電壓V0的關(guān)系。
D與D3代表數(shù)字電位器游標位置所對應(yīng)的抽頭數(shù),游標的抽頭數(shù)從A端開始計數(shù),游標在A端時對應(yīng)抽頭數(shù)為0,且有0≤D≤N-1,0≤D3≤N-1。D是第一級滑動抽頭移動數(shù)值,填入數(shù)字電位器 U1和U2中。D3是第二級滑動抽頭移動數(shù)值,填入數(shù)字電位器U3中。
其次,若按照公式1編寫STM32內(nèi)部程序會進行浮點運算產(chǎn)生誤差,且1024的總抽頭數(shù)對于1、2個抽頭來說是很大的,視N為∞對公式1取極限,避免了浮點運算,將公式(1)化簡為公式(2):
再次,設(shè)級聯(lián)數(shù)字電位器游標抽頭參數(shù)為n,通過公式(3)設(shè)置參數(shù)n可全局調(diào)整D與D3的值。即n除以1024的商作為粗調(diào)步數(shù)D,余數(shù)作為精調(diào)步數(shù)D3。
最后,游標抽頭參數(shù)n決定了級聯(lián)數(shù)字電位器實際接入電路中的游標抽頭數(shù),級聯(lián)數(shù)字電位器的輸入電壓VA與輸出電壓V0在理想情況下滿足等式通過軟件程序?qū)值進行設(shè)定,用算法將其換算為D與D3,并填入級聯(lián)數(shù)字電位器中,完成3個數(shù)字電位器游標抽頭的相干調(diào)節(jié)。輸出電壓的實測值與理論值的偏差可以直觀的體現(xiàn)級聯(lián)數(shù)字電位器的調(diào)節(jié)級數(shù)與精度。
圖1:由3個數(shù)字電位器組成的級聯(lián)電路
圖2:差分比例運算電路
本文采用3個1024抽頭AD5292數(shù)字電位器組成級聯(lián)數(shù)字電位器。AD5292數(shù)字可編程電位器帶有16位SPI總線,可由單片機通過SPI協(xié)議對其進行編程,標稱電阻50kΩ,電阻容差±1%,最大可處理33V端電壓。
AD5292級聯(lián)數(shù)字電位器的游標每滑動1個抽頭時阻值的平均改變量為47.372Ω,因此級聯(lián)電路中的Rp選用47 Ω 1%容差的金屬膜電阻。
數(shù)字電位器存在非線性抽頭電阻的問題,對輸入電壓的衰減能力與調(diào)節(jié)級數(shù)不匹配。AD5292級聯(lián)數(shù)字電位器的抽頭調(diào)節(jié)級數(shù)達到了百萬級,輸入電壓VA=26.000V時,滑動抽頭每移動一格,輸出電壓的平均改變量=25.4μV,接近Multisim 14.0軟件模擬結(jié)果的24.8μV,調(diào)節(jié)級數(shù)為1023622。
將AD5292級聯(lián)數(shù)字電位器游標設(shè)置為1抽頭時,對輸入電壓的理論衰減能力應(yīng)該是1048576倍,即輸入端VA=10V時,理論輸出值V0理論=9.54μV。但是輸出端實際測得電壓V0=20.158mV,輸入電壓VA只衰減了496倍。需要增設(shè)誤差消除電路配合程序算法以優(yōu)化級聯(lián)數(shù)字電位器的調(diào)節(jié)精度。
在圖1的級聯(lián)電路輸出端增設(shè)LM358減法電路,以提升級聯(lián)數(shù)字電位器對電壓的衰減能力,減小輸出電壓的誤差。如圖2所示的差分比例運算電路,存在以下關(guān)系:
級聯(lián)電路的輸出端口接在u12處,通過差分比例運算電路將u12與u11端口電壓作減法運算后輸出U0。使用LM358運放搭建此減法電路,單運放減法電路對于信號源的輸入電阻較小,信號源電壓衰減較大,需在集成運放的同相輸入端和反相輸入端加入LM358運放作為電壓跟隨器,提高輸入阻抗,引入電壓串聯(lián)負反饋。u11電壓是可調(diào)節(jié)的,由電位器Rb(W103 BOCHEN 3296旋轉(zhuǎn)式微調(diào)電位器)提供u11,調(diào)整Rb阻值以改變需減去的u11的大小。增設(shè)了減法電路的級聯(lián)電路如圖3所示。
在由公式3編寫的游標抽頭設(shè)置程序中,加入變量衰減倍數(shù)P,通過等式將衰減倍數(shù)P轉(zhuǎn)換為游標抽頭參數(shù)n,進而可對數(shù)字電位器的D與D3進行調(diào)控。編寫算法使得衰減倍數(shù)P與實際測得輸入輸出電壓之比相匹配,以實現(xiàn)萬倍級調(diào)節(jié)的性能。STM32單片機MCU運行抽頭設(shè)置程序,將衰減倍數(shù)P轉(zhuǎn)換為D與D3并由開發(fā)板通過SPI總線將D與D3發(fā)送至對應(yīng)數(shù)字電位器的RDAC寄存器中,改變接入電路中的抽頭數(shù),從而改變輸出電壓的大小。通過電腦串口改變單片機MCU中的P參數(shù),在增設(shè)了LM358減法電路的級聯(lián)電路的輸出端檢測輸出電壓U0,U0與理論值之間的差距得到了很大改善,但是當(dāng)衰減倍數(shù)P>1500時,輸出電壓U0與理論輸出值之間存在幾個毫伏電壓差,在大倍數(shù)衰減時,理論輸出電壓本就是毫伏級,幾毫伏的電壓誤差是不能容忍的。填入衰減倍數(shù)P后,需對P值進行算法擬合優(yōu)化,以減小輸出電壓U0的誤差。使用Matlab對優(yōu)化前后的P值點進行三次方曲線擬合計算,得出擬合函數(shù)表達式。
公式(4)是根據(jù)優(yōu)化前后P值點擬合的函數(shù)表達式,其中Y代表優(yōu)化后的P值,X代表優(yōu)化前的P值,各系數(shù)是由Matlab根據(jù)測試數(shù)據(jù)計算得出(α1=1155.7、α2=2968.5、α3=6990.8、α4=7239.2、β=4875、γ=3083.1)。
圖3:完善的級聯(lián)數(shù)字電位器系統(tǒng)
優(yōu)化程序算法后,填寫1500至10000倍的衰減倍數(shù)P時,實測輸出電壓與理論輸出電壓的誤差減小至0.23%。
為檢驗級聯(lián)數(shù)字電位器的調(diào)節(jié)級數(shù)與精度是否達到設(shè)計要求,測量輸出電壓值并與理論輸出值進行比對。輸入電壓VA=10.000V時,上位機填入的衰減倍數(shù)由大到小,在10000至1內(nèi)均勻取取點并記錄輸出電壓,圖4是使用Matlab繪制的實測輸出電壓曲線,并與理論輸出電壓曲線進行比對。當(dāng)設(shè)置級聯(lián)電位器的衰減倍數(shù)為10000倍時,從LM358減法電路輸出端測到的輸出電壓為1.001mV,誤差為0.1%。當(dāng)設(shè)置衰減倍數(shù)為1時,輸出電壓為9.9327V,誤差為0.6%。理論輸出電壓的曲線由公式 V衰減倍數(shù) 畫出。從繪制的曲線中可以看出,實測值曲線與理論值曲線近乎重疊,擬合的非常好。
衰減倍數(shù)P在1至10000內(nèi)調(diào)整時測得輸出電壓V0的平均誤差為0.862%,級聯(lián)數(shù)字電位器擁有了萬倍級的調(diào)節(jié)能力,且擁有很高的精度。
級聯(lián)數(shù)字電位器的抽頭數(shù)增加到了百萬級,輸出電壓的誤差也隨之增大。本文在級聯(lián)電路的輸出端增設(shè)LM358減法電路,編寫算法減小輸出電壓誤差,抵消了數(shù)字電位器非線性游標抽頭對調(diào)節(jié)精度造成的影響,實現(xiàn)了萬倍級電壓調(diào)節(jié)能力的高精度數(shù)字電位器。
圖4:1~10000衰減倍數(shù) 實測電壓與理論值電壓圖像