<meter id="pryje"><nav id="pryje"><delect id="pryje"></delect></nav></meter>
          <label id="pryje"></label>

          新聞中心

          EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計應(yīng)用 > 51單片機驅(qū)動步進電機__終極(完整版)

          51單片機驅(qū)動步進電機__終極(完整版)

          作者: 時間:2016-11-30 來源:網(wǎng)絡(luò) 收藏
          在這里介紹一下用51單片機驅(qū)動步進電機的方法。
          這款步進電機的驅(qū)動電壓12V,步進角為 7.5度 . 一圈 360 度 , 需要 48 個脈沖完成!!!
          該步進電機有6根引線,排列次序如下:1:紅色、2:紅色、3:橙色、4:棕色、5:黃色、6:黑色。
          采用51驅(qū)動ULN2003的方法進行驅(qū)動。
          ULN2003的驅(qū)動直接用單片機系統(tǒng)的5V電壓,可能力矩不是很大,大家可自行加大驅(qū)動電壓到12V。
          ;******************************************************************************
          ;************************* 步進電機的驅(qū)動*************************************** ; DESIGN BY BENLADN911 FOSC = 12MHz 2005.05.19
          ;---------------------------------------------------------------------------------
          ; 步進電機的驅(qū)動信號必須為 脈沖信號!!! 轉(zhuǎn)動的速度和脈沖的頻率成正比!!!
          ; 本步進電機步進角為 7.5度 . 一圈 360 度 , 需要 48 個脈沖完成!!!
          ;---------------------------------------------------------------------------------
          ; A組線圈對應(yīng) P2.4
          ; B組線圈對應(yīng) P2.5
          ; C組線圈對應(yīng) P2.6
          ; D組線圈對應(yīng) P2.7
          ; 正轉(zhuǎn)次序: AB組--BC組--CD組--DA組 (即一個脈沖,正轉(zhuǎn) 7.5 度)
          ;----------------------------------------------------------------------------------
          ;----------------------------正轉(zhuǎn)-------------------------- ORG 0000H LJMP MAIN ORG 0100H
          MAIN:
          MOV R3,#144 正轉(zhuǎn) 3 圈共 144 脈沖 START: MOV R0,#00H START1: MOV P2,#00H MOV A,R0
          MOV DPTR,#TABLE MOVC A,@A+DPTR
          JZ START 對 A 的判斷,當(dāng) A = 0 時則轉(zhuǎn)到 START MOV P2,A
          LCALL DELAY INC R0
          DJNZ R3,START1
          MOV P2,#00H LCALL DELAY1
          ;-----------------------------反轉(zhuǎn)------------------------
          MOV R3,#144 反轉(zhuǎn)一圈共 144 個脈沖 START2:
          MOV P2,#00H MOV R0,#05 START3: MOV A,R0
          MOV DPTR,#TABLE MOVC A,@A+DPTR JZ START2 MOV P2,A CALL DELAY INC R0
          DJNZ R3,START3 MOV P2,#00H
          LCALL DELAY1 LJMP MAIN
          DELAY: MOV R7,#40步進電機的轉(zhuǎn)速M3: MOV R6,#248 DJNZ R6,$ DJNZ R7,M3
          RET
          DELAY1: MOV R4,#20 2S 延時子程序 DEL2: MOV R3,#200 DEL3: MOV R2,#250 DJNZ R2,$ DJNZ R3,DEL3 DJNZ R4,DEL2 RET TABLE:
          DB 30H,60H,0C0H,90H 正轉(zhuǎn)表 DB 00 正轉(zhuǎn)結(jié)束
          DB 30H,90H,0C0H,60H 反轉(zhuǎn)表 DB 00 反轉(zhuǎn)結(jié)束 END
          51單片機控制四相步進電機
          拿 到步進電機,根據(jù)以前看書對四相步進電機的了解,我對它進行了初步的測試,就是將5伏電源的正端接上最邊上兩根褐色的線,然后用5伏電源的地線分別和另外 四根線(紅、蘭、白、橙)依次接觸,發(fā)現(xiàn)每接觸一下,步進電機便轉(zhuǎn)動一個角度,來回五次,電機剛好轉(zhuǎn)一圈,說明此步進電機的步進角度為 360/(4×5)=18度。地線與四線接觸的順序相反,電機的轉(zhuǎn)向也相反。
          此步進電機,則只需分別依次給四線一定時間的脈沖電流,電機便可連續(xù)轉(zhuǎn)動起來。
          通過改變脈沖電流的時間間隔,就可以實現(xiàn)對轉(zhuǎn)速的控制;通過改變給四線脈沖電流的順序,則可實現(xiàn)對轉(zhuǎn)向的控制。所以,設(shè)計了如下電路圖:
          C51程序代碼為: 代碼一
          #include static unsigned int count; static unsigned int endcount; void delay(); void main(void) {
          count = 0; P1_0 = 0; P1_1 = 0; P1_2 = 0; P1_3 = 0;
          EA = 1; //允許CPU中斷
          TMOD = 0x11; //設(shè)定時器0和1為16位模式1
          ET0 = 1; //定時器0中斷允許 TH0 = 0xFC;
          TL0 = 0x18; //設(shè)定時每隔1ms中斷一次 TR0 = 1; //開始計數(shù) startrun: P1_3 = 0; P1_0 = 1; delay();
          P1_0 = 0;
          P1_1 = 1; delay(); P1_1 = 0; P1_2 = 1; delay(); P1_2 = 0; P1_3 = 1; delay();
          goto startrun; }
          //定時器0中斷處理
          void timeint(void) interrupt 1 {
          TH0=0xFC;
          TL0=0x18; //設(shè)定時每隔1ms中斷一次 count++; }
          void delay()
          {
          endcount=2; count=0;
          do{}while(count
          將上面的程序編譯,用ISP下載線下載至單片機運行,步進電機便轉(zhuǎn)動起來了,初步告捷!
          上一頁 1 2 下一頁

          關(guān)鍵詞: 51單片機步進電

          評論


          技術(shù)專區(qū)

          關(guān)閉
          看屁屁www成人影院,亚洲人妻成人图片,亚洲精品成人午夜在线,日韩在线 欧美成人 (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })();