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