中心議題:
- 基于MEMS的無(wú)線鼠標(biāo)系統(tǒng)原理與設(shè)計(jì)
- 基于MEMS的無(wú)線鼠標(biāo)的具體設(shè)計(jì)方案
解決方案:
- 無(wú)線鼠標(biāo)的發(fā)射端設(shè)計(jì)
- 無(wú)線鼠標(biāo)的接收端設(shè)計(jì)
- 無(wú)線鼠標(biāo)的節(jié)能設(shè)計(jì)
本文詳細(xì)討論了基于微加速度傳感器的MEMS無(wú)線鼠標(biāo)的軟件、硬件設(shè)計(jì)和系統(tǒng)構(gòu)成,并給出了Matlab環(huán)境下系統(tǒng)的simulink模型和算法,模擬的結(jié)果證明:無(wú)線鼠標(biāo)的設(shè)計(jì)是合理可行的,文中提出的二次積分近似算法是簡(jiǎn)捷有效的;文中討論的二維鼠標(biāo)的設(shè)計(jì)技術(shù),能為進(jìn)一步研究多維多功能的MEMS輸入設(shè)備打下很好的基礎(chǔ)。
1 系統(tǒng)原理與設(shè)計(jì)
1.1 檢測(cè)原理
目前,常見(jiàn)的鼠標(biāo)有2種,滾輪式和光電式。滾輪式鼠標(biāo)是靠滾輪的傳動(dòng)帶動(dòng)X和Y軸上的譯碼輪轉(zhuǎn)動(dòng),來(lái)感測(cè)鼠標(biāo)位移的變化;光電式鼠標(biāo)是用一個(gè)自帶光源的光電傳感器,跟隨鼠標(biāo)的移動(dòng)連續(xù)記錄它途經(jīng)表面的“快照”,這些快照(即幀)有一定的頻率、尺寸和分辨力,而光電鼠標(biāo)的核心--DSP通過(guò)對(duì)比這些快照之間的差異從而識(shí)別移動(dòng)的方向和位移量,并將這些位移的信息加以編碼后實(shí)時(shí)地傳給電腦主機(jī)。
而基于MEMS技術(shù)的無(wú)線鼠標(biāo)是用微加速度傳感器實(shí)時(shí)測(cè)量鼠標(biāo)運(yùn)動(dòng)的加速度,經(jīng)過(guò)兩次積分轉(zhuǎn)換為位移信號(hào)傳輸給主機(jī),來(lái)控制光標(biāo)的移動(dòng),從而實(shí)現(xiàn)鼠標(biāo)的功能。
1.2 硬件設(shè)計(jì)
如圖1所示,整個(gè)無(wú)線鼠標(biāo)系統(tǒng)分為2個(gè)子系統(tǒng),遠(yuǎn)端子系統(tǒng)和主機(jī)端子系統(tǒng)。
圖1 無(wú)線鼠標(biāo)系統(tǒng)結(jié)構(gòu)框圖
遠(yuǎn)端子系統(tǒng)由微加速度傳感器、微控制器和nRF2401射頻收發(fā)器組成。微加速度傳感器采用美國(guó)AD公司生產(chǎn)的ADXL203微傳感器,微控制器采用Atmel公司生產(chǎn)的ATmega 16L微控制器,該微控制器附帶有8路10位可編程的A/D轉(zhuǎn)換電路,可以實(shí)時(shí)地將ADXL203加速度傳感器輸出的加速度模擬信號(hào)轉(zhuǎn)換成加速度數(shù)字信號(hào)。
ADXL203加速度傳感器在加速度為0時(shí)輸出電壓為2.5V,為提高A/D轉(zhuǎn)換的精度,本文利用ATmega 16L內(nèi)置的差分放大功能,用差分信號(hào)將這2.5V電壓給濾掉,并將差分后的電壓信號(hào)放大到與A/D轉(zhuǎn)換的參考電壓相匹配。系統(tǒng)供電采用電器中常見(jiàn)的9V電池,連接一個(gè)LM78M05穩(wěn)壓貼片得到恒定的5V電壓,供各個(gè)模塊使用。
主機(jī)端子系統(tǒng)由nRF2401射頻收發(fā)器,串行傳輸接口芯片和另一個(gè)ATmega 16L微控制器組成,其中,RS232串行通信接口芯片采用的是Maxim2IC公司的MAX233芯片,作用是將微控制器輸出的5V TTL/CMOS電平轉(zhuǎn)換為EIA/TIA-232-E電平,以便與電腦主機(jī)進(jìn)行串行(RS232)通信。
1.3 軟件與算法設(shè)計(jì)
鼠標(biāo)在人的操縱下移動(dòng),微加速度傳感器便會(huì)實(shí)時(shí)地輸出鼠標(biāo)運(yùn)動(dòng)的加速度大小和方向,ADXL203傳感器的量程為±1.7gn ,電壓靈敏度為1000mV/gn,這個(gè)電壓信號(hào)經(jīng)過(guò)差分放大5.0/1.7倍后,通過(guò)微控制器A/D轉(zhuǎn)換功能變成與加速度大小對(duì)應(yīng)的數(shù)字信號(hào),加速度經(jīng)過(guò)兩次積分,便變成了鼠標(biāo)移動(dòng)的位移信號(hào),然后,再經(jīng)過(guò)編碼,并通過(guò)nRF2401射頻收發(fā)器將位移信號(hào)發(fā)射出去。
[page]
當(dāng)加速度傳感器輸出電壓為a時(shí),經(jīng)A/D轉(zhuǎn)換得到的數(shù)字量大小為
式中[ ]表示取整數(shù);a為加速度傳感器輸出的電壓大小,V。ATmega 16L單片機(jī)最大采樣速率可以達(dá)到15000次/秒,本文采用1000次/秒;即每1ms采樣一次,每25ms便向電腦報(bào)告一次相對(duì)的位移改變量,以保證屏幕上鼠標(biāo)指針運(yùn)動(dòng)的精確和平滑,則每一次報(bào)告的位移改變量包含25次對(duì)加速度采樣的數(shù)據(jù)。可以采用近似算法來(lái)對(duì)加速度信號(hào)進(jìn)行二次積分,得到位移信號(hào)。
編碼的目的是將X和Y方向的位移改變量,連同鼠標(biāo)按鍵的實(shí)時(shí)信息,按照標(biāo)準(zhǔn)的Microsoft鼠標(biāo)協(xié)議要求的格式進(jìn)行編碼,以便最后發(fā)送到主機(jī)的信息能夠被電腦正確識(shí)別,從而使電腦能正確處理發(fā)送給它的位移信號(hào),來(lái)正確控制鼠標(biāo)光標(biāo)的移動(dòng)等動(dòng)作。表1表示的即是標(biāo)準(zhǔn)的鼠標(biāo)協(xié)議規(guī)定的三字節(jié)數(shù)據(jù)包格式,第1個(gè)字節(jié)記錄的是左右按鍵的信息和鼠標(biāo)X,Y位移的最高2個(gè)字位的數(shù)據(jù),按鍵按下時(shí),對(duì)應(yīng)的位置1,否則,置0;第2和第3個(gè)字節(jié)分別記錄X和Y方向位移的低6位數(shù)據(jù)。位移值的范圍取-127~+127,再大的位移改變量會(huì)自動(dòng)溢出。
表1 Microsoft標(biāo)準(zhǔn)鼠標(biāo)協(xié)議數(shù)據(jù)包格式
2 具體設(shè)計(jì)方案
2.1 鼠標(biāo)原理
光學(xué)鼠標(biāo)的核心是一個(gè)低分辨率迷你攝像機(jī), 稱為傳感器。瀏覽LED照亮表面,光從表面反射回來(lái),通過(guò)透鏡采集。大多數(shù)鼠標(biāo)制造商采用可視的紅色LED,有些制造商還生產(chǎn)采用紅外線LED的鼠標(biāo)。
當(dāng)鼠標(biāo)移動(dòng)時(shí),傳感器會(huì)連續(xù)拍攝物體表面,并利用數(shù)字信號(hào)處理來(lái)比較各個(gè)影像,以決定移動(dòng)的距離和方向。產(chǎn)生的結(jié)果會(huì)傳回計(jì)算機(jī),而屏幕上的光標(biāo)會(huì)根據(jù)這些結(jié)果來(lái)移動(dòng)。雖然光學(xué)鼠標(biāo)傳感器幾乎可以在任何一種物體表面上移動(dòng),但仍有一些表面是鼠標(biāo)傳感器無(wú)法瀏覽的,例如鏡面、玻璃表面、光滑表面、雜志及全像攝影表面。
根據(jù)圖1,鼠標(biāo)可劃分為以下幾個(gè)功能部分:
1)位移檢測(cè)單元--X、Y雙軸加速度傳感器;
2)按鍵檢測(cè)單元;
3)單片機(jī)(MCU);
4)藍(lán)牙發(fā)射芯片;
5)藍(lán)牙收發(fā)芯片--做接收器(RX);
6)帶USB接口的單片機(jī)(USB MCU)。
圖1 基于加速度傳感器無(wú)線鼠標(biāo)的描述
[page]
鼠標(biāo)具體的工作原理為:鼠標(biāo)內(nèi)的單片機(jī)實(shí)時(shí)監(jiān)測(cè)加速度傳感器的移動(dòng)和按鍵狀態(tài),當(dāng)鼠標(biāo)器的狀態(tài)發(fā)生變化時(shí),單片機(jī)讀出按鍵狀態(tài)并及時(shí)得到當(dāng)前X/Y坐標(biāo)移動(dòng)的位置;接著單片機(jī)就將變化的數(shù)據(jù)按照約定的通信協(xié)議將數(shù)據(jù)打包通過(guò)無(wú)線收發(fā)技術(shù)發(fā)送到接收端,接收端通過(guò)單片機(jī)解碼把符合鼠標(biāo)USB協(xié)議的數(shù)據(jù)包送至PC主機(jī)的USB端口;PC中的鼠標(biāo)驅(qū)動(dòng)程序接收到端口的數(shù)據(jù)包后將其解碼再傳送給相應(yīng)的應(yīng)用軟件,從而完成鼠標(biāo)器的檢測(cè)和控制過(guò)程。
2.2 發(fā)射端
加速度傳感器采集加速度信號(hào),單片機(jī)通過(guò)軟件實(shí)現(xiàn)對(duì)加速度信號(hào)的二重積分而轉(zhuǎn)換為位移信號(hào),經(jīng)編碼處理至藍(lán)牙發(fā)射芯片,通過(guò)天線將數(shù)據(jù)發(fā)射出去。
2.2.1 加速度傳感器電路
采用ADI的低成本、低功耗雙軸單片加速度傳感器 ,其可測(cè)量加速度范圍至少在 ±2g 以上 ,可以測(cè)量動(dòng)態(tài)加速度(比如振動(dòng))和靜態(tài)加速度(比如重力加速度),其輸出的占空比是和加速度的大小成一定的線性關(guān)系,并且可以直接被單片機(jī)(MCU)采樣而不需模數(shù)轉(zhuǎn)換(ADC)。工作周期則可以簡(jiǎn)單地通過(guò)RSET來(lái)調(diào)節(jié) ,范圍在0. 5m s到10m s之間。帶寬可以通過(guò)調(diào)節(jié)XFLT和管腳上的電容Cx和Cy來(lái)確定, 本方案中選用Cx=Cy= 0.10μF, 故F-3db=50Hz,需要注意的是,加速度傳感器在平動(dòng)時(shí)會(huì)在相應(yīng)的方向產(chǎn)生與加速度相關(guān)的輸出,在轉(zhuǎn)動(dòng)的時(shí)候也是如此 ,本方案中我們假設(shè)鼠標(biāo)在水平面使用 ,因此我們只需要一片加速度傳感器就可以解決問(wèn)題 ,加速度的大小可以通過(guò) T1/ T2 = 11% 3A+ 50%這個(gè)線性比例關(guān)系獲得 其中 T1表示工作周期中高電平部分的長(zhǎng)度 , T2表示整個(gè)工作周期的長(zhǎng)度 , T1/ T2就是輸出占空比的大小,A 是加速度大小 ,而加速度的方向可以通過(guò)其正負(fù)性來(lái)判定。
2.2.2 占空比輸出解碼
對(duì)于每一個(gè)軸,傳感器的輸出電路把模擬信號(hào)轉(zhuǎn)變成占空比調(diào)制的數(shù)字信號(hào),這樣就可以通過(guò)MCU 的定時(shí)/計(jì)數(shù)器解碼獲得加速度信息,其大小可以通過(guò)下式計(jì)算得到:
由于每個(gè)器件存在差異,其 0g輸出和靈敏性會(huì)因?yàn)闇囟取⒃肼暤仍蚨煌?,為?shí)現(xiàn)高精度測(cè)量,0g的偏移量和比例因子必須按照實(shí)際測(cè)量所得。本方案在TA=25℃,VDD=3V,RSET=125KΩ,中測(cè)得:
為了實(shí)現(xiàn)高精度測(cè)量,考慮到T2易受溫度漂移的影響,必須周期性地更新T2的平均值。一種新的改進(jìn)型脈寬調(diào)制(PWM)解碼方法是通過(guò)占空比調(diào)制在X軸和Y軸使用相同的三角形參考波 ,使得每個(gè)周期中 T1的中點(diǎn)達(dá)到同步 ,這種方法能加快數(shù)據(jù)傳輸時(shí)間,也稱之為高速解碼,X軸和Y軸的占空比輸出如圖2所示。
圖2 X軸和Y軸的占空比輸出
單片機(jī)軟件編程實(shí)現(xiàn)獲取加速度信息的流程圖如圖3所示。
圖3 ADXL202E高速解碼技術(shù)流程圖
[page]
2.2.3 軟件實(shí)現(xiàn)獲取位移信號(hào)
如何實(shí)現(xiàn)高精確度且易于編程的二重積分算法是把加速度信號(hào)轉(zhuǎn)換為位移信號(hào)的關(guān)鍵所在,用積分電路來(lái)實(shí)現(xiàn)二重積分的誤差較大,因此擬用軟件編程來(lái)實(shí)現(xiàn)二重積分的算法 ,并且先在 matlab環(huán)境下用動(dòng)態(tài)系統(tǒng)的simulink模型模擬 FFT、辛普生公式等不同的積分算法 ,來(lái)進(jìn)行算法的比較與選擇 ,通過(guò)加速度傳感器鼠標(biāo)的 simulink模型對(duì)實(shí)際位移和軟件實(shí)現(xiàn)的位移信號(hào)進(jìn)行比較,誤差控制在在0.5%以內(nèi),滿足鼠標(biāo)設(shè)計(jì)要求。
2.2.4 無(wú)線鼠標(biāo)按鍵
鼠標(biāo)按鍵采用標(biāo)準(zhǔn)開關(guān),每個(gè)開關(guān)直接連到ATmega16 的通用輸入輸出(GPIO)口, GPIO被配置成輸入引腳,每個(gè)引腳可以單獨(dú)地選擇上拉電阻,單片機(jī)檢測(cè)按鍵操作,軟件進(jìn)行按鍵去抖處理和實(shí)現(xiàn)噪聲抑制功能,然后通過(guò)藍(lán)牙芯片發(fā)射出按鍵信息。
2.2.5 藍(lán)牙模塊發(fā)射芯片
nRF2402是單片2.4 ~2.5GHz射頻發(fā)射芯片, 發(fā)射器包含頻率合成器、功放、晶體振蕩器和調(diào)制器 ,輸出功率和信道選擇很容易通過(guò)3-線接口編程實(shí)現(xiàn), 在輸 出功率為-5dBm時(shí)電流消耗僅10mA ,內(nèi)置的ShockBurst技術(shù)以及休眠模式用來(lái)降低發(fā)送數(shù)據(jù)的電流消耗 ,以延長(zhǎng)電池使用壽命 ,并且向pc發(fā)送的數(shù)據(jù)包也應(yīng)盡可能少(取采樣速率為100采樣點(diǎn)/秒)。ShockBurst技術(shù)使用片內(nèi)先入先出堆棧(FIFO)低速處理數(shù)據(jù)(10Kbps)而高速發(fā)送數(shù)據(jù)(1Mbps)。
該設(shè)計(jì)需要一個(gè)16MHz的晶體振蕩器和一個(gè)外部的EPROM用來(lái)固件存儲(chǔ)。固件將使用ShockBurst技術(shù)從鼠標(biāo)發(fā)送RF數(shù)據(jù)包。其中固件必須完成下列任務(wù):
- 裝載地址(ADDR)和有效載荷(PAYLOAD);
- 計(jì)算循環(huán)冗余檢查(CRC);
- 添加信息位(PRE);
- 使用ShockBurst技術(shù)發(fā)送數(shù)據(jù)包;
- 數(shù)據(jù)包發(fā)送完成回到休眠模式。
2.3 接收端
2.3.1 藍(lán)牙收發(fā)芯片
接收器是將nRF2401收發(fā)芯片配置成接收模式(RX),其性能類似發(fā)射芯片,但該芯片采用Duo2Ceiver同步雙通道接收技術(shù),這樣就可以實(shí)現(xiàn)鼠標(biāo)和鍵盤的無(wú)線控制(在此我們僅考慮鼠標(biāo)的使用)。誤差控制其固件必須完成下列任務(wù):
- 當(dāng)nRF2401作為ShockBurst的接收器時(shí),設(shè)置正確的地址和接收到的RF數(shù)據(jù)包的有效載荷長(zhǎng)度;
- 激活RX,并設(shè)CE為高;
- 等待200μs后,nRF2401處于等待接收數(shù)據(jù)狀態(tài);
- 當(dāng)有效數(shù)據(jù)包正確的ADDR和CRC信息接收到后,nRF2401去除數(shù)據(jù)包中的附加信息、地址和循環(huán)冗余檢查位;
- nRF2401通知MCU使DR1設(shè)置為高;
- MCU設(shè)置CE為低也可能不設(shè)置為低 使芯片處于低電流模式;
- MCU以一定的速率記錄有效載荷信息;
當(dāng)?shù)玫接行лd荷后nRF2402設(shè)置DR1為低。如果CE為高則準(zhǔn)備接收新的數(shù)據(jù)包 ,如果CE為低,則重新開始起始序列。
[page]
2.3.2 PCB天線設(shè)計(jì)
為實(shí)現(xiàn)2.4GHz低功耗射頻器件nRF2401和nRF2402 的小尺寸、易制造和低成本特點(diǎn),在PCB上選用1/4波長(zhǎng)單極天線是一個(gè)理想的解決方案。但是如同其他天線一樣 , 1/4 波長(zhǎng)單極天線的增益會(huì)由于殼體材料、與接地面(ground p lane)接地面的尺寸以及PCB天線的寬度和厚度等參數(shù)的改變而發(fā)生變化,因此單極PCB天線的長(zhǎng)度必須的改變而發(fā)生變化,因此單極PCB天線的長(zhǎng)度必須優(yōu)化。在本方案中,天線采用標(biāo)準(zhǔn)1.6mm材料,其相對(duì)介電常數(shù)為4.4,天線的寬度W=1.5 mm,通過(guò)計(jì)算可得到單極天線周圍物質(zhì)的介電常數(shù)為3.16,從而在該條件下波長(zhǎng)為 68.9mm。在PCB基底上選用印制1/4波長(zhǎng)單極天線的長(zhǎng)度L=17.2 mm ,為了使得天線在 2.4GHz更容易諧振,天線的長(zhǎng)度可適當(dāng)延長(zhǎng),本方案中選天線長(zhǎng)度L =22mm的類“┓”型設(shè)計(jì),是PCB天線制作較為合理的一種方法,大大節(jié)省了PCB板的面積,同時(shí)在規(guī)定PCB板面積的條件下應(yīng)保證天線的開口端和接地面之間的距離d盡可能大,實(shí)現(xiàn)信號(hào)高精度、高增益的準(zhǔn)確發(fā)射和接收。
2.3.3 帶USB接口的單片機(jī)
USB設(shè)備具有即插即用、熱插拔等優(yōu)勢(shì) ,鼠標(biāo)采用USB接口必將成為一種趨勢(shì),因此我們采用帶USB收發(fā)器的單片機(jī)CY7C637xx系列。該系列是采用高性能8位精簡(jiǎn)指令(RISC)結(jié)構(gòu),集成了USB串行接口引擎(SIE)的單片機(jī) ,其內(nèi)置了時(shí)鐘振蕩器、計(jì)時(shí)器、可編程電流驅(qū)動(dòng)以及在每個(gè)I/O口線上的上拉電阻,可以用極少量的外部元件和簡(jiǎn)單的固件編程實(shí)現(xiàn)高性能低成本的人機(jī)交互設(shè)備(HID)。
軟件部分對(duì)接收的RF數(shù)據(jù)包進(jìn)行譯碼,并經(jīng)過(guò)處理轉(zhuǎn)換為符合鼠標(biāo)USB協(xié)議的數(shù)據(jù)包格式送到PC機(jī),以及完成為實(shí)現(xiàn)鼠標(biāo)功能所需的固件的編寫。當(dāng)USB器件第一次連到總線,總線供電,D-的上拉電阻報(bào)告集線器連接一低速(1.5Mbps)USB器件,主機(jī)識(shí)別這個(gè)USB器件,總線重啟。主機(jī)接收到器件的描述符后賦予器件一個(gè)新的地址,這樣器件和主機(jī)通過(guò)這個(gè)新的地址進(jìn)行數(shù)據(jù)通信。
2.4 節(jié)能考慮
單片機(jī)可通過(guò)軟件選擇省電方式:閑置方式停止CPU的工作 ,而SRAM、定時(shí) /計(jì)數(shù)器、SPI口及中斷系統(tǒng)繼續(xù)工作;掉電方式保留寄存器的內(nèi)容,但停止晶振,終止芯片的其他功能,直至下一次外部中斷或硬件復(fù)位。藍(lán)牙芯片則通過(guò)配置特殊寄存器,可使芯片工作在ShockBurst無(wú)線方式,并支持休眠模式和掉電模式,可實(shí)現(xiàn)數(shù)據(jù)的超低功耗傳輸,因此,對(duì)于用電池供電的鼠標(biāo)器發(fā)射端無(wú)疑延長(zhǎng)了其使用時(shí)間。
3 結(jié)語(yǔ)
本文詳細(xì)討論了基于微加速度傳感器的MEMS無(wú)線鼠標(biāo)的軟件、硬件設(shè)計(jì)和系統(tǒng)構(gòu)成,并給出了Matlab環(huán)境下系統(tǒng)的simulink模型和算法,模擬的結(jié)果證明:無(wú)線鼠標(biāo)的設(shè)計(jì)是合理可行的,文中提出的二次積分近似算法是簡(jiǎn)捷有效的;文中討論的二維鼠標(biāo)的設(shè)計(jì)技術(shù),能為進(jìn)一步研究多維多功能的MEMS輸入設(shè)備打下很好的基礎(chǔ)。本文選擇硬件時(shí),充分考慮了系統(tǒng)向多維和多功能擴(kuò)展的可能性,可以在此二維鼠標(biāo)的基礎(chǔ)上再添加一些器件,構(gòu)成功能更多更完善的MEMS輸入設(shè)備,例如:可以再添加一個(gè)微加速度傳感器來(lái)感測(cè)Z軸的加速度,從而實(shí)現(xiàn)三維鼠標(biāo),可以實(shí)現(xiàn)對(duì)三維立體旋轉(zhuǎn)等的控制;也可以利用nRF2401射頻收發(fā)器內(nèi)置的多點(diǎn)通信控制的特性,再多增加幾個(gè)接收模塊,可以同時(shí)控制多臺(tái)主機(jī),或多增加幾個(gè)發(fā)射模塊,用幾個(gè)輸入設(shè)備來(lái)控制同一臺(tái)主機(jī),以適應(yīng)不同應(yīng)用場(chǎng)合的需要。
另外,基于MEMS技術(shù)的無(wú)線鼠標(biāo)很容易向三維空間使用拓展,這樣就能為很多場(chǎng)合,尤其是作演講時(shí)提供很大的方便,具有很大的應(yīng)用價(jià)值。