摘要: 提出了一種基于微加速度計的無線慣性鼠標(biāo)的設(shè)計方案。該方案以微加速度計ADXL213作為信號檢測元件,并采用低功耗處理器MSP430F135和RF芯片nRF401進(jìn)行信號處理與無線傳輸。按該方案設(shè)計的鼠標(biāo)結(jié)構(gòu)簡單、密封性好,在降低鼠標(biāo)功耗和提高鼠標(biāo)使用靈活性等方面具有較大的應(yīng)用前景。
1 引言
鼠標(biāo)作為PC機(jī)的輸入工具,其重要性不言而喻。但是,隨著計算機(jī)外圍設(shè)備的越來越多,各種連線也越來越多,給用戶帶來了許多的不便。于是,人們便有了無線接口的想法,迫切希望有一種鼠標(biāo),它能夠克服諸如有線的距離限制、有線鼠標(biāo)的線材損耗、連線多且錯綜復(fù)雜等問題。在這種情況下,無線鼠標(biāo)應(yīng)運而生。目前市場上的無線鼠標(biāo)幾乎都是光電射頻鼠標(biāo),它雖然克服了有線的缺點,但在功耗、使用場合等方面仍然存在一些不足。
采用微加速度計設(shè)計的無線鼠標(biāo),既可以獨立使用,作為桌面PC 的鼠標(biāo);同時也可以作為單獨的模塊嵌入到現(xiàn)有的機(jī)械鼠標(biāo)和光電鼠標(biāo)中,實現(xiàn)鼠標(biāo)的懸空使用,方便用戶的操作。該設(shè)計兼顧了設(shè)計成本與鼠標(biāo)使用壽命,使得慣性鼠標(biāo)具有相當(dāng)大的競爭力。
2 系統(tǒng)硬件設(shè)計
2.1 信號檢測電路的設(shè)計
ADXL213是一種低成本、低功耗、集成了信號調(diào)理電路和占空比調(diào)制器的微加速度計芯片。輸出為PWM數(shù)字信號,因此可與計數(shù)電路或單片機(jī)直接接口,無須放大和A/D電路。用戶只需外接三個無源器件就可以設(shè)置濾波器輸出帶寬和輸出PWM波的周期。
ADXL213的典型帶寬為1Hz~2500Hz,其-3dB帶寬公式為:

可見,帶寬主要由C(x,y)確定。C(x,y)越小,信號帶寬越寬,分辨率越高,響應(yīng)速度越快。設(shè)計時,首先要確定被測加速度的頻率范圍,然后再設(shè)計濾波器的參數(shù)。盡量使濾波器的帶寬略高于信號的最高頻率,這樣做不僅有利于濾除高頻干擾,也利于降低系統(tǒng)噪聲干擾。
對于占空比的設(shè)計,占空比調(diào)制器(DCM)的周期就是芯片輸出方波的周期T2。該周期是由RSEL確定的,其關(guān)系式為T2=RSEL/125MΩ(RSEL是用來設(shè)置輸出信號循環(huán)周期的電阻)。當(dāng)DCM輸出方波頻率大于模擬帶寬10倍以上,測量準(zhǔn)確度就很理想。從這一點來看,T2越小越好,但是T2的減小會提高對計數(shù)器以及微控制器的處理速度要求。另一方面,要提高測量的分辨率就應(yīng)該盡量提高T2時間內(nèi)的計數(shù)次數(shù),這就要求計數(shù)器和控制器有更高的處理速度,而實際中硬件的處理速度是受到器件性能限制的。綜上所述,T2是根據(jù)模擬帶寬、計數(shù)器和處理器速度以及測量分辨率的要求共同確定的。在設(shè)計時要明確測量的指標(biāo)要求,綜合考慮各種因素。
本設(shè)計中要求被測帶寬為20~50Hz,則選擇濾波器的帶寬為60Hz,選定T2為1.25ms,即DCM輸出方波頻率為800 Hz,該頻率是測量最大頻率的16倍,因此可以很好地反映加速度的變化。根據(jù)上述選擇,可以計算出電阻RSEL為156KΩ,兩個電容選用0.08μF。
對于鼠標(biāo)的按鍵設(shè)計,主要是要考慮消抖。考慮到鼠標(biāo)體積、功耗等要求,設(shè)計中采用軟件延時方式來消抖。加速度計及鼠標(biāo)的按鍵信號的處理由MSP430F135單片機(jī)來完成。
設(shè)計時應(yīng)將鼠標(biāo)響應(yīng)的實時性放在第一位,而將鼠標(biāo)的功耗放在第二位。加速度計需設(shè)置一個控制開關(guān),以解決其一直有信號輸出的問題(加速度計有零漂,鼠標(biāo)傾斜等原因)。按鍵及加速度計與單片機(jī)的連接如圖1:

圖1 鼠標(biāo)按芻及加速度計與單片機(jī)的連接圖
2.2 無線模塊的設(shè)計

圖2 發(fā)送端的硬件電路圖

圖3 接收端的電路圖
傳輸模塊的關(guān)鍵是無線收發(fā)芯片。考慮到鼠標(biāo)的體積和功耗等方面的因素,無線通信模塊選用了Nordic公司的nRF401芯片。nRF401在工作時,只需要外接一個晶振和幾個阻容、電感元件,基本無需測試。設(shè)計中,單片機(jī)通過異步串口與nRF401通信,然后再分別使用三個引腳作為nRF401的通信控制即可。外接晶體及阻容、電感等元件均按照nRF401推薦的典型參數(shù)值選取。發(fā)送端的硬件電路如圖2。接收端的nRF401接收到數(shù)據(jù)后通過USB接口與PC機(jī)相連,接收端的處理器采用AT89C51,具體連接見圖3。
為了獲得較好的RF性能,PCB設(shè)計至少需要兩層板來實現(xiàn),分成射頻電路和控制電路兩部分來布置。nRF401采用PCB天線,在天線的下面沒有接地面。為了減少分布參數(shù)的影響,PCB上應(yīng)該避免長的電源走線,所有元件地線,VDD連接線,VDD去耦電容必須離nRF401盡可能地近。nRF401的電源必須經(jīng)過很好的濾波,并且與數(shù)字電路的電源分離,在離電源腳VDD盡可能近的地方用高性能的電容去耦,最好是一個小電容和一個大電容相并聯(lián)。PCB板頂層和底層最好敷銅接地,把這兩層的敷銅用較多的過孔緊密相連,再將VSS腳連接到敷銅面。所有開關(guān)信號和控制信號都不能經(jīng)過PLL環(huán)路濾波器元件和VCO電感附近。
2.3 USB接口硬件設(shè)計
鼠標(biāo)與計算機(jī)的通信采用USB通信方式。USB控制芯片選擇了PHILIPS公司的PDIUSBD12。PDIUSBD12與89C51的連接如圖3,PDIUSBD12的8位并行數(shù)據(jù)接入89C51的P0口,地址線A15(P2.7)作為PDIUSBD12的片選,地址線A14(P2.6)作為PDIUSBD12的命令或數(shù)據(jù)的選擇線。PDIUSBD12 與89C51的數(shù)據(jù)交換采用中斷方式(外中斷INT0)。PDIUSBD12從USB口得到信息后向89C51發(fā)出中斷信號,89C51進(jìn)入中斷處理程序進(jìn)行響應(yīng)。
3 系統(tǒng)軟件設(shè)計
3.1 信號檢測部分的軟件設(shè)計
信號檢測部分軟件設(shè)計的關(guān)鍵是計算加速度計輸出信號的占空比,從而計算出加速度值。待機(jī)時,處理器工作在低功耗模式LPM3,從而降低整個系統(tǒng)的功耗。加速度計的輸出信號接MSP430F135的比較/捕獲模塊的輸入端,為了能精確測出輸出信號的占空比,可利用MSP430F135中Timer_A的比較/捕獲模塊,令其工作在捕獲模式,且讓其在上升沿和下降沿都捕獲。在上升沿時,捕獲一個定時器數(shù)據(jù),這個數(shù)據(jù)在捕獲寄存器器中讀出;再等下降沿到來,在下降沿時又捕獲一個定時器數(shù)據(jù);兩次捕獲的定時器數(shù)據(jù)差就是脈沖的寬度也即輸出信號中高電平的寬度。
限于篇幅,這里僅給出X軸的信號檢測部分的程序,分別用start和end記錄上升沿和下降沿捕獲時計數(shù)單元的值:
#include 《msp430x13x.h》
unsigned int start,end;
unsigned char overflow;
void main(void) {
WDTCTL=WDTPW+WDTHOLD; //關(guān)閉看門狗
P1DIR|=BIT0+BIT4; //P1.0設(shè)為輸出
P1SEL|=BIT1; //P1.1為模塊使用
CCTL0=CM0+SCS+CAP+CCTE0; //軟件捕獲,CCIOA
輸入,允許捕獲中斷
TACTL=TASSEL0+TACLR+TAIE+MC1; // ACLK,連續(xù)計數(shù)模式,清除TAR,允許定時器溢出中斷
_EINT(); //系統(tǒng)總中斷
for(;;){ //低功耗模式3
_BIS_SR(CPUOFF+SCG1+SCG0);
_NOP();}}
interrupt[TIMERA0_VECTOR]void TimerA0(void) {
Switch(TAIV) {
case:2; //捕獲中斷
if(CCTL0&&CM0) //上升沿
{CCTL0=(CCTL0&&(~CM0))|CM1; //改為下降沿觸發(fā)
star=TAR; //記錄初始時間
overflow=0; } //溢出計數(shù)復(fù)位
else if(CCTL0&&CM1) //下降沿
{CCTL0=(CCTL1&&(~CM1))|CM0; //改為上升沿觸發(fā)
end=TAR; } //用start、end和overflow計算寬度
break;
case 10; //定時器溢出中斷
overflow++; //溢出計數(shù)加1
break;
default: break; }}
3.2 無線通信模塊部分的軟件設(shè)計
為了節(jié)能,nRF401大多數(shù)情況下應(yīng)處于關(guān)閉狀態(tài)。由于無線部分硬件不具備自動喚醒功能,nRF401由MSPF135根據(jù)加速度信號來喚醒。在通信模塊的設(shè)計中,鼠標(biāo)的功耗、響應(yīng)的及時性和指針定位的準(zhǔn)確性是要考慮的主要問題。鼠標(biāo)的通信是一種非對稱的單工通信,系統(tǒng)的功耗主要產(chǎn)生在鼠標(biāo)主體部分即發(fā)送端。接收端由USB接口供電,可以一直處于接收監(jiān)聽狀態(tài),不影響系統(tǒng)的功耗,因此不需要設(shè)置同步碼來喚醒接收端,可以在幀尾加上2字節(jié)的CRC校驗來校驗數(shù)據(jù)傳輸?shù)恼_性,提高抗干擾能力。
綜上所述,通信幀格式采用了1字節(jié)地址加4字節(jié)有效數(shù)據(jù)信息再加2字節(jié)CRC校驗的短幀格式。當(dāng)CRC校驗錯誤時,直接丟棄該幀。這樣做雖然犧牲了數(shù)據(jù)傳輸?shù)目煽啃裕〝?shù)據(jù)傳輸?shù)目煽啃詫κ髽?biāo)來說并不太重要),卻換來了整個系統(tǒng)功耗的降低和響應(yīng)時間的加快。
程序設(shè)計時應(yīng)注意:nRF401的通信速率最高為20kbit/s;發(fā)送數(shù)據(jù)之前需將發(fā)送端置于發(fā)射模式(TXEN = l),接收端一直打開。在待機(jī)模式,電路不接收和發(fā)射數(shù)據(jù)。待機(jī)模式轉(zhuǎn)換為發(fā)射模式的轉(zhuǎn)換時間至少2ms;待機(jī)模式轉(zhuǎn)換為接收模式的轉(zhuǎn)換時間至少3ms。
3.3 USB接口的軟件設(shè)計
USB接口的軟件設(shè)計部分包括接口外設(shè)端的固件程序、PC操作系統(tǒng)上的USB設(shè)備驅(qū)動程序和串行通信程序。固件設(shè)計的目標(biāo)是使PDIUSBD12在USB上達(dá)到最大的傳輸速率。本方案的固件設(shè)計采用完全的中斷驅(qū)動方式。當(dāng)CPU處理前臺任務(wù)時,USB的傳輸在后臺進(jìn)行,中斷和主循環(huán)的數(shù)據(jù)交換通過事件標(biāo)志和數(shù)據(jù)緩沖區(qū)進(jìn)行。這樣既保證了最佳的傳輸速率,又簡化了編程和調(diào)試。固件結(jié)構(gòu)如圖4所示,圖中箭頭表示數(shù)據(jù)傳輸方向。

圖4 固件結(jié)構(gòu)和數(shù)據(jù)流向
固件中必須先定義命令和數(shù)據(jù)所在的地址:
unsigned char d12 _cmd xdata_at_0X7FFF;
unsigned char d12_data xdata_at_0X3FFF;
向PDIUSBD12發(fā)命令和對其進(jìn)行讀寫的子程序:
void_wrt_cmd (unsigned char command)
{d12_cmd=command;} // 向PDIUSBD發(fā)命令
void wrt_data (unsigned char tmp_data)
{d12_data=tmp_data;} // 向PDIDUSBD寫數(shù)據(jù)
void read_data()
{return (d12_data);} // 從PDIUSBD12讀數(shù)據(jù)
PDIUSBD12命令接口包括了對PDIUSBD12讀寫操作的所有命令,通過定義若干個子程序?qū)?yīng)于各自不同的命令。當(dāng)固件中其它程序需要對PDIUSBD12進(jìn)行讀寫時,只須調(diào)用其中相應(yīng)的子程序。
本設(shè)計的驅(qū)動程序直接采用了通用的USB鼠標(biāo)的驅(qū)動程序,因而可以在很大程度上簡化軟件設(shè)計。
4 結(jié)語
本文作者創(chuàng)新點:本設(shè)計按照低功耗系統(tǒng)的設(shè)計原則,利用加速度計和用戶操作的靈活性來判斷和檢測鼠標(biāo)的移動,設(shè)計了一種沒有活動部件、機(jī)械傳動機(jī)構(gòu)和光電器件的密封性好的低功耗無線慣性鼠標(biāo)。測試結(jié)果表明該無線慣性鼠標(biāo)靈敏度達(dá)到了使用要求,很好地解決了現(xiàn)有無線鼠標(biāo)存在的電池壽命低、使用場合不靈活等缺點,具有較大的應(yīng)用前景。
-
鼠標(biāo)
+關(guān)注
關(guān)注
6文章
592瀏覽量
40361 -
光電器件
+關(guān)注
關(guān)注
1文章
180瀏覽量
18856 -
低功耗
+關(guān)注
關(guān)注
10文章
2638瀏覽量
104367
發(fā)布評論請先 登錄
相關(guān)推薦
高性能石英加速度計,滿足最嚴(yán)苛應(yīng)用需求
ADXL345超低功耗3軸加速度計中文手冊
MEMS加速度計的工作原理是什么
PCB Piezotronics推出357A67型三軸電荷輸出加速度計

EPSON工業(yè)級加速度計選型

e2studio開發(fā)三軸加速度計LIS2DW12(2)----基于中斷信號獲取加速度數(shù)據(jù)

三軸加速度計LIS2DUX12開發(fā)(2)----靜態(tài)校準(zhǔn)

e2studio開發(fā)三軸加速度計LIS2DW12(2)----基于中斷信號獲取加速度數(shù)據(jù)

微納光柵MOEMS加速度計的工作原理及仿真設(shè)計

三軸加速度計LIS2DW12開發(fā)(4)----測量傾斜度

評論