【摘要】普通鼠標由于在外殼防護、操作環境、抗砸耐磨等方面不能很好地滿足工業控制現場需求而無法在工業控制中使用,本文設計了一種基于單片機的按鍵式USB鼠標,能夠滿足工業控制應用。鼠標采用單片機作為控制核心,單片機程序實現對按鍵信號的采集、濾波,并將按鍵信號根據HID協議轉換成標準的USB鼠標信號。
【關鍵詞】單片機;按鍵;USB;鼠標
引言
在工業控制系統中,常常需要用鼠標對控制器進行操作,但普通商業鼠標由于其以下特性無法滿足某些工業現場的惡劣環境。
外殼防護等級達不到要求。很多工業現場水汽和粉塵比較大,普通鼠標的左鍵和右鍵沒有特別的防護,水汽進入鼠標內會對鼠標本身造成損壞,粉塵進入到按鍵的縫隙會導致操作不靈活。
操作環境達不到要求。普通鼠標需要一個干凈整齊的操作面,很多工業現場環境下很難提供這樣一個操作面,即便單獨設計一個操作面,粉塵和雜物也需要經常清理,若清理不及時,操作不靈活,對控制系統的穩定性會造成影響。
抗砸等級達不到要求。很多工業現場工料、雜物滾落時有發生,普通鼠標多為塑料外殼,容易損壞。
本文設計了一種能夠滿足工業現場要求的基于單片機的按鍵式USB鼠標,可保證工業控制系統的穩定易用。
1.鼠標操作方式
鼠標操作方式采用全部按鍵操作,左鍵、右鍵跟普通鼠標一樣,采用按鍵操作,光標的移動也采用按鍵操作,用上下左右四個鍵來模擬光標的移動。鼠標按鍵分布如圖1所示。
圖1 按鍵分布
按鍵及基板均采用不銹鋼材質,抗砸耐磨。按鍵采用防塵防水設計,不易損壞。
2.鼠標接口
普通鼠標的接口有兩種方式:PS/2和USB,PS/2是早期的一種接口方式,現在使用更廣泛的是USB接口[1]。為了使設計的鼠標具有更好的通用性,鼠標采用USB接口。在Windows操作系統下,鼠標必須滿足HID(Human Interface Device)協議[2],才能被操作系統識別,這需要軟件設計來實現。采用單片機實現各個按鍵信號的采集和HID協議的處理。
電路原理如圖2所示。鼠標上的6個按鍵輸出均為無源常開接點信號,經過隔離后單片機可以直接采集。隔離采用光耦隔離技術,在端口采集的電路中,隔離可有效保護單片機不受外部干擾信號的影響,保證程序的穩定運行。在信號采集的程序中,由于單片機的運行周期很短,必須要對信號進行濾波處理,不然會產品信號抖動。本設計采用的濾波方式是定時計數濾波方式,每隔一定的時間(如20ms)采集一次信號,如果此次采集的信號跟上次采集的相同,則計數加1,如果不同,則計數清零。當計數達到一定數值(如10),則認為信號已穩定,該信號的狀態就可以被后續程序處理。
圖2 電路原理
在單片機的設計中,看門狗電路的設計關乎系統的穩定。單片機程序在循環運行過程中,容易受到外界干擾產生跑飛的現場,看門狗電路就是為了防止程序跑飛設計的。看門狗電路的原理如下:單片機程序的運行過程中,每隔循環周期都會向看門狗芯片寫入一個信號,這個信號可以是電平信號,也可以是串行通信信號(如SPI、I2C等),看門狗芯片在一定時間內沒有收到這個信號就認定為程序跑飛,然后看門狗芯片向單片機的復位管腳輸出一個復位信號,然單片機實現熱復位,從而實現程序從頭開始運行,確保程序不會產生錯誤。
3.HID協議實現方法
3.1 HID簡介
HID(Human Interface Device)[3]人機接口設備類別是Windows最早支持的USB類別。HID設備是計算機直接與人交互的設備,例如鍵盤、鼠標和游戲桿等。不過HID設備不一定要有人機接口,只要符合HID類別規范,就都是HID設備。HID設備可以低速設備也可以是全速設備,主要適用于傳輸數據量不大、數據具有突發性、無固定傳輸速率的應用場所。
3.2 程序設計
HID設備的程序設計的核心是對主機(如計算機)的請求作出響應,請求可以控制傳輸請求,也可以使數據傳輸請求。軟件開發的主要工作是編寫USB的中斷服務程序,中斷服務程序首先判斷中斷的類型,然后根據中斷類型及其他相關信息,轉入相應的協議處理程序,根據協議處理的結果,完成相應的通信。在本設計中,由于是用上下左右鍵來模擬光標的運行,而在HID協議中,光標的數據應該是一個坐標,這就需要程序講上下左右鍵遞增出來的數據轉換為坐標值。光標的移動速度,不同的應用場所、不同的用戶都會有變化,難以統一,為了解決這個問題,這里做了一個通用性的設計,基本原理如下:用戶按住其中一個鍵,則光標開始向這個方向移動,開始以一個較慢的速度一定,隨著時間的積累,移動的速度越來越快,這樣可以保證用戶操作的準確性和光標移動的效率。在成成設計中需要對按鍵信號進行定時,不同的時間,坐標的遞增系數不同。
4.結語
本文設計的按鍵式USB鼠標耐磨抗砸,使用壽命長。鼠標采用單片機作為控制核心,單片機程序實現對按鍵信號的采集、濾波,并將按鍵信號根據HID協議轉換成標準的USB鼠標信號。本設計對于提高控制系統的可操作性和穩定性能起到一定的推進作用。
參考文獻
[1]任軍首,汪世林.基于STC89C52單片機的USB鼠標的設計[J].福建電腦,2011(5):107-129.
[2]吳曉莉.人機手控操縱原理在鼠標設計中的應用[J].機械設計與研究,2009(4):77-79.
[3]王恒升,匡洋,彭宏道.USB HID類設備小驅動程序開發[J].控制工程,2010(6):815-819.
作者簡介:趙樹有(1982—),男,河北滄州人,工程師。