巧妙的利用軟件編程,將X9241內(nèi)部的四個64抽頭數(shù)字電位器組成一個高分辨率低成本的數(shù)字電位器 數(shù)字電位器(DCP)是專為替代傳統(tǒng)機(jī)械電位器、可變電阻器而設(shè)計的新型集成電路。其通過I2C、SPI以及CS,U/D,INC三線方式與MCU接口,可實(shí)現(xiàn)應(yīng)用程控調(diào)節(jié),也有按鈕控制方式,從而實(shí)現(xiàn)與傳統(tǒng)機(jī)械電位器或可變電阻器相同的電位、電阻調(diào)節(jié)功能的特殊集成電路。與傳統(tǒng)機(jī)械電位器相比,數(shù)字電位器具有數(shù)字調(diào)節(jié)、長壽命、易于裝配、節(jié)省空間、不受振動影響等突出優(yōu)點(diǎn),已被廣泛應(yīng)用于醫(yī)用設(shè)備、儀器儀表、工業(yè)控制、計算機(jī)、家用電器、手機(jī)、數(shù)碼產(chǎn)品等各個領(lǐng)域。 在有些應(yīng)用中,如激光二極管的動態(tài)偏置調(diào)節(jié),使用數(shù)字電位器或者微調(diào)DAC來控制電壓,就受到了分辨率、接口、成本的限制。為了解決這類問題,我們將在這里介紹使用低分辨率(64抽頭)、低成本的Intersil(Xicor)公司I2C總線控制數(shù)字電位器X9241組成一個高分辨率(8001抽頭)的數(shù)字電位器的解決方法。 實(shí)現(xiàn)高分辨率的原理 我們假設(shè)有三個數(shù)字電位器,POT1和POT2為64抽頭DCP,POT3為128抽頭DCP,其中POT1和POT2用作POT3的VH和VL的設(shè)置,并且必須保證POT1和POT2始終為“1”個位置間隔,那么就有63種不同的電壓間隔施加到POT3上。理論上,當(dāng)POT3在特殊電壓抽頭127和下一個電壓間隔的抽頭0之間跳動時,應(yīng)該還有一個多余的抽頭位置,但是這些抽頭不是多余的,它們的作用可以改善輸出的線性度,因?yàn)樵谙噜彽膬蓚電壓間隔中的抽頭0和抽頭127的電壓是一樣的。對于63個不同間隔的每一個,又借助127個不同的輸出,就會有8001(63×127=8001)個不同的Vw輸出可以在VH和VL之間獲得。圖1就是說明的這個概念。 如何使用X9241實(shí)現(xiàn)高分辨率(8001抽頭) Intersil(Xicor)公司的X9241把四個非易失性數(shù)字電位器集成在一個單片CMOS微電路中,它的功能框圖如圖2。X9241包含四個電阻陣列,每個陣列包含63個電阻單元。在每個單元之間和兩個端點(diǎn)都有可以被滑動單元訪問的抽頭點(diǎn)。滑動單元在陣列中的位子由用戶通過I2C總線控制。每個電阻陣列與一個滑動端計數(shù)寄存器(WCR)和四個8位數(shù)據(jù)寄存器聯(lián)系在一起,四個數(shù)據(jù)寄存器和滑動端計數(shù)寄存可以由用戶直接寫入和讀出。滑動端計數(shù)寄存器的內(nèi)容控制滑動端在電阻陣列中的位置。數(shù)據(jù)寄存器的內(nèi)容可以傳輸?shù)交瑒佣擞嫈?shù)寄存器以設(shè)置滑動端位置,當(dāng)前滑動端的位置也可以傳輸?shù)饺魏闻c之聯(lián)系的數(shù)據(jù)寄存器中。滑動端計數(shù)寄存器是易失性的,器件上電時,滑動端計數(shù)寄存器自動的裝入數(shù)據(jù)寄存器0(R0)中的值。四個數(shù)據(jù)寄存器是非易失性的,如果在應(yīng)用中不需要對電位器有多種設(shè)置保存時,可以用作通用存儲單元,用來保存系統(tǒng)參數(shù)或用戶數(shù)據(jù)。 X9241內(nèi)部有一個特殊的機(jī)制,可以把相鄰的數(shù)字電位器逐個串聯(lián)。允許多達(dá)253個不同抽頭位置(當(dāng)把全部DCP逐個串聯(lián)的時候)。如圖3所示,我們將POT1和POT2(X9241內(nèi)部相鄰的兩個DCP)串連起來,用POT0為其提供VH(可以調(diào)節(jié)的),用POT3提供VL(可以調(diào)節(jié)的)。那么我們就得到了如前面所述原理一樣的電路圖。 POT0和POT3為POT1-2(POT1和POT2串連以后的叫法)設(shè)置端電壓。也必須保證POT1和POT3始終為“1”個位置間隔,那么就有63種不同的電壓間隔施加到POT1-2上。隨著POT1-2的滑動端位置向上或者向下移動到端點(diǎn)時,POT0和POT3的位置也要在必要時進(jìn)行調(diào)整。如果POT1-2的滑動端增加到超過127時,那么POT0和POT3將增加“1”,而POT1-2的滑動端將返回到抽頭0。同樣,POT1-2的滑動端減低到抽頭0以下時,POT0和POT3的滑動端將減小“1”,并將POT1-2的抽頭設(shè)置到127。這一點(diǎn),請讀者在理解后面所附的程序清單時注意。 X9241極適用于這個任務(wù),因?yàn)槠鋬?nèi)部正好有四個獨(dú)立的DCP,并且有相鄰DCP串聯(lián)的機(jī)制,而且其采用I2C總線控制接口,抽頭位置可以在軟件中直接改變而不需要通過每個中間位置轉(zhuǎn)換。 圖4是使用X9241U(49.37K、49.38K、49.32K、49.24K)器件對電路進(jìn)行測試得到的相鄰抽頭之間的典型結(jié)果。大圖表示每個抽頭的滑動端電壓占所加總電壓的百分比,其中插圖為相鄰抽頭之間的分辨率占所加總電壓的百分比。 使用X9241實(shí)現(xiàn)高分辨率的軟件代碼 為了方便理解實(shí)現(xiàn)控制的細(xì)節(jié),我們提供了C語言源代碼(代碼由Xicor公司提供,我們做了一定的修改)。用戶只需要自己再編寫適用于不同單片機(jī)的I2C硬件接口函數(shù)(函數(shù)名稱同程序中介紹一致),在應(yīng)用程序中加入我們提供的源代碼,簡單的調(diào)用程序中介紹的5個函數(shù),就可以方便地實(shí)現(xiàn)DCP的高分辨率控制。 |