新聞中心

        EEPW首頁 > 嵌入式系統 > 設計應用 > 51單片機驅動步進電機__終極(完整版)

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

        作者: 時間:2016-11-30 來源:網絡 收藏
        在這里介紹一下用51單片機驅動步進電機的方法。
        這款步進電機的驅動電壓12V,步進角為 7.5度 . 一圈 360 度 , 需要 48 個脈沖完成!!!
        該步進電機有6根引線,排列次序如下:1:紅色、2:紅色、3:橙色、4:棕色、5:黃色、6:黑色。
        采用51驅動ULN2003的方法進行驅動。
        ULN2003的驅動直接用單片機系統的5V電壓,可能力矩不是很大,大家可自行加大驅動電壓到12V。
        ;******************************************************************************
        ;************************* 步進電機的驅動*************************************** ; DESIGN BY BENLADN911 FOSC = 12MHz 2005.05.19
        ;---------------------------------------------------------------------------------
        ; 步進電機的驅動信號必須為 脈沖信號!!! 轉動的速度和脈沖的頻率成正比!!!
        ; 本步進電機步進角為 7.5度 . 一圈 360 度 , 需要 48 個脈沖完成!!!
        ;---------------------------------------------------------------------------------
        ; A組線圈對應 P2.4
        ; B組線圈對應 P2.5
        ; C組線圈對應 P2.6
        ; D組線圈對應 P2.7
        ; 正轉次序: AB組--BC組--CD組--DA組 (即一個脈沖,正轉 7.5 度)
        ;----------------------------------------------------------------------------------
        ;----------------------------正轉-------------------------- ORG 0000H LJMP MAIN ORG 0100H
        MAIN:
        MOV R3,#144 正轉 3 圈共 144 脈沖 START: MOV R0,#00H START1: MOV P2,#00H MOV A,R0
        MOV DPTR,#TABLE MOVC A,@A+DPTR
        JZ START 對 A 的判斷,當 A = 0 時則轉到 START MOV P2,A
        LCALL DELAY INC R0
        DJNZ R3,START1
        MOV P2,#00H LCALL DELAY1
        ;-----------------------------反轉------------------------
        MOV R3,#144 反轉一圈共 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步進電機的轉速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 正轉表 DB 00 正轉結束
        DB 30H,90H,0C0H,60H 反轉表 DB 00 反轉結束 END
        51單片機控制四相步進電機
        拿 到步進電機,根據以前看書對四相步進電機的了解,我對它進行了初步的測試,就是將5伏電源的正端接上最邊上兩根褐色的線,然后用5伏電源的地線分別和另外 四根線(紅、蘭、白、橙)依次接觸,發現每接觸一下,步進電機便轉動一個角度,來回五次,電機剛好轉一圈,說明此步進電機的步進角度為 360/(4×5)=18度。地線與四線接觸的順序相反,電機的轉向也相反。
        此步進電機,則只需分別依次給四線一定時間的脈沖電流,電機便可連續轉動起來。
        通過改變脈沖電流的時間間隔,就可以實現對轉速的控制;通過改變給四線脈沖電流的順序,則可實現對轉向的控制。所以,設計了如下電路圖:
        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; //設定時器0和1為16位模式1
        ET0 = 1; //定時器0中斷允許 TH0 = 0xFC;
        TL0 = 0x18; //設定時每隔1ms中斷一次 TR0 = 1; //開始計數 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; //設定時每隔1ms中斷一次 count++; }
        void delay()
        {
        endcount=2; count=0;
        do{}while(count
        將上面的程序編譯,用ISP下載線下載至單片機運行,步進電機便轉動起來了,初步告捷!
        上一頁 1 2 下一頁

        關鍵詞: 51單片機步進電

        評論


        技術專區

        關閉
        主站蜘蛛池模板: 隆化县| 乌海市| 勃利县| 黄平县| 兴业县| 陇西县| 定西市| 大厂| 南昌市| 揭西县| 马山县| 西乌| 耿马| 石景山区| 滨海县| 友谊县| 民权县| 全南县| 左权县| 恭城| 淮滨县| 枣强县| 怀柔区| 海丰县| 盐城市| 临夏县| 顺昌县| 巴青县| 上杭县| 若尔盖县| 鄢陵县| 耿马| 黑河市| 内乡县| 南部县| 乌鲁木齐市| 宣恩县| 佛山市| 雷波县| 澄城县| 庆城县|