|
|||||||||||
| 技術(shù)交流 | 電路欣賞 | 工控天地 | 數(shù)字廣電 | 通信技術(shù) | 電源技術(shù) | 測控之家 | EMC技術(shù) | ARM技術(shù) | EDA技術(shù) | PCB技術(shù) | 嵌入式系統(tǒng) 驅(qū)動編程 | 集成電路 | 器件替換 | 模擬技術(shù) | 新手園地 | 單 片 機 | DSP技術(shù) | MCU技術(shù) | IC 設(shè)計 | IC 產(chǎn)業(yè) | CAN-bus/DeviceNe |
關(guān)于光電編碼器的問題 |
| 作者:ela 欄目:單片機 |
我在做一個輪船姿態(tài)調(diào)整的題目。具體情況是這樣的,將增量式光電編碼器的軸接在模型船上,編碼器的輸出a,b接單片機,輪船傾斜之后使編碼器的軸轉(zhuǎn)動,從而產(chǎn)生輸出脈沖,通過單片機記錄脈沖數(shù)判斷傾斜角度,從而控制步進電機調(diào)整船體。現(xiàn)在我的問題是怎么才能實現(xiàn)計數(shù)呢,我產(chǎn)生的脈沖數(shù)是不定的,好像中斷不行吧,望各位高人不吝賜教。 這個應(yīng)該是實時控制的吧,計數(shù)值是不是沒有必要知道呢。大家有什么寶貴想法都來討論呀 |
| 2樓: | >>參與討論 |
| 作者: hujiahua 于 2005/5/3 9:54:00 發(fā)布:
不一定要用這種增量式的編碼器 你可以用絕對式的編碼器,就不用計數(shù)這么麻煩了,直接讀出數(shù)值就知道偏了多少位置了. |
|
| 3樓: | >>參與討論 |
| 作者: ela 于 2005/5/3 11:11:00 發(fā)布:
還是不太明白 我現(xiàn)在手頭只有增量式的編碼器,而且我想知道這個計數(shù)的過程是怎么實現(xiàn)的,絕對式的它不也得計數(shù)才能算出角度嗎(就算它是在內(nèi)部完成的)。還希望各位不吝賜教。 |
|
| 4樓: | >>參與討論 |
| 作者: hujiahua 于 2005/5/3 11:35:00 發(fā)布:
絕對式 絕對式不用計數(shù),它是將一個圓256,512,1024等分,編碼器轉(zhuǎn)到哪個角度就直接給出一個數(shù)值, 例如:33,45,255等. 不過輸出格式可能是格雷碼. * - 本貼最后修改時間:2005-5-3 12:01:58 修改者:hujiahua |
|
| 5樓: | >>參與討論 |
| 作者: hujiahua 于 2005/5/3 12:00:00 發(fā)布:
增量式 一般會有A,B,Z三個信號輸出,A,B兩個信號用于計數(shù)和判斷旋轉(zhuǎn)方向. A,B兩個信號均為50%占空比的方波輸出,用兩個信號的相位差判斷方向, 例如:A 超前 B 90度時為正轉(zhuǎn),則 B 超前 A 90度時為反轉(zhuǎn). Z信號為零信號,編碼器在轉(zhuǎn)過零點這個位置時會輸出一個脈沖. 這是一般增量式旋轉(zhuǎn)編碼器常用的信號格式,忘了具體叫什么,目前21IC上傳服務(wù)器進行調(diào)整, 所以不能上傳圖片,要不然貼個輸出信號波形會更直觀. |
|
| 6樓: | >>參與討論 |
| 作者: ela 于 2005/5/3 12:23:00 發(fā)布:
再問 謝謝樓上這位大哥熱心相助。但是編碼器的Z信號是編碼器轉(zhuǎn)了一周后給出一個這個信號,在我的系統(tǒng)中好像用不上啊。這樣的話還是只有AB兩個信號,關(guān)于鑒相的問題我已經(jīng)解決,而且我這個系統(tǒng)好像計數(shù)完事后再執(zhí)行某些操作是不行的,必須實時控制,所以現(xiàn)在我感覺應(yīng)該改成每隔一定時間對計數(shù)值進行采樣,控制步進電機工作。但是我想知道如果不是我這個系統(tǒng),也就是說不用調(diào)整,只用知道偏移角度就可以的地方,那么計數(shù)完畢后(這個數(shù)是不定的),怎么轉(zhuǎn)向相應(yīng)的處理程序呢,我怎么才能知道計數(shù)完畢了。 |
|
| 7樓: | >>參與討論 |
| 作者: ela 于 2005/5/3 17:05:00 發(fā)布:
期待中 期待中 |
|
| 8樓: | >>參與討論 |
| 作者: hujiahua 于 2005/5/3 19:46:00 發(fā)布:
我對你的系統(tǒng)不了解 你怎么判斷計數(shù)完畢 |
|
| 9樓: | >>參與討論 |
| 作者: fangkai 于 2005/5/3 22:08:00 發(fā)布:
回復(fù)主題:關(guān)于光電編碼器的問題 我是一個初學(xué)者,我也在做一個類似的東西,不過用的地方不同,我的想法是:單片機的運行速度要比物體位置變化的速度快得多,所以每隔一定時間讀一下和編碼器相連接的I/O口的狀態(tài),根據(jù)這次狀態(tài)與前面狀態(tài)的比較進行辨向計數(shù)是應(yīng)該能做到。我的控制裝置不是步進電機而是采用編碼器加普通直流電機的方式。下面是我的程序供你參考,我的這個程序有語法錯誤,不能通過匯編,本來想在網(wǎng)上求助,現(xiàn)在正好請你和各路英雄斧正。 ;************************************************************************ 實驗板程序 ;************************************************************************ ORG 0000H RESET:AJMP MAIN MAIN:MOV SP,#60H ;堆棧指針SP=60H MOV R2,#7FH ;以下各舵機置初值 MOV R3,#7FH JB P1.7, PA1 ; 20H=P1.7 CLR 20H AJMP PA2 PA1: SETB 20H PA2: JB P1.6, PA3 ; 21H=P1.6 CLR 21H AJMP PA4 PA3: SETB 21H PA4: JB P1.5, PA5 ; 22H=P1.5 CLR 22H AJMP PA6 PA5: SETB 22H PA6: JB P1.4, PA7 ; 23H=P1.4 CLR 23H AJMP WZJC PA7: SETB 23H WZJC:MOV 01H,R2 ;R1=R2 (控制手柄) MOV C,20H MOV 2CH,C ;2CH=20H MOV C,21H MOV 2DH,C JB P1.7, PB1 ; 2EH=P1.7 CLR 2EH AJMP PB2 PB1: SETB 2EH PB2: JB P1.6, PB3 ; 2FH=P1.6 CLR 2FH AJMP PB4 PB3: SETB 2FH PB4: ACALL BXJS ;調(diào)用子程序BXJS MOV R2,01H MOV C,2CH MOV 20H,C MOV C,2DH MOV 21H,C SB2:MOV 01H,R3 ;R1=R3 (舵機位檢) MOV C,22H MOV 2CH,C ;2CH=22H MOV C,23H MOV 2DH,C JB P1.5, PB5 ; 2EH=P1.5 CLR 2EH AJMP PB6 PB5: SETB 2EH PB6: JB P1.4, PB7 ; 2FH=P1.4 CLR 2FH AJMP PB8 PB7: SETB 2FH PB8: ACALL BXJS ;調(diào)用子程序BXJS MOV R3,01H MOV C,2CH MOV 22H,C MOV C,2DH MOV 23H,C KZ:MOV A,R2 CJNE A,R1,BJ ;A不等于R1則轉(zhuǎn)到BJ(比較) CLR P1.3 CLR P1.2 ;停轉(zhuǎn) AJMP AG BJ:SUBB A,R1 ;A—R1 JNC ZHENG ;A>R1則轉(zhuǎn)到ZHENG CLR P1.3 SETB P1.2 ;反轉(zhuǎn) AJMP AG ZHENG:CLR P1.2 SETB P1.3 ;正轉(zhuǎn) AG:AJMP WZJC ;跳轉(zhuǎn)到WZJC BXJS;JB 2CH,Z1 ;2CH=1則轉(zhuǎn)到Z1 JB 2DH,Z3 ; JB 2EH,PK1 JNB 2FH,TC ;2FH=0則轉(zhuǎn)到TC DEC R1 ;R1—1 SETB 2DH ;2DH=1 AJMP TC ;跳轉(zhuǎn)到TC Z1:JB 2DH,Z2 JB 2FH,PK3 JB 2EH,TC DEC R1 CLR 2CH ;2CH=0 AJMP TC Z2:JNB 2EH,PK4 JB 2FH,TC DEC R1 CLR 2DH AJMP TC Z3:JNB 2FH,PK2 JNB 2EH,TC DEC R1 SETB 2CH AJMP TC PK1:INC R1 ;R1+1 SETB 2CH AJMP TC PK2:INC R1 ;R1+1 CLR 2DH AJMP TC PK3:INC R1 ;R1+1 SETB 2DH AJMP TC PK4:INC R1 ;R1+1 CLR 2CH TC:RET ;子程序返回 END |
|
| 10樓: | >>參與討論 |
| 作者: violit 于 2005/5/4 9:06:00 發(fā)布:
增量式?jīng)]有什么不可以,給一個基準(zhǔn)就好了 絕對式的好貴阿~~ |
|
| 11樓: | >>參與討論 |
| 作者: jiayongli 于 2005/5/8 14:50:00 發(fā)布:
直接計脈沖個數(shù)就可以了,我就在這樣搞的 直接計脈沖個數(shù)就可以了,我就在這樣搞的,一個正,一個負(fù),2個合成就好了, |
|
| 12樓: | >>參與討論 |
| 作者: cndj 于 2005/5/8 15:26:00 發(fā)布:
需要加一個四倍頻電路 單片機接增量式光電編碼器最好加一個四倍頻電路,功能是對A、B信號辨向倍頻,輸出一路加計數(shù)脈沖,一路減計數(shù)脈沖,然后再接單片機上的計數(shù)器,軟件比較簡單,不需要占很多工作時間和資源,我以前是用16V8做四倍頻電路的,也可以用邏輯器件或CPLD來做,建議不要直接接單片機,那樣雖然硬件簡單,但很占單片機工作時間,計數(shù)速度不會高的。另外好像用DSP可以直接接編碼器。 |
|
| 13樓: | >>參與討論 |
| 作者: zhdiamond 于 2005/5/8 19:00:00 發(fā)布:
re 不明白樓主的確切意思。你的實時檢測的最好方法還是用中斷吧。比如說編碼器的A相輸出接在int1,然后B相接在p1.1。每次a相有輸出的時候就會進入中斷,此時,在中斷子程序中判斷p1.1的狀態(tài),以此來判斷旋轉(zhuǎn)方向。并進行計數(shù)累計。還有,這個編碼器計數(shù)完畢是什么意思? |
|
| 14樓: | >>參與討論 |
| 作者: njxmh 于 2005/5/8 22:05:00 發(fā)布:
我們有絕對量的磁光編碼器,你也許能用 編碼器每旋轉(zhuǎn)一周(360度)變化256,可增可減,以格雷碼或485信號輸出。www.yaoce.com |
|
| 15樓: | >>參與討論 |
| 作者: pfjian 于 2005/5/9 15:31:00 發(fā)布:
用單片機的計數(shù)器實現(xiàn) 我做過增量式光柵編碼盤實現(xiàn)角度測量。我們的刻線是16200條,精度80秒,做細(xì)分后可以達到2秒,如果你不需要細(xì)分,可以把得到的兩路信號用硬件電路變?yōu)槊}沖信號直接進單片機的記數(shù)器就可以了。 |
|
| 16樓: | >>參與討論 |
| 作者: zcxhe 于 2005/5/9 16:56:00 發(fā)布:
樓主是杭船的嗎? 是不是要做船體平衡儀。 |
|
| 17樓: | >>參與討論 |
| 作者: mikenee 于 2005/5/10 9:56:00 發(fā)布:
應(yīng)該可以的. 可以用中斷的方法實現(xiàn)計數(shù)的,但是要確保初始時輪船是平衡的,否則可能達不到設(shè)計要求,或者采用絕對編碼器.還有一種辦法,如果是控制模型船的話,采用具有Z信號輸出的增量式光電編碼器,安裝時注意Z信號出現(xiàn)在傾斜為0度的位置上,每次開機時讓船經(jīng)過Z信號輸出點以獲得基準(zhǔn),角度計數(shù)器置0即可. |
|
| 18樓: | >>參與討論 |
| 作者: 秋葉 于 2005/5/10 12:41:00 發(fā)布:
簡單解決法 用其中一相做上升沿中斷源,在中斷中檢測另一相為高或低判斷正轉(zhuǎn)還是反轉(zhuǎn),并對脈沖做加1或減1操作即可。 |
|
| 19樓: | >>參與討論 |
| 作者: xiaoyuan_ly 于 2005/5/10 13:58:00 發(fā)布:
我來說幾句了!!! 你對角度狀態(tài)的判斷根據(jù)你的需要可用中斷也可查詢,對編碼器的計數(shù)是連續(xù)的,只有計數(shù)溢出時才中斷,并且溢出時并不影響計數(shù)(因為物理的轉(zhuǎn)動速度不可能在中斷時產(chǎn)生2次中斷的),還有絕對計數(shù)值的多少并不影響你角度的判斷,因為你一周增量編碼的個數(shù)始終是一定的.比如: 你一周為36000個脈沖,那么360度角度可根據(jù)你的分辨精度計算的。 還有用增量的還是絕對的都無所謂的,要根據(jù)你的要求來定,比如:如你人為很難或者不能在初始化時判斷這個角度,那么建議你最好使用絕對的,通過編碼器的絕對位置安裝來保證,還有絕對位置的處理有很多細(xì)節(jié)和條件同樣要來保證好才行(比如在初始化時是否要求來尋找這個絕對位置等情況的要求等等)。如果你人為很容易判斷這個初始化角度,那么很容易實現(xiàn)了,你可以把這個角度進行初始化設(shè)置成當(dāng)前角度就行了或者清零成絕對位置都是很容易的,這種方式的擴展性好。 不知道我說的你能不能接受,望高手指點。 |
|
| 20樓: | >>參與討論 |
| 作者: lanyaz 于 2005/5/12 11:36:00 發(fā)布:
英飛凌XC164可以完成 詳細(xì)資料可參 《億恒C164CI 16位單片機》 可以捕捉編碼器輸出的A、B相 億恒即是英飛凌,前身是西門子半導(dǎo)體 我公司是英飛凌亞太區(qū)授權(quán)一級代理 趙彥龍 星科電子有限公司 021-64403295 |
|
| 21樓: | >>參與討論 |
| 作者: jiangxiuyuan0 于 2005/8/2 9:36:00 發(fā)布:
增量式編碼器程序 哪里有增量式編碼器程序提供? |
|
|
|
| 免費注冊為維庫電子開發(fā)網(wǎng)會員,參與電子工程師社區(qū)討論,點此進入 |
Copyright © 1998-2006 m.58mhw.cn 浙ICP證030469號 |