唐靈俊, 楊旸, 周思柱, 李寧
(長江大學 機械工程學院,湖北 荊州 434020)
鼠標按照其工作原理可分為機械式和光電式,機械式鼠標的位移檢測原理與光電傳感器的原理相同,由鼠標底部的小球帶動光電碼盤旋轉,然后通過光電檢測部分讀取碼盤轉過的柵格數(shù)目從而換算得到線位移大小。目前95%以上用戶使用的是光電鼠標,機械鼠標漸漸被淘汰,本文對此情況采取廢物利用,通過Visual Basic語言開發(fā)軟件,讀取鼠標指針數(shù)據(jù),實現(xiàn)角位移檢測。該方法最大的優(yōu)點是:無需開發(fā)單片機,直接將機械鼠標的光電模塊及光電碼盤取出安裝到被測轉軸上,在電腦上運行軟件就能夠讀取角位移參數(shù)。適合任何需要快速測量物體角位移的場合,即插即用,且精度較高。
不管是機械鼠標還是光電鼠標,其功能都是用來檢測鼠標在桌面上移動的距離和方向,從而來幫助人們將電腦屏幕上的鼠標指針移動到正確的位置。機械鼠標移動時,靠桌面的摩擦力帶動鼠標底部的小球滾動,小球驅動在X軸和Y軸方向布置的2個光電碼盤轉動。光電碼盤上一般有36個柵格,在碼盤兩側分別有1個紅外發(fā)光二極管和1個光電探頭,碼盤每轉過1個柵格,光線被遮擋1次,光電探頭對應產(chǎn)生2路電脈沖,一路用于判別碼盤轉動的方向。電脈沖經(jīng)過電路及鼠標芯片處理后將碼盤轉過的角度及方向發(fā)送給電腦。
EM84510EP是專門為機械鼠標設計的一款基于PS/2通信協(xié)議的芯片,芯片內(nèi)部設有濾波放大電路,用來對光電探頭發(fā)出的脈沖信號進行濾波、整形和幅值調(diào)整。因此光電探頭的輸出管腳可以直接和這款芯片引腳相連接。另外當光電碼盤的孔的邊緣處于將光線半遮半閉的位置,光電探頭就會發(fā)出許多虛假信號。這款芯片也內(nèi)置了防抖動電路,能夠自動去除虛假信號。由于這款芯片是專門為鼠標設計的,因此該芯片還有一個增速功能。其具體原理是當光電碼盤轉速加快時,芯片會自動在光電探頭輸入的脈沖數(shù)目的基礎上加上一些脈沖,這使得光電碼盤在轉過相同的轉角的情況下,由于轉速的增加卻讓鼠標指針得到更多的位移。這個功能使得光電碼盤轉過的角度與電腦得到的脈沖數(shù)目呈非線性關系,不利于用來測量角度。但可以在軟件程序中,通過電腦和鼠標芯片的通訊讓芯片關閉這項功能,保證電腦得到的脈沖數(shù)能夠真正反映光電碼盤轉過的角度。鼠標芯片的采樣率是100次/s,每次采樣最多可以接受到28=256脈沖,因此對于一個36孔的光電碼盤,其最大轉速不應超過710 r/s。鼠標芯片的存儲溫度范圍是-65~150℃,因此在較為惡劣的環(huán)境下,用該芯片設計制作的角度傳感器依舊能正常工作。
圖1 脈沖處理電路圖
圖2 齒輪增速機構
將機械鼠標改造成為角度傳感器,只需要用到其光電碼盤及光電檢測模塊,因此可以將鼠標的電路圖簡化成如圖1所示的形式,包括發(fā)光二極管、光敏三級管、鼠標芯片。
光電碼盤每轉過1周能夠產(chǎn)生36個脈沖,再由鼠標芯片進行4倍頻細分,使得光電編碼器每轉能夠產(chǎn)生36×4=144個脈沖。即最小能夠分辨的角度是360°÷144=2.5°,顯然精度不夠高,因此我們可以在光電碼盤前端加上兩級齒輪傳動,來將分辨率放大16倍,其最小能夠分辨的角度是 360°÷(144×16)=0.15°≈0.2°,如圖2所示。鼠標光電碼盤的大小一般為20mm,考慮到尺寸的搭配,齒輪可以選用玩具車上的塑料齒輪,這種齒輪價格十分便宜。其模數(shù)一般為0.5 mm,如:1、3號齒輪可以選用40齒(直徑 20 mm),2、4號齒輪選用10齒(直徑5 mm)。
軟件設計采用Visual Basic語言編程。程序包含兩個部分,第一部分是將芯片初始化設置,去除自動加速功能。其具體方法是,程序向芯片發(fā)送十六進制代碼E7,命令芯片關閉自動加速功能,當收到應答FA后,表明設置完成。加速功能去除后,程序執(zhí)行第二部分,檢測并計算碼盤轉角位移及速度。該部分程序中包含1個時鐘控件Timer和1個計數(shù)器Counter。當光電碼盤順時針轉過1個柵格時,計數(shù)器Counter加1,逆時針減1,由此可以求得角位移。將位移對時間進行微分,即可求得角速度,其具體方法是,時鐘控件每秒觸發(fā)1次,并記錄下計數(shù)器當前值與前一秒的差值Ti。
角位移計算公式
式中:Ci為計數(shù)器Counter的值;N為齒輪1轉1圈后電腦接收到的脈沖數(shù)。
角速度計算公式
式中:Ti為時鐘控件記錄下的計數(shù)器前后2s的差值,rad/s;
一般機械鼠標采用PS/2串口輸出,對于一些不支持PS/2接口的電腦,采用一根PS/2轉USB串口數(shù)據(jù)線就能將設備插入電腦。當設備插入電腦后,電腦實際上會將該設備識別為鼠標設備,因此當光電碼盤旋轉的過程中,鼠標指針也會做出相應運動。從而鼠標指針移動的步數(shù)可以準確地反映碼盤轉過的柵格數(shù)目。通過捕捉鼠標指針,可以使得計數(shù)器Counter的數(shù)值隨著指針同步變化。然而當碼盤總是朝著一個方向轉動,鼠標指針可能超出邊界而停止。對此可以在程序中加入一個判斷函數(shù),當指針超過邊界時,立刻通過 SetCursorPos(X0,Y0)函數(shù)將指針調(diào)回原點重新運動。程序流程圖如圖3所示。
圖3 程序流程圖
本文提供了一種可快速將機械鼠標改造成為角度傳感器的方法,能夠實現(xiàn)一定精度的任意范圍的角度測量.經(jīng)過測試,其性能穩(wěn)定。該方法最大的優(yōu)點是無需開發(fā)單片機或者考慮外設與電腦的通訊協(xié)議,只需通過簡單的編程或者直接運行本文所給出的程序代碼,就能快速實現(xiàn)角位移及角速度的測量。
[1] 汪卓飛.一種高精度角度傳感器的研究[D].杭州:浙江工業(yè)大學,2009.
[2] 李文強,楊錄,田二明.利用機械鼠標實現(xiàn)高精度位置檢測[J].機械工程與自化,2008(3):180-182.
[3] 陳曦.PS/2接口協(xié)議解析及應用[J].國外電子元器件,2004(4):14-18.
[4] 戰(zhàn)延謀,王卓柱,周皓,等.基于鼠標芯片TP8452的方向角傳感器設計[J].計算機測量與控制,2007,15(6):834-836.
[5] 何緒蘭,林財興.PS/2鼠標驅動關鍵問題的研究及程序實現(xiàn)[J].現(xiàn)代機械,2011(3):68-72.
[6] 李文強,楊錄,田二明.利用機械鼠標實現(xiàn)高精度位置檢測[J].機械工程與自動化,2008(3):180-182.