摘 要:在設計的止鼾器恒流源電路中采用MCP41010數字電位器來改變恒流源對人體的刺激電流,從而可以根據人體對止鼾器刺激電流的適應程度適時改變電流的大小。在此介紹Microchip公司生產的MCP41010數字電位器的工作原理和主要特點,描述MCP41010的指令字格式。采用MCP41010作為恒流源電路的射極電阻,AVR單片機AT90S8535的I/O口與MCP41010相連接,單片機程序模擬MCP41010的SPI總線時序,從而達到改變阻值的目的。實驗結果表明,使用MCP41010達到了很好的效果。
關鍵詞:數字電位器;MCP41010;止鼾器;SPI總線;AT90S8535
中圖分類號:TP274文獻標識碼:B
文章編號:1004-373X(2010)04-187-03
Application of Digital Potentiometer MCP41010 in Snore-ceasing Equipments
JIN Gui,MA Xianguang,DENG Ling
(College of Biomedical Engineering Medical Imaging,Third Military Medical University,Chongqing,400030,China)
Abstract:Applying MCP41010 digital potentiometer of designed snore-ceasing equipments′s constant current power supply circuit to change the stimulate current of constant current source on human body,so as to change the current according to adaptation of stimulate current.The principle and features of MCP41010 digital potentiometers produced by Microchip Company,and the instruction format are also introduced.Connecting MCP41010 with I/O interface of AT90S8535 and simulating SPI of MCP4010 to change the resistance.Results prove that it gains good effects.
Keywords:digital potentiometer;MCP41010;snore-ceasing equipment;SPI bus;AT90S8535
0 引 言
MCP41010是Microchip公司生產的一種集成數字電位器。它在單一芯片上集成一個10 kΩ數字電位器,電位器的滑動端共有256個離散的調節節點,并有一個8 b的E2PROM數據寄存器,直接控制滑刷在電位器上滑動端的位置。用戶可以通過相應指令往數據寄存器寫8位字,調節精度可達256。MCP41010芯片具有工業標準的SPI同步串口,可以實現寄存器操作,從而改變滑刷的位置。
1 MCP41010概述[1]
MCP41010采用8引腳雙列直插封裝,其引腳排列如圖1所示。其中PW0為電位器滑動端;PA0,PB0為電位器的兩個終端;SCK,SI為SPI總線的串行時鐘和串行數據線。MCP41010工作電壓為2.7~5.5 V。上電復位時,數據寄存器自動設定為80H,滑動端PW0指向PA0與PB0的中間。
圖1 MCP41010芯片引腳圖
1.1 MCP41010的內部結構
MCP41010的內部結構如圖2所示,從圖2中可以看出,此芯片內含有:SPI總線接口、一個POT(電位器)。POT內有一個8 b滑刷控制數據寄存器。
圖2 MCP41010內部結構
1.2 MCP41010的控制方式
MCP41010具有SPI總線接口,采用簡單的2 B指令結構。它的控制方式非常簡單,可以采用SPI總線通信,也可以采用軟件模擬SPI總線時序。
2 MCP41010的指令格式
MCP41010的指令非常簡單,由兩段組成(如圖3所示),每段均有一個字節:第一段為命令字節,第二段為數據。命令字節中第2,3位和6,7位為無效位,不用對其操作;C1,C0為指令選擇位;P1,P0為電位器選擇位,由于MCP41010只集成了一個電位器,所以P1,P0必須設為01。在MCP41010中,C1,C0為01時為寫數據指令;C1,C0為00或01時為空操作;C1,C0為10對應關閉模式用于MCP42XXX系列數字電位器。在MCP41010中寫命令字節通常為0x11,數據字段為8 b/s數據,可以置滑動端到256個端點中任何一個,因此精度非常高[1]。
圖3 MCP41010雙字節指令格式
MCP41010的指令序列傳輸示意圖如圖3所示。先寫命令字節再寫數據字節。CS為數字電位器片選端,只有CS為低電平時,命令字和數據字才能進入16位移位寄存器。當CS出現上升沿時,移位寄存器的值進入數據寄存器,從而改變了電位器阻值。SCK為時鐘線,數據在SCK的上升沿進入SI數據線。器件會在CS上升沿時自動監測CS低電平時SCK的脈沖數,也就是上升沿的個數,只有時鐘數為16的倍數時,命令才能執行,否則命令失效。一個完整的MCP41010寫時序包括以下幾個部分[2]:
(1) 起始位。以CS為低電平,SCK出現上升沿為起始標志。
(2) 傳送MCP41010的命令字段。
(3) 傳送8 b的數據字段。
(4) 停止位。以SCK為低電平,CS出現上升沿為SPI總線傳輸結束標志[3]。
3 在止鼾器電路中的應用
在設計的止鼾器電路中,最后一級是恒流源電路,此電路主要是在刺激脈沖的作用下為人體電阻提供電流刺激,電流經刺激電極(貼在患者頦舌肌和支配頦舌肌的前表面)通過患者身體,以達到松弛頦舌肌,讓患者氣道通暢的目的。但是不同人對刺激電流的敏感程度不同,因此需要儀器在工作過程中不斷調節恒流源電流的大小[2]。于是在電路中使用了數字電位器MCP41010。
圖4即為在止鼾器的恒流源電路中MCP41010與單片機AT90S8535的連接圖。圖4中運放U2A、三極管Q7以及MCP41010構成了恒流源電路。A,B兩點是刺激電極接到人體中。此電路可以為不同人體提供恒流。MCP41010代替了機械電阻,它的PW0端與PA0端短接接地,PB0端接到橫流電路中,通過它可以改變恒流的大小,增加或減小刺激人體的電流[4,5]。
圖4 MCP41010與單片機的連接示意圖
在電路中使用了AVR單片機AT90S8535的幾個I/O引腳與MCP41010連接,模擬SPI總線時序,控制電位器的組織。單片機的PD5,PD4,PC7引腳分別與電位器的CS,SCK,SI腳相連。圖5為單片機寫MCP41010的子程序流程圖[6]。
圖5 寫MCP41010子程序
單片機控制MCP41010的C語言程序如下 [7]:
void writeDP(uchar data2)
{
uchar data1=0x11;
uchar j;
DDRC=DDRC|0x80;
PORTC=PORTC|0x80;
DDRD=DDRD|0x30;
PORTD=PORTD|0x20;
PORTD=PORTD0xEF;
PORTD=PORTD0xDF;
for(j=8;j!=0;j--)
{
PORTC= data1 0x80;
PORTD=PORTD|0x10;
PORTD=PORTD0xEF;
data1=data1<<1;
}
for(j=8;j!=0;j--)
{
PORTC=data2 0x80;
PORTD=PORTD|0x10;
PORTD=PORTD0xEF;
data2=data2<<1;
}
PORTD=PORTD|0x20;
}
4 結 語
使用數字電位器的主要優勢是定位精度高,不受機械振動影響,并可以通過程控來實現半自動化調節[8]。使用數字電位器的缺點是不能連續調節,對于離散多檔位調節場合,使用是非常方便的。數字電位器MCP41010調節精度達到256檔,相比其他64檔數字電位器,精度有了大大提高。此外,它采用SPI總線接口,只需2 B指令讀寫時序,并且在寫完1 B指令后無需接收應答信號,給軟件模擬時序帶來極大方便,這是它的優勢所在。但是MCP41010在一片芯片上只集成了一個電位器,使用資源較少,因此可以使用同系列的產品MCP42XX系列(內部集成4個電位器)[9]。在阻值需要連續調節的場合可以采用以下措施[10]:
(1) 多芯片級聯使用,以增加有效檔位;
(2) 兩個數字電位器配合使用,一個作為粗調,一個作為細調,兩者搭配,可以得出許多種適合不同需要的組合。
參 考 文 獻
[1]王立新.基于數字電位器MCP42010的程控高壓電源[J].微計算機信息,2007,23(1):204-205.
[2]金貴,馬顯光,陳仕國,等.基于AT90S8535單片機的智能止鼾器研究[J].醫療裝備,2007,20(11):8-10.
[3]馬顯光,楊樺,蔣洪,等.鼾聲自動治療機的研制[J].中國醫學物理學雜志,2006,23(3):213-215.
[4]鄭偉,劉文耀,王金濤,等.X9241數字電位器的原理及在DSP中的應用[J].國外電子元器件,2002(5):18-20.
[5]梁劍波,劉加樹,張世莉.恒流功率放大器及其應用[J].微電子學,2004,34(2):135-137.
[6]張軍.AVR單片機應用系統開發典型實例[M].北京:中國電力出版社,2005.
[7]鄭勝峰,范文晶,李智秀,等.軟件模擬I2C時序的通信實現[J].電子質量,2008(8):21-22.
[8]王秀彥,宋吟蔚,宋國榮,等.數字式自動增益放大電路[J].儀表技術與傳感器,2008(8):75-78.
[9]謝珺耀.可編程數字電位器在AVR單片機中的應用[J].電子工業專用設備,2008,37(6):46-48.
[10]利用數字電位器實現數控低通濾波器[J].國外電子元器件,2008(6):76-78.