時間:2018-07-06 17:54:25來æºï¼šç¶²çµ¡è½‰è¼‰
旋轉編碼器是一種高精度的角ä½ç½®æ¸¬é‡å‚³æ„Ÿå™¨ï¼Œå…·æœ‰åˆ†è¾¨çŽ‡é«˜ã€éŸ¿æ‡‰é€Ÿåº¦å¿«ç‰ç‰¹é»žï¼Œè¢«å»£æ³›æ‡‰ç”¨åœ¨ä»¥ä½ç½®æˆ–角度為å°è±¡çš„æŽ§åˆ¶ç³»çµ±ä¸ã€‚將編碼器安è£åœ¨é›»æ©Ÿè»¸çš„éžè² 載端跟隨轉動,其å饋信號傳éžçµ¦æŽ§åˆ¶å™¨ï¼Œæ§‹æˆå°é›»æ©Ÿçš„閉環控制[1]。
增é‡å¼æ—‹è½‰ç·¨ç¢¼å™¨ç™¼å‡ºå…©è·¯æ£äº¤è„ˆæ²–,å³å…©è·¯(Aã€B)相ä½å·®90°的方波,其相ä½é—œç³»æ¨™å¿—電機的轉å‘,當A相超å‰B相90°時,標志電機æ£è½‰ï¼Œå¦‚圖1所示;當B相超å‰A相90°時,標志電機å轉,如圖2所示。編碼器旋轉一圈,輸出脈沖數固定,通éŽç´¯åŠ Aã€B兩相信號的脈沖數å¯ä»¥è¨ˆç®—電機轉éŽçš„角度。
本文用VHDL語言è¨è¨ˆäº†ä¸€ç¨®å¢žé‡å¼æ—‹è½‰ç·¨ç¢¼å™¨çš„æŽ¥å£é›»è·¯ï¼Œå¯ä»¥é…置在CPLD或者FPGA上,實ç¾å°ç·¨ç¢¼å™¨è¼¸å‡ºä¿¡è™Ÿçš„å››å€é »ã€é›™å‘å¯é€†è¨ˆæ•¸å’Œèˆ‡å–®ç‰‡æ©ŸæŽ¥å£çš„功能。下é¢ä»‹ç´¹å„個電路的è¨è¨ˆåŽŸç†å’Œå¯¦ç¾æºç¢¼ã€‚
1å››å€é »é›»è·¯è¨è¨ˆåŽŸç†
å°äºŽæ¯å€‹ç¢ºå®šçš„編碼器,其脈沖周期Tå°æ‡‰çš„è§’ä½ç§»å›ºå®šç‚ºq,其é‡åŒ–誤差為q/2。若將Aå’ŒB信號四å€é »ï¼Œå‰‡è¨ˆæ•¸è„ˆæ²–的周期將減å°åˆ°T/4,é‡åŒ–誤差減å°ç‚ºq/8,從而使角ä½ç§»æ¸¬é‡ç²¾åº¦æé«˜4å€[2]。
如圖1和圖2所示,在任æ„一個周期T內,Aã€B兩路信號å„è®ŠåŒ–äº†å…©æ¬¡ï¼Œåˆ†åˆ¥ç”¢ç”Ÿä¸€æ¬¡ä¸Šå‡æ²¿å’Œä¸€æ¬¡ä¸‹é™æ²¿ï¼Œè‹¥ç”¨Yå°Aã€B兩路信號的跳變沿計數,則在一個脈沖周期內,信號Y就會出ç¾4次變化,實ç¾ç·¨ç¢¼å™¨ä¿¡è™Ÿçš„å››å€é »ã€‚
2轉å‘鑒別電路è¨è¨ˆåŽŸç†
在信號跳變沿時檢測å¦ä¸€ç›¸ä¿¡è™Ÿçš„電平值å¯ä»¥åˆ¤æ–·è½‰å‘[3]。例如,在Aç›¸ä¿¡è™Ÿä¸Šå‡æ²¿æ™‚檢測B相信號電平,若B為低電平(如圖1),表示電機æ£è½‰ï¼›è‹¥B為高電平(如圖2),表示電機å轉。çµåˆä¸Šé¢æ‰€è¿°å››å€é »åŽŸç†ï¼Œè¨ˆæ•¸è¦å‰‡ç¸½çµå¦‚下。
(1)檢測到以下狀態表示電機æ£è½‰ï¼ŒåŠ è¨ˆæ•¸ï¼š
â‘ Aç›¸ä¸Šå‡æ²¿ï¼ŒB=0;②Aç›¸ä¸‹é™æ²¿ï¼ŒB=1;③Bç›¸ä¸Šå‡æ²¿ï¼ŒA=1;④Bç›¸ä¸‹é™æ²¿ï¼ŒA=0。
(2)檢測到以下狀態表示電機å轉,減計數:
â‘ Bç›¸ä¸Šå‡æ²¿ï¼ŒA=0;②Bç›¸ä¸‹é™æ²¿ï¼ŒA=1;③Aç›¸ä¸Šå‡æ²¿ï¼ŒB=1;④Aç›¸ä¸‹é™æ²¿ï¼ŒB=0。
3與單片機接å£è¨è¨ˆåŽŸç†
編碼器的脈沖計數值一般è¦å‚³é€çµ¦å–®ç‰‡æ©Ÿæˆ–其他控制器進行處ç†ï¼Œè€ŒCPLD的全局時é˜çš„é »çŽ‡é«˜äºŽå–®ç‰‡æ©Ÿçš„æ™‚é˜é »çŽ‡ï¼Œç‚ºä¿è‰CPLD和單片機之間計數值傳輸的æ£ç¢ºæ€§ï¼Œå–®ç‰‡æ©Ÿé¦–先發é€ä¿¡è™Ÿçµ¦CPLD,將計數值鎖å˜åŽå†é€²è¡Œå‚³è¼¸ã€‚CPLD與單片機接å£ç¤ºæ„圖如圖3所示。本è¨è¨ˆä¸CPLD檢測到單片機鎖å˜ä¿¡è™Ÿçš„ä¸Šå‡æ²¿åŽå°‡ç•¶å‰è¨ˆæ•¸å€¼éŽ–å˜[4],然åŽåœ¨å–®ç‰‡æ©Ÿä½é¸ä¿¡è™Ÿçš„ä¸Šå‡æ²¿å’Œä¸‹é™æ²¿åˆ†æ™‚å°‡16bit計數值的高8ä½å’Œä½Ž8ä½å‚³é€çµ¦å–®ç‰‡æ©Ÿ8bitI/O端å£ã€‚
4實ç¾é›»è·¯çš„æºä»£ç¢¼
本è¨è¨ˆåˆ©ç”¨D觸發器的延時作用檢測信號跳變沿,D輸入端接脈沖信號,則Q輸出端是上一個CLK周期的脈沖信號狀態。在CLKçš„ä¸Šå‡æ²¿æª¢æ¸¬Q端輸出和D端信號電平值是å¦ä¸€è‡´ï¼Œä¸ä¸€è‡´è¡¨ç¤ºå‡ºç¾è·³è®Šæ²¿ã€‚
è¨Aå’ŒB是Aã€B相的æºä¿¡è™Ÿï¼Œç¶“éŽD觸發器åŽAã€B相信號記為A1ã€B1,則計數è¦å‰‡è¡¨ç¤ºç‚ºï¼š
5ä»¿çœŸçµæžœ
利用ALTERA的開發工具MAX+PlusⅡ,輸入VHDL文本文件,目標è¨å‚™ç‚ºEPM7128SLC84[5],CLK周期為200ns,Aã€B的周期為2000ns,編è¯åŽä»¿çœŸæ³¢å½¢å¦‚圖4~圖7所示。
圖4是編碼器æ£è½‰æ™‚的仿真波形,在A相信號的1å€‹å‘¨æœŸï¼Œå…©æ¢æ¨™è¨˜ç·šå…§ï¼Œè¨ˆæ•¸å€¼OUTPUTç”±åˆå§‹å€¼4å¢žåŠ åˆ°8,實ç¾å››å€é »åŠ è¨ˆæ•¸ã€‚
圖5是編碼器å轉時的仿真波形,在A相信號的1個周期內,計數值OUTPUTç”±åˆå§‹å€¼15減少到11,實ç¾å››å€é »æ¸›è¨ˆæ•¸ã€‚
圖6是編碼器由æ£è½‰åˆ‡æ›ç‚ºåè½‰æ™‚çš„ä»¿çœŸæ³¢å½¢ã€‚å¦‚åœ–ä¸æ¨™è¨˜ç·šæ‰€ç¤ºï¼ŒB相超å‰A相åŽçš„第一個CLKçš„ä¸Šå‡æ²¿ï¼Œè¨ˆæ•¸æ–¹å‘ç«‹å³æ”¹è®Šï¼Œç”±åŠ è¨ˆæ•¸è®Šç‚ºæ¸›è¨ˆæ•¸ã€‚
如圖7䏿¨™è¨˜ç·šæ‰€ç¤ºï¼Œåœ¨éŽ–å˜ä¿¡è™Ÿlockä¸Šå‡æ²¿æ™‚16bit計數值鎖å˜äºŽOUT_lockï¼›ä½é¸ä¿¡è™Ÿchooseä¸Šå‡æ²¿åŽçš„第一個CLKä¸Šå‡æ²¿ï¼Œ8bit計數值OUTPUT8輸出OUT_lock的高8ä½ï¼›choose䏋陿²¿æ™‚OUTPUT8輸出OUT_lock的低8ä½ã€‚
由上述仿真波形å¯ä»¥çœ‹å‡ºï¼Œæœ¬é›»è·¯çš„è¨è¨ˆå¯¦ç¾äº†ç·¨ç¢¼å™¨çš„轉å‘鑒別ã€å››å€é »ã€é›™å‘計數以åŠèˆ‡å–®ç‰‡æ©Ÿé€šä¿¡çš„功能。
本文è¨è¨ˆçš„編碼器接å£é›»è·¯ï¼Œçµæ§‹ç°¡å–®ã€å¯é 性高,å³ä½¿åœ¨æ£åè½‰é »ç¹åˆ‡æ›çš„å ´åˆä¹Ÿèƒ½é«˜ç²¾åº¦åœ°å·¥ä½œã€‚本接å£é›»è·¯å·²æ‡‰ç”¨åœ¨å–®ç´šæ—‹è½‰å€’立擺控制系統ä¸ï¼Œä¸”é‹è¡Œè‰¯å¥½ã€‚
標簽:
上一篇:四大總線:CANã€LINã€Flexray...
下一篇:最優控制ç†è«–åŠå…¶åœ¨å·¥ç¨‹ä¸Šçš„æ‡‰ç”¨
ä¸åœ‹å‚³å‹•網版權與å…è²¬è²æ˜Žï¼šå‡¡æœ¬ç¶²æ³¨æ˜Ž[來æºï¼šä¸åœ‹å‚³å‹•ç¶²]的所有文å—ã€åœ–片ã€éŸ³è¦–å’Œè¦–é »æ–‡ä»¶ï¼Œç‰ˆæ¬Šå‡ç‚ºä¸åœ‹å‚³å‹•ç¶²(www.hysjfh.com)ç¨å®¶æ‰€æœ‰ã€‚如需轉載請與0755-82949061è¯ç³»ã€‚任何媒體ã€ç¶²ç«™æˆ–å€‹äººè½‰è¼‰ä½¿ç”¨æ™‚é ˆæ³¨æ˜Žä¾†æºâ€œä¸åœ‹å‚³å‹•ç¶²â€ï¼Œé•å者本網將追究其法律責任。
本網轉載并注明其他來æºçš„稿件,å‡ä¾†è‡ªäº’è¯ç¶²æˆ–æ¥å…§æŠ•稿人士,版權屬于原版權人。轉載請ä¿ç•™ç¨¿ä»¶ä¾†æºåŠä½œè€…ï¼Œç¦æ¢æ“…自篡改,é•è€…è‡ªè² ç‰ˆæ¬Šæ³•å¾‹è²¬ä»»ã€‚
相關資訊