無線光機(jī)鼠標(biāo)設(shè)計(jì)(51兼容射頻Soc nRF9E5)
2.5 AD轉(zhuǎn)換器
nRF9E5片內(nèi)有10位ADC,AD轉(zhuǎn)換參考電壓可以通過軟件設(shè)置在AREF和1.22V之間(內(nèi)部參考電壓)。AD轉(zhuǎn)換器的4個(gè)輸入可通過軟件進(jìn)行選擇,通道0到3可以把對(duì)應(yīng)引腳AIN0到AIN3上的電壓值分別轉(zhuǎn)換為數(shù)字值,通道4用于對(duì)nRF9E5工作電壓的監(jiān)控。AD轉(zhuǎn)換器默認(rèn)工作于 10位方式,可通過軟件使其工作于6位、8位或12位方式。
2.6 射頻收發(fā)器
nRF9E5收發(fā)器通過內(nèi)部并行口或內(nèi)部SPI口與其它模塊進(jìn)行通信,具有同單片射頻收發(fā)器nRF905相同的功能。DuoCeiver接收器輸出的數(shù)據(jù)準(zhǔn)備信號(hào),可通過程序使其為微處理器的中斷或通過GPIO口的傳給CPU。
nRF9E5工作于433/868/915 ISM頻段。收發(fā)器由一個(gè)完整的頻率合成器、一個(gè)功率放大器、一個(gè)調(diào)節(jié)器和兩個(gè)接收器組成。輸出功率、頻道和其它射頻參數(shù)可通過對(duì)特殊功能寄存器 RADIO(0xA0)編程進(jìn)行控制。發(fā)射模式下,射頻電流消耗僅為11mA,接收模式下為12.5mA。為了節(jié)能,可通過程序控制收發(fā)器的開/關(guān)。
3. 無線鼠標(biāo)的基本知識(shí)[2]
無線鼠標(biāo)的基本功能和普通鼠標(biāo)相同,唯一的區(qū)別是無線鼠標(biāo)通過無線方式傳送鼠標(biāo)信息給PC機(jī),而普通鼠標(biāo)是通過電線。這意味著無線鼠標(biāo)檢測(cè)鼠標(biāo)移動(dòng)和按鍵信息的方法和普通有線鼠標(biāo)一樣,也是用開關(guān)來檢測(cè)按鍵,用球和滾軸來檢測(cè)鼠標(biāo)的移動(dòng)。無線鼠標(biāo)使用電池供電,所以應(yīng)該盡量考慮節(jié)能問題,盡量用最少的次數(shù)就能把檢測(cè)到的鼠標(biāo)信息發(fā)送到PC機(jī)。無線鼠標(biāo)在PC機(jī)處還應(yīng)有一個(gè)接收器,一般該接收器是通過USB接口或串口與PC機(jī)相連,目前發(fā)展的趨勢(shì)是采用USB接口。
4. 無線光機(jī)鼠標(biāo)方案
無線光機(jī)鼠標(biāo)器,即將滾輪的機(jī)械轉(zhuǎn)動(dòng)轉(zhuǎn)換成光信號(hào),然后變?yōu)閿?shù)字電信號(hào)再通過無線的方式發(fā)送給和PC機(jī)相連的接收器。無線光機(jī)鼠標(biāo)器底部有一個(gè)露出一部分的塑膠小球,當(dāng)鼠標(biāo)器在操作桌面上移動(dòng)時(shí),小球隨之轉(zhuǎn)動(dòng),在鼠標(biāo)器內(nèi)部裝有三個(gè)滾軸與小球接觸,其中有兩個(gè)分別是X軸方向和Y軸方向滾軸,用來分別測(cè)量X軸方向和Y軸方向的移動(dòng)量,另一個(gè)是空軸,僅起支撐作用。拖動(dòng)鼠標(biāo)器時(shí),由于小球帶動(dòng)三個(gè)滾軸轉(zhuǎn)動(dòng),X軸方向和Y軸方向滾軸又各帶動(dòng)一個(gè)轉(zhuǎn)軸(稱為譯碼輪)轉(zhuǎn)動(dòng)。譯碼輪(見圖2)[3]的兩側(cè)分別裝有紅外
圖2 譯碼輪和光敏傳感器工作原理
發(fā)光二極管和光敏傳感器,組成光電耦合器。光敏傳感器內(nèi)部沿垂直方向排列有兩個(gè)光敏晶體管A和B。由于譯碼輪有間隙,故當(dāng)譯碼輪轉(zhuǎn)動(dòng)時(shí),紅外發(fā)光二極管發(fā)出的紅外線時(shí)而照在光敏傳感器上,時(shí)而被阻斷,從而使光敏傳感器輸出脈沖信號(hào)。光敏晶體管A和B被安放的位置使得其光照和阻斷的時(shí)間有差異,從而產(chǎn)生的脈沖A和脈沖B有一定的相位差,利用這種方法,就能測(cè)出鼠標(biāo)器的拖動(dòng)方向。塑膠小球的移動(dòng)帶動(dòng)滾軸轉(zhuǎn)動(dòng),滾軸每轉(zhuǎn)動(dòng)一個(gè)小角度,鼠標(biāo)位置計(jì)數(shù)器加1,每隔一定時(shí)間,nRF9E5就把鼠標(biāo)位置計(jì)數(shù)器的值讀出,通過計(jì)算得出鼠標(biāo)移動(dòng)的位移,再把位移信息發(fā)送給PC機(jī)。
鼠標(biāo)的按鍵是典型的開關(guān),每個(gè)開關(guān)和nRF9E5的一個(gè)GPIO口相連。與開關(guān)相連的GPIO口配置為輸入狀態(tài),并通過外部上拉電阻把其置高。按鍵在被按下的時(shí)候可能會(huì)出現(xiàn)抖動(dòng),所以在軟件設(shè)計(jì)的時(shí)候一般要考慮到去抖動(dòng),一般的方法是延時(shí)15-25ms再去檢測(cè)按鍵。一般的鼠標(biāo)按鍵有:左鍵、中鍵和右鍵。系統(tǒng)原理圖如圖3所示。
射頻部分基于nRF9E5設(shè)計(jì),系統(tǒng)晶振為16MHz,EEPROM存儲(chǔ)程序,使用nRF9E5的ShockBurstTM工作方式發(fā)送鼠標(biāo)信息包。ShockBurstTM工作方式在芯片硬件設(shè)計(jì)時(shí)就已經(jīng)考慮到節(jié)能,因此使用該工作方式可以延長(zhǎng)電池壽命。
5. 無線光機(jī)鼠標(biāo)電池壽命算法[2]
5.1工作狀態(tài)分析
無線光機(jī)鼠標(biāo)中,最耗電是紅外發(fā)光二極管,而不是射頻收發(fā)部分,因此,要使發(fā)光二極管盡量少耗電并且鼠標(biāo)又能正常工作。下文給出一個(gè)節(jié)電的方法,首先把發(fā)光二極管的工作狀態(tài)分為以下三種:
狀態(tài)1:鼠標(biāo)在移動(dòng)并且要求以最大的精確度測(cè)出移動(dòng)信息。此狀態(tài)下,tledon=10us,tkedoff=200us,每隔10ms,鼠標(biāo)信息被精確算出并發(fā)送給PC機(jī)。
狀態(tài)2:鼠標(biāo)剛剛被用過但現(xiàn)在不用。此狀態(tài)下tledon=10us,tledoff=25000us。當(dāng)用戶再次拖動(dòng)鼠標(biāo)時(shí),也不會(huì)感覺得出25000us的短延時(shí)。鼠標(biāo)從狀態(tài)1進(jìn)入狀態(tài)2一般應(yīng)在5ms左右,當(dāng)鼠標(biāo)檢測(cè)到移動(dòng)時(shí),應(yīng)立刻從狀態(tài)2進(jìn)入狀態(tài)1。
狀態(tài)3:當(dāng)鼠標(biāo)很長(zhǎng)時(shí)間沒用時(shí),進(jìn)入狀態(tài)3。此狀態(tài)下tledon=10us,tledoff=100000us。同樣,很久沒有使用之后再次拖動(dòng)鼠標(biāo)時(shí),用戶感覺不出來100000us的延時(shí)。一旦檢測(cè)出鼠標(biāo)被移動(dòng)時(shí),鼠標(biāo)應(yīng)該馬上進(jìn)入狀態(tài)1,從狀態(tài)2進(jìn)入狀態(tài)3一般要1到2分鐘。
評(píng)論