<meter id="pryje"><nav id="pryje"><delect id="pryje"></delect></nav></meter>
          <label id="pryje"></label>

          關 閉

          新聞中心

          EEPW首頁 > 工控自動化 > 設計應用 > 基于微機電系統(tǒng)的無線鼠標方案

          基于微機電系統(tǒng)的無線鼠標方案

          作者: 時間:2011-08-24 來源:網(wǎng)絡 收藏

          本文引用地址:http://www.ex-cimer.com/article/202426.htm

            2.2.4 按鍵

            鼠標按鍵采用標準開關,每個開關直接連到ATmega16 的通用輸入輸出(GPIO)口, GPIO被配置成輸入引腳,每個引腳可以單獨地選擇上拉電阻,單片機檢測按鍵操作,軟件進行按鍵去抖處理和實現(xiàn)噪聲抑制功能,然后通過藍牙芯片發(fā)射出按鍵信息。

            2.2.5 藍牙模塊發(fā)射芯片

            nRF2402是單片2.4 ~2.5GHz射頻發(fā)射芯片, 發(fā)射器包含頻率合成器、功放、晶體振蕩器和調(diào)制器 ,輸出功率和信道選擇很容易通過3-線接口編程實現(xiàn), 在輸 出功率為-5dBm時電流消耗僅10mA ,內(nèi)置的ShockBurst技術以及休眠模式用來降低發(fā)送數(shù)據(jù)的電流消耗 ,以延長電池使用壽命 ,并且向pc發(fā)送的數(shù)據(jù)包也應盡可能少(取采樣速率為100采樣點/秒)。ShockBurst技術使用片內(nèi)先入先出堆棧(FIFO)低速處理數(shù)據(jù)(10Kbps)而高速發(fā)送數(shù)據(jù)(1Mbps)。

            該設計需要一個16MHz的晶體振蕩器和一個外部的EPROM用來固件存儲。固件將使用ShockBurst技術從鼠標發(fā)送RF數(shù)據(jù)包。其中固件必須完成下列任務:

            裝載地址(ADDR)和有效載荷(PAYLOAD);

            計算循環(huán)冗余檢查(CRC);

            添加信息位(PRE);

            使用ShockBurst技術發(fā)送數(shù)據(jù)包;

            數(shù)據(jù)包發(fā)送完成回到休眠模式。

            2.3 接收端

            2.3.1 藍牙收發(fā)芯片

            接收器是將nRF2401收發(fā)芯片配置成接收模式(RX),其性能類似發(fā)射芯片,但該芯片采用Duo2Ceiver同步雙通道接收技術,這樣就可以實現(xiàn)鼠標和鍵盤的無線控制(在此我們僅考慮鼠標的使用)。誤差控制其固件必須完成下列任務:

            當nRF2401作為ShockBurst的接收器時,設置正確的地址和接收到的RF數(shù)據(jù)包的有效載荷長度;

            激活RX,并設CE為高;

            等待200μs后,nRF2401處于等待接收數(shù)據(jù)狀態(tài);

            當有效數(shù)據(jù)包正確的ADDR和CRC信息接收到后,nRF2401去除數(shù)據(jù)包中的附加信息、地址和循環(huán)冗余檢查位;

            nRF2401通知MCU使DR1設置為高;

            MCU設置CE為低也可能不設置為低 使芯片處于低電流模式;

            MCU以一定的速率記錄有效載荷信息;

            當?shù)玫接行лd荷后nRF2402設置DR1為低。如果CE為高則準備接收新的數(shù)據(jù)包 ,如果CE為低,則重新開始起始序列。

            2.3.2 PCB天線設計

            為實現(xiàn)2.4GHz低功耗射頻器件nRF2401和nRF2402 的小尺寸、易制造和低成本特點,在PCB上選用1/4波長單極天線是一個理想的解決。但是如同其他天線一樣 , 1/4 波長單極天線的增益會由于殼體材料、與接地面(ground p lane)接地面的尺寸以及PCB天線的寬度和厚度等參數(shù)的改變而發(fā)生變化,因此單極PCB天線的長度必須的改變而發(fā)生變化,因此單極PCB天線的長度必須優(yōu)化。在本中,天線采用標準1.6mm材料,其相對介電常數(shù)為4.4,天線的寬度W=1.5 mm,通過計算可得到單極天線周圍物質(zhì)的介電常數(shù)為3.16,從而在該條件下波長為 68.9mm。在PCB基底上選用印制1/4波長單極天線的長度L=17.2 mm ,為了使得天線在 2.4GHz更容易諧振,天線的長度可適當延長,本中選天線長度L =22mm的類“┓”型設計,是PCB天線制作較為合理的一種方法,大大節(jié)省了PCB板的面積,同時在規(guī)定PCB板面積的條件下應保證天線的開口端和接地面之間的距離d盡可能大,實現(xiàn)信號高精度、高增益的準確發(fā)射和接收。

            2.3.3 帶USB接口的單片機

            USB設備具有即插即用、熱插拔等優(yōu)勢 ,鼠標采用USB接口必將成為一種趨勢,因此我們采用帶USB收發(fā)器的單片機CY7C637xx系列。該系列是采用高性能8位精簡指令(RISC)結構,集成了USB串行接口引擎(SIE)的單片機 ,其內(nèi)置了時鐘振蕩器、計時器、可編程電流驅(qū)動以及在每個I/O口線上的上拉電阻,可以用極少量的外部元件和簡單的固件編程實現(xiàn)高性能低成本的人機交互設備(HID)。

            軟件部分對接收的RF數(shù)據(jù)包進行譯碼,并經(jīng)過處理轉換為符合鼠標USB協(xié)議的數(shù)據(jù)包格式送到PC機,以及完成為實現(xiàn)鼠標功能所需的固件的編寫。當USB器件第一次連到總線,總線供電,D-的上拉電阻報告集線器連接一低速(1.5Mbps)USB器件,主機識別這個USB器件,總線重啟。主機接收到器件的描述符后賦予器件一個新的地址,這樣器件和主機通過這個新的地址進行數(shù)據(jù)通信。

            2.4 節(jié)能考慮

            單片機可通過軟件選擇省電方式:閑置方式停止CPU的工作 ,而SRAM、定時 /計數(shù)器、SPI口及中斷系統(tǒng)繼續(xù)工作;掉電方式保留寄存器的內(nèi)容,但停止晶振,終止芯片的其他功能,直至下一次外部中斷或硬件復位。藍牙芯片則通過配置特殊寄存器,可使芯片工作在ShockBurst無線方式,并支持休眠模式和掉電模式,可實現(xiàn)數(shù)據(jù)的超低功耗傳輸,因此,對于用電池供電的鼠標器發(fā)射端無疑延長了其使用時間。

            3 結語

            本文詳細討論了基于微加速度傳感器的MEMS的軟件、硬件設計和系統(tǒng)構成,并給出了Matlab環(huán)境下系統(tǒng)的simulink模型和算法,模擬的結果證明:的設計是合理可行的,文中提出的二次積分近似算法是簡捷有效的;文中討論的二維鼠標的設計技術,能為進一步研究多維多功能的MEMS輸入設備打下很好的基礎。本文選擇硬件時,充分考慮了系統(tǒng)向多維和多功能擴展的可能性,可以在此二維鼠標的基礎上再添加一些器件,構成功能更多更完善的MEMS輸入設備,例如:可以再添加一個微加速度傳感器來感測Z軸的加速度,從而實現(xiàn)三維鼠標,可以實現(xiàn)對三維立體旋轉等的控制;也可以利用nRF2401射頻收發(fā)器內(nèi)置的多點通信控制的特性,再多增加幾個接收模塊,可以同時控制多臺主機,或多增加幾個發(fā)射模塊,用幾個輸入設備來控制同一臺主機,以適應不同應用場合的需要。

            另外,基于MEMS技術的無線鼠標很容易向三維空間使用拓展,這樣就能為很多場合,尤其是作演講時提供很大的方便,具有很大的應用價值。


          上一頁 1 2 3 4 下一頁

          評論


          相關推薦

          技術專區(qū)

          關閉
          看屁屁www成人影院,亚洲人妻成人图片,亚洲精品成人午夜在线,日韩在线 欧美成人 (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })();