高分辨率指數式數字電位器的設計
利用單片機對普通低分辨率線性數字電位器進行指數化及高分辨率的改造,使通用型數字電位器達到音頻領域的應用要求,并具有較好的通用性與較高的性價比。
人耳對聲強的主觀感受遵循韋伯定律(Webber's Law),在音量較小時人耳對聲波振幅的改變感受靈敏,聲音達到一定響度后,人耳的聽覺特性開始變得遲鈍。而指數型電位器的阻值變化規律為先慢后快,如果將這種衰減特性用在音量調節中,則恰好可以抵消人耳對音量感知的對數特性,保證主觀聽感的平滑。
與傳統的機械式音量電位器相比,數字電位器(DCP)的阻值調節由內部CMOS開關控制,因而使用壽命長、可靠性高且不會產生機械噪聲;如果將廉價的通用型線性數字電位器直接用于音量調節,在小音量狀態下稍微調節電位器即會使輸出聲壓陡然增加,無法保證大動態范圍內音量的準確定位,因此目前將數字式電位器運用在成熟功放產品中的實例還不多。實際上,如果將低分辨率線性數字電位器與通用嵌入式系統結合起來,就能夠得到運用于音量控制領域的低成本高分辨率指數式電位器。
總體設計方案
在數字電位器的擴展系統中,主控單元可選用常見的8位或16位成熟單片機。這里我們主要針對Intersil公司的低分辨率線性數字電位器X9313、X9312進行擴展,系統最終能夠達到的實際分辨率為3199=3069級;如果把32抽頭的X9313全部更換為X9312,分辨率還可以進一步提高至9801級。
X9313與X9312這兩種DCP均為三線制接口、帶掉電自動保存功能的非易失性數字電位器,其內部分別包含31、99個電阻單元構成的電阻陣列,相鄰兩個電阻單元以及電阻陣列端點都設置有可以被滑動單元訪問的抽頭,如圖1所示。滑動單元的位置由CS、U/D和INC三個輸入端控制,抽頭位置值能夠被存儲在非易失性存儲器中,供下次上電時調用置位。
圖1 X931x系列DCP的內部結構
系統的每個聲道的音量控制由兩個X9313與一個X9312構成,圖2為三個數字電位器的功能連接圖。所有DCP的U/D、INC端分別連接在一起,而片選端CS各自占用一個MCU端口。這種硬件連接方式能夠很容易地實現四聲道乃至更多聲道的音量控制。為了與常見的數字式音量調整習慣一致,最好不要保留通用DCP的三鍵式控制方式,而只需設置UP/DOWN兩組按鍵直接控制音量的增減。UP/DOWN按鍵與MCU的連接應設置軟件延時的去抖算法,以消除按鍵輸入時的抖動,MCU與DCP之間則不再考慮按鍵抖動。
圖2 系統連接示意圖
分辨率擴展
Ra和Rb同時并聯在輸入信號Vin的兩端,其抽頭數均為32。Ra和Rb的輸出作Rc端口電壓VH和VL設置,Ra始終比Rb高一個位置間隔,這樣就可以將1/32Vi~31/32Vi共31種輸入信號的電壓變化加到Rc兩端。由于Rc選用了100抽頭的DCP,從而可以在Rc輸出端得到31(100-1)=3069級的Vin線性電壓值。
隨著Rc滑動端上下移動,Ra和Rb的位置也在MCU的控制下進行相應調整。在上移過程中,設Rc滑動端上移值與目前所在位置值相加后的值為M。若M小于100,說明這時只是Rc的滑動端發生移動,而Ra和Rb的滑動觸點位置不變;若M值超過100,則Ra和Rb的觸點均上移1個滑動位,Rc的滑動端返回M減去100之后所得實際值決定的觸點位。類似地,在抽頭下移過程中,若Rc的滑動端需要下移到抽頭0以下時,則Ra和Rb的滑動端也需要同步下移1位,以保持電位器實際調整步數的平衡。
電位器Rc的抽頭輸出端設置了一級電壓跟隨器,可以減小因負載并聯對級聯后分壓系數的影響。電位器觸點的滑動過程屬于不連貫的步進調節方式,故Rc的電阻值不是連續變化而是在滑動端調整到位后才具有所希望的輸出,這樣會使得輸出電壓出現一些小幅跳變。但由于輸入信號Vin的絕對增量并不大,且整個電位器擴展系統的分辨率很高,對此我們可在Rc電位器的滑動輸出端對地并聯一只1000~2200pF的小電容C1,以減小輸出電壓的波動。
上述電位器分辨率擴展的思路具有較高的可行性與移植性,此前曾應用在我們的一項程控增益可編程高速放大器的系統設計方案中,取得很好的使用效果。
電阻值指數化
DCP的指數化處理采用軟件方式實現,不需要額外增加硬件。由于通用單片機的函數運算功能非常有限,因此在算法上,將電位器每級切換所要求的觸點移動步數以數組形式保存在單片機的ROM中。阻值調整時,MCU根據按鍵的UP/DOWN狀態和當前的階數值以查表方式取得各只DCP的實際偏移量,然后再由MCU控制DCP執行相應的步進切換動作。考慮到3069級的實際分辨率,系統從零到滿幅輸出共設置了24級的步進階數,優于市場上主流機械式步進電位器18~21的步進階數,具體的階數與電位器抽頭偏移量關系可參見表1。從表中不難看出,系統將DCP擴展到3069的高分辨率正是為了適應電位器阻值在指數化調整過程中步進值的精確辨析。
表1 階數與電位器抽頭偏移量關系
X9312與X9313是不能直接從片內存儲單元讀出滑動端當前所在位置的,因此,為了記憶各只數字電位器滑動觸點的實際位置,必須在程序中設置變量對不同電位器的觸點位置進行記憶。
結束語
高分辨率指數式數字電位器的解決方案以較低成本實現了通用型線性數字電位器在音響系統中的應用,具有較好的工程應用前景和推廣價值。此外,由于DCP的指數式高分辨率擴展僅僅占用了很少的系統資源,因而可將MCU的剩余端口資源應用在音量狀態的指示以及紅外信號解碼等功能性環節中,以完善系統功能。
評論