摘要:安捷倫(Agilent)公司的HDNS2000芯片是一種高性能的運動檢測器件,在目前的光學鼠標中應用廣泛,其易用性和廉價性使其非常適合應用于中低精度的運動和位置檢測中。本文介紹HDNS2000的功能、特點,從硬件與軟件兩個方面討論HDNS2000與AVR單片機的接口設計。
在機電產(chǎn)品設計中,有時需要檢測物體間的相對運動,包括運動方向和運動距離。若采用機械式的結(jié)構(gòu),比如機械鼠標中的滾輪和軌跡球,則會由于頻繁的機械運動而發(fā)生故障,導致精度下降甚至失效,維修起來也不方便。另外它需要兩個物體表面相接觸,靠相互間的摩擦進行工作,這在某些場合是不能允許的。解決方案之一就是采用光電器件,運用光學原理來測定運動。安捷倫公司的HDNS2000就是為此而設計的,雖然它的市場是針對光學鼠標,但也可以作為一種高性能而又廉價的器件運用于工業(yè)控制領域中。
1 HDNS2000芯片介紹
1.1 主要功能與特性
HDNS2000是安捷倫推出的高性能的光學感測芯片,它的內(nèi)部包含三個基本模塊:圖像拾取系統(tǒng)、DSP處理器、PS/2或四狀態(tài)輸出轉(zhuǎn)換器,如圖1所示。在HDNS2000芯片的底部有一個感光眼,如同一個小型的攝像頭,不斷地對物體表面進行拍照,接著將前后兩次的圖像送入DSP中進行處理,以判斷物體移動的方向和大小,最后將數(shù)據(jù)轉(zhuǎn)化為PS/2格式或者以兩通道四狀態(tài)格式輸出。圖2中的(a)與(b)分別為芯片前后兩次拾取的圖像。比較圖2中的(a)和(b)可以看出,物體向左下方移動了一點。
HDNS2000的圖像拾取系統(tǒng)每秒鐘可以拾取1500張圖像,可以精確地測量最高30.48 cm/s(12 英寸/s)的運動,解析度為400點每英寸。
1.2 引腳介紹
HDNS2000的主要引腳框圖如圖3所示。
PS2_C:PS/2接口的時鐘端。
MODE/XA:復用引腳,接高電平時表示選擇PS/2模式;否則,為XA輸出。
RB/XB:復用引腳,PS/2模式時為鼠標右鍵輸入;否則,為XA輸出。
MB/YB:復用引腳,PS/2模式時為鼠標中鍵輸入;否則,為YB輸出。
LB/YA:復用引腳,PS/2模式為鼠標左鍵輸入;否則,為YA輸出。
XY_LED:激光LED控制輸出,在物體長時間不移動時,HDNS2000可以控制LED關閉,以節(jié)約能量。
VDD3:3.3 V直流電源輸入。
REFB:內(nèi)部參考引腳,通過電容與VDD3相連。
PS2_D :PS/2接口的數(shù)據(jù)端。
NRESET:低電平復位引腳。
VDD5:5 V直流電源輸入。
GND:電源地。
OSC2:晶振輸出。
OSC1:晶振輸入,外接18.432 MHz晶振。
2 HDNS2000與AVR單片機接口設計
2.1 HDNS2000與AT90S8015接口
HDNS2000直接提供有PS/2接口,方便了PS/2鼠標的設計;但在機電控制中,為了提高效率,宜直接采用HDNS2000的另一種輸出模式,即X向與Y向兩通道四狀態(tài)輸出模式。此時XA、XB指示X向移動狀態(tài),而YA、YB指示Y向移動狀態(tài)。圖 4為HDNS2000與AVR單片機AT90S8515的接口原理圖。接口主要占用了4個引腳,其它兩個是可選的,所以,即使是AVR中最低檔的ATtiny系列也可以方便地與HDNS2000連接。
圖4 HDNS2000與AT90S8015接口原理圖
另外在對節(jié)能要求不高的場合,可以將激光LED的一端直接與地相連接,而通過控制開關三極管2N3906來主動控制HDNS2000的工作狀態(tài)。本文作者在設計時正是采用的這種方式。在進行系統(tǒng)設計時,最好采用安捷倫公司提供的套件,其中包括HDNS2000芯片、HDNS2100透鏡、HDNS2200 激光LED卡件及HLMP-ED80激光LED,激光波長為639 nm。
2.2 四位狀態(tài)機的工作過程
在HDNS2000內(nèi)部有兩個狀態(tài)機分別指示X、Y兩個方向,每個狀態(tài)機又有四個穩(wěn)定的狀態(tài)。圖5是狀態(tài)機的示意圖。由圖5可見,一開始系統(tǒng)處于狀態(tài)0,每當檢測到物體向正向或反向移動1個單位時就轉(zhuǎn)移到下一個狀態(tài),所以只要連續(xù)監(jiān)測狀態(tài)機狀態(tài)的變化就可以判斷物體移動的方向和距離。圖6(a)和(b)分別為負向移動和正向移動時狀態(tài)機輸出的波形。值得注意的是,每個狀態(tài)的最少停留時間為133μs。
2.3 接口軟件設計
由狀態(tài)機輸出波形圖可以看出,有一種很簡單自然的接口設計方法,就是將狀態(tài)輸出引腳接到單片機的外部中斷引腳上,使其在每個波形的上下邊沿都產(chǎn)生中斷,再在中斷處理程序中,檢測另一對應波形的電平高低,就可以判斷移動方向。比如在XA的上升沿時,若XB是低電平就是左移,若XB是高電平就是右移。這種方法需要單片機提供足夠多的外部中斷。若同時檢測X向與Y向運動,且單片機1個引腳不能同時提供上升沿和下降沿中斷的情況下,就需要占用8個中斷、8條引腳;而目前許多單片機僅提供2個外部中斷引腳,這種要求顯然較為苛刻。
另一種方式就是降低精度要求,僅在XA與YA的上升沿進行檢測,此時僅需要2個外部中斷引腳。但這種方式在一種極端條件下會出錯,讀者可以自行分析。若只檢測X一個方向,則可以同時檢測上下沿中斷,這樣不會出錯。這種方式犧牲了一點對運動換向和震顫的敏感度;但編程簡單,不失為一種好方法。
本文采用的是查詢方式,這種方式不占用任何中斷,且能夠不損精度地同時檢測X向與Y向運動。前面已經(jīng)提過,每個狀態(tài)的最小保持時間為133 μs,所以,只要將查詢的周期控制在60μs之下就可以抓住每個狀態(tài)的變化。對于AT90S8515,若按晶振為8 MHz計算,則只需將查詢周期匯編指令數(shù)控制在450條以下就可以了。實際上,以下給出的C語言程序經(jīng)過編譯后只有不大于60條匯編指令,完全能夠滿足系統(tǒng)要求。
該方法的基本思想是將狀態(tài)機的前一狀態(tài)與現(xiàn)在的狀態(tài)組合在同一字節(jié)內(nèi),如表1所列,尋找其中的規(guī)律,簡化程序設計。表1中以PRE開頭的表示前一狀態(tài)的對應值。
表1 組合前后兩狀態(tài)在同一字節(jié)
位bit | 3 | 2 | 1 | 0 |
值 | XA | XB | PRE_XA | PRE_XB |
位bit | 7 | 6 | 5 | 4 |
值 | YA | YB | PRE_YA | PRE_YB |
以X向移動為例(僅看前半字節(jié)),正向移動時對應的值為0b1000、0b1110、0b0111、0b0001,負向移動時對應的值為0b0010、0b1011、0b1101、0b0100。假設狀態(tài)不變的情況已經(jīng)排除,且查詢周期足夠短,不會出現(xiàn)相對周期的組合值。所以只要能將以上兩組值區(qū)分開來就可以了,這也正是程序中兩條條件判斷語句的目的。讀者可以對照程序自行驗證。接口程序如下:
while(1){
state=PINA&0xcc;
state_change=state^pre_state;
combo_state=sate | (pre_state>>2);
if(state_change & 0x0c)
{
if((combo_state & 0x06) == 0x06)
{asm("INC R20");goto next;}
if((combo_state | 0x09) == 0x09)
{asm("INC R20");goto next;}
asm("DEC R20");
}
next:
if(state_change & 0xc0)
{
if((temp & 0x60) == 0x60)
{asm("INC R21");goto end;}
if((temp | 0x90) == 0x90)
{asm("INC R21");goto end;}
asm("DEC R21");
}
end:pre_state=state;}
程序已經(jīng)事先定義了寄存器R20與R21分別為X、Y向的計數(shù)器,用來表示X、Y向移動的距離。以上程序段利用內(nèi)嵌匯編語句優(yōu)化了程序結(jié)構(gòu)。實際上,還可以對編譯器生成的匯編代碼進行優(yōu)化,這里就不再詳述了。
結(jié) 語
以上軟硬件接口設計雖然是以功能強大的AVR單片機作為例子,但通過仔細分析不難發(fā)現(xiàn),在簡單的應用場合,用普通的51單片機,甚至如AT89C2051在12 MHz晶振頻率下也可以實現(xiàn)其功能。所以整個系統(tǒng)會是相當廉價的。
安捷倫公司最近在繼HDNS2000之后,又推出了升級芯片HDNS2051和適于無線應用的芯片HDNS2030,除了更強的處理能力外,主要改進還在于采用了單電源供電,提供了省電模式,去掉了不實用的PS/2接口,引入了同步串行口,允許用戶對分辨率進行設置等。這些改進極大地方便了用戶的使用,一方面擴大了其光學感測芯片市場占有率,另一方面無疑也為機電產(chǎn)品設計者提供了一種更強大、更方便、更廉價的運動檢測方案。
- HDNS(6704)
相關推薦
中圖儀器光學3D表面輪廓儀在光學行業(yè)中的應用
光學傳感器在電子應用中的作用
在運動控制中,傳感器是控制的關鍵部分
AD芯片在調(diào)試過程中遇到的問題,應該怎么解決?
ADXL362有時無法產(chǎn)生運動中斷是怎么回事?如何解決?
Avago兩款發(fā)光LED光學導航傳感器
Avago推出SoC系統(tǒng)級芯片和光學導航傳感器產(chǎn)品
DM368運動檢測功能問題,求助。
ESSE觸控芯片在方案應用中遇到的問題怎么解決
HCTL-2020 解碼器及其在多關節(jié)機器人運動控制中的應用
SIEMENS ppi協(xié)議在運動控制中的應用是什么?
SMD-240912CW-02運動檢測器模塊
SMD-240912PS-02運動檢測器模塊
ST多軸運動傳感器模塊實現(xiàn)精確的運動檢測功能
Sub-1 GHz無線運動檢測器系統(tǒng)
TMS320F28035芯片在運行過程中時常出現(xiàn)宕機現(xiàn)象
TheUMS與Wi-Fi相結(jié)合的超小型雷達運動檢測傳感器
UAA4713運動檢測器接口芯片相關資料分享
adxl362使用在高溫環(huán)境時,在靜止狀態(tài)下進入運動模式
光電鼠標電路原理分析
加速度傳感器的原理和應用-手機翻轉(zhuǎn)、失重檢測、運動檢測、位置識別
基于圖像處理的PCB自動檢測系統(tǒng)的設計與研究(第一部分)
封裝天線設計簡化毫米波在樓宇和工廠中感測的教程
怎么通過五種運動檢測模式實現(xiàn)應用產(chǎn)品的變革?
求助運動檢測傳感器選型
用于自動檢測的板測寬儀
請問ADXL362有時無法產(chǎn)生運動中斷是什么原因?
轉(zhuǎn):運動檢測及測速GUI
采用16-bit MCU的超低功耗運動檢測系統(tǒng)解決方案介紹
視頻序列中的運動目標檢測
![](https://skin.elecfans.com/images/2021-soft/load.png)
雷達故障自動檢測系統(tǒng)
![](https://skin.elecfans.com/images/2021-soft/load.png)
光電鼠標芯片組在無接觸檢測運動物體中的應用
![](https://skin.elecfans.com/images/2021-soft/load.png)
基于背景差分的人體運動檢測
![](https://skin.elecfans.com/images/2021-soft/load.png)
CAN總線在糧情自動檢測系統(tǒng)中的應用
![](https://skin.elecfans.com/images/2021-soft/eye.png)
![](https://file1.elecfans.com//web2/M00/A4/F3/wKgZomUMNlKAFUH9AABYd3Y7Qgw694.jpg)
一種用CPLD實現(xiàn)視頻信號運動檢測的方法
![](https://skin.elecfans.com/images/2021-soft/eye.png)
![](https://file1.elecfans.com//web2/M00/A5/0B/wKgZomUMNq-AQBXHAABrbHfhYw0154.gif)
ST多軸運動傳感器模塊實現(xiàn)精確的運動檢測功能
![](https://skin.elecfans.com/images/2021-soft/eye.png)
一種帶有運動檢測功能的無線圖像監(jiān)控終端
![](https://skin.elecfans.com/images/2021-soft/eye.png)
![](https://file1.elecfans.com//web2/M00/A5/71/wKgZomUMOHWAJNZtAABbu8m83N4917.gif)
運動檢測和視覺跟蹤的智能監(jiān)控系統(tǒng)
![](https://skin.elecfans.com/images/2021-soft/load.png)
聚焦醫(yī)療應用:ADI MEMS運動檢測技術顯身手
![](https://skin.elecfans.com/images/2021-soft/eye.png)
光流法在運動目標識別領域的理論與應用
![](https://skin.elecfans.com/images/2021-soft/load.png)
運動檢測新秀:首款監(jiān)測心率的SMART自行車頭盔
![](https://skin.elecfans.com/images/2021-soft/eye.png)
建立無線運動檢測系統(tǒng)
![](https://skin.elecfans.com/images/2021-soft/load.png)
降壓升壓轉(zhuǎn)換器有助于延長電池壽命的運動檢測
![](https://skin.elecfans.com/images/2021-soft/load.png)
設計具有Sub-1 GHz的無線運動檢測器系統(tǒng)
![](https://skin.elecfans.com/images/2021-soft/eye.png)
運動員身體形態(tài)輪廓自動檢測軟件設計
![](https://skin.elecfans.com/images/2021-soft/load.png)
利用無線保真信號進行人體運動檢測方法
![](https://skin.elecfans.com/images/2021-soft/load.png)
基于16-bit MCU實現(xiàn)超低功耗運動檢測系統(tǒng)解決方案[圖]
![](https://skin.elecfans.com/images/2021-soft/eye.png)
![](https://file.elecfans.com/web1/M00/45/0B/pIYBAFpgAU-AGZVwAAAWbzsyZOo091.jpg)
低功耗無線PIR運動檢測參考設計--TIDA-01476解決方案
![](https://skin.elecfans.com/images/2021-soft/eye.png)
使用高動態(tài)范圍對數(shù)傳感器和運動檢測軟件捕捉本地圖像
![](https://skin.elecfans.com/images/2021-soft/eye.png)
單芯片毫米波解決方案設計運動檢測系統(tǒng)
![](https://skin.elecfans.com/images/2021-soft/eye.png)
![](https://file.elecfans.com/web1/M00/8A/31/pIYBAFyLiWuAFLQAAABUABDgxfU556.png)
ISENSOR運動檢測技術的結(jié)構(gòu)、性能和應用
![](https://skin.elecfans.com/images/2021-soft/eye.png)
基于三軸數(shù)字加速度計的無線運動檢測監(jiān)控平臺
![](https://skin.elecfans.com/images/2021-soft/eye.png)
被動紅外運動傳感器在運動檢測領域中的應用
![](https://skin.elecfans.com/images/2021-soft/eye.png)
特斯拉研發(fā)運動檢測傳感器,可檢測留在車內(nèi)的兒童防中暑
![](https://skin.elecfans.com/images/2021-soft/eye.png)
基于被動紅外 (PIR) 的運動探測器
![](https://skin.elecfans.com/images/2021-soft/eye.png)
![](https://file.elecfans.com/web2/M00/01/F1/pYYBAGDKvP-APESaAAFsuEGrqPo873.png)
探究具有Sub-1 GHz的無線運動檢測器系統(tǒng)
![](https://skin.elecfans.com/images/2021-soft/eye.png)
使用Wi-Fi運動檢測的家庭安全和醫(yī)療保健
![](https://skin.elecfans.com/images/2021-soft/eye.png)
![](https://file.elecfans.com/web2/M00/4D/97/pYYBAGK1XTiADrZCAAAuvV59sJE719.png)
分享一個超聲波運動檢測器電路
![](https://skin.elecfans.com/images/2021-soft/eye.png)
![](https://file.elecfans.com/web2/M00/4E/AD/poYBAGK_ps2AKgT6AAII66iIWco072.png)
利用OpenCV構(gòu)建一個RaspberryPi運動檢測系統(tǒng)
![](https://skin.elecfans.com/images/2021-soft/eye.png)
![](https://file.elecfans.com/web2/M00/58/F6/poYBAGLnkwKAReK1AAdcy3HSpU4062.png)
PCBA生產(chǎn)中自動光學檢測(AOI)檢測的作用
![](https://skin.elecfans.com/images/2021-soft/eye.png)
使用ESP32CAM、Drive和Ubidots的運動檢測系統(tǒng)
![](https://skin.elecfans.com/images/2021-soft/load.png)
移動角度監(jiān)控和運動檢測系統(tǒng)
![](https://skin.elecfans.com/images/2021-soft/load.png)
運動檢測物聯(lián)網(wǎng)設備開源分享
![](https://skin.elecfans.com/images/2021-soft/load.png)
超聲波運動檢測器的電路圖分享
![](https://skin.elecfans.com/images/2021-soft/eye.png)
![](https://file.elecfans.com/web2/M00/99/27/poYBAGQWp1qAcGtgAAPa8b1X_P8315.png)
設計具有Sub-1 GHz的無線運動檢測器系統(tǒng)
![](https://skin.elecfans.com/images/2021-soft/eye.png)
具有NodeMCU和Blynk的物聯(lián)網(wǎng)運動檢測器
![](https://skin.elecfans.com/images/2021-soft/load.png)
PIR傳感器-使用IFTTT的電子郵件發(fā)送運動檢測器
![](https://skin.elecfans.com/images/2021-soft/load.png)
使用Raspberry Pi的Motioneyeos網(wǎng)絡攝像頭運動檢測
![](https://skin.elecfans.com/images/2021-soft/load.png)
python opencv運動檢測代碼分享
![](https://skin.elecfans.com/images/2021-soft/load.png)
雙面檢測aoi光學檢測儀詳細介紹
![](https://skin.elecfans.com/images/2021-soft/eye.png)
![](https://file1.elecfans.com/web2/M00/91/36/wKgZomTey2SAHtPMAAB3sh5mUIQ434.png)
采用tinyAVR 2系列實現(xiàn)高性價比的低功耗PIR運動檢測
![](https://skin.elecfans.com/images/2021-soft/load.png)
評論