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