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

          新聞中心

          EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計應用 > 單片機控制步進電機正反轉(zhuǎn)

          單片機控制步進電機正反轉(zhuǎn)

          作者: 時間:2016-11-18 來源:網(wǎng)絡(luò) 收藏
          步進電機模塊:

          本文引用地址:http://www.ex-cimer.com/article/201611/315924.htm

          原理圖:

          兩相六線步進電機,步進角7.5度,額定工作電壓12V,完全可以使用5V做實驗。

          以下是引用 gguoqing 在2006-6-11 15:10:02的發(fā)言:

          使用偉納定做的20CM杜邦頭實驗連接線,可以很方便的將ME300與步進電機模塊連接起來。

          http://www.willar.com/shop_view.asp?id=47

          在ME300B上使用時,可從J7上引出5V電源到步進電機模塊J1上。

          將J1(ICE)上的P1.0-P1.3用杜邦頭實驗連接線連接到步進電機模塊J2上。

          產(chǎn)品詳情:

          http://www.willar.com/shop_view.asp?id=48。

          以下是本站管理員gguoqing專門編寫的演示程序。

          C語言范例:

          /*******************************************************************

          /*

          /* ME300系列單片機開發(fā)系統(tǒng)演示程序-步進電機鍵控正反轉(zhuǎn)實驗

          /*

          /* 郵箱: gguoqing@willar.com

          /* 網(wǎng)站:http://www.willar.com;

          /* 作者: gguoqing

          /* 時間: 2006/05/30

          /*

          /*【版權(quán)】COPYRIGHT(C)偉納電子www.willar.comALL RIGHTS RESERVED

          /*【聲明】此程序僅用于學習與參考,引用請注明版權(quán)和作者信息!

          /*

          /******************************************************************/

          #include //51芯片管腳定義頭文件

          #include //內(nèi)部包含延時函數(shù) _nop_();

          #define uchar unsigned char

          #define uintunsigned int

          uchar code FFW[8]={0xf1,0xf3,0xf2,0xf6,0xf4,0xfc,0xf8,0xf9};

          uchar code REV[8]={0xf9,0xf8,0xfc,0xf4,0xf6,0xf2,0xf3,0xf1};

          sbitK1 = P1^4; //正轉(zhuǎn)

          sbitK2 = P1^5; //反轉(zhuǎn)

          sbitK3 = P1^6;

          sbitK4 = P1^7; //停止

          sbitBEEP = P3^7; //蜂鳴器

          /********************************************************/

          /*

          /* 延時t毫秒

          /* 11.0592MHz時鐘,延時約1ms

          /*

          /********************************************************/

          void delay(uint t)

          {

          uint k;

          while(t--)

          {

          for(k=0; k<125; k++)

          { }

          }

          }

          /**********************************************************/

          void delayB(uchar x)//x*0.14MS

          {

          uchar i;

          while(x--)

          {

          for (i=0; i<13; i++)

          { }

          }

          }

          /**********************************************************/

          void beep()

          {

          uchar i;

          for (i=0;i<100;i++)

          {

          delayB(4);

          BEEP=!BEEP; //BEEP取反

          }

          BEEP=1;//關(guān)閉蜂鳴器

          }

          /********************************************************/

          /*

          /*步進電機正轉(zhuǎn)

          /*

          /********************************************************/

          voidmotor_ffw()

          {

          uchar i;

          uintj;

          for (j=0; j<12; j++)//轉(zhuǎn)1*n圈

          {

          if(K4==0)

          {break;}//退出此循環(huán)程序

          for (i=0; i<8; i++) //一個周期轉(zhuǎn)30度

          {

          P1 = FFW[ i ];//取數(shù)據(jù)

          delay(15); //調(diào)節(jié)轉(zhuǎn)速

          }

          }

          }

          /********************************************************/

          /*

          /*步進電機反轉(zhuǎn)

          /*

          /********************************************************/

          voidmotor_rev()

          {

          uchar i;

          uintj;

          for (j=0; j<12; j++) //轉(zhuǎn)1×n圈

          {

          if(K4==0)

          {break;} //退出此循環(huán)程序

          for (i=0; i<8; i++)//一個周期轉(zhuǎn)30度

          {

          P1 = REV[ i ];//取數(shù)據(jù)

          delay(15); //調(diào)節(jié)轉(zhuǎn)速

          }

          }

          }

          /********************************************************

          *

          *主程序

          *

          *********************************************************/

          main()

          {

          uchar r,N=5; //N 步進電機運轉(zhuǎn)圈數(shù)

          while(1)

          {

          if(K1==0)

          {

          beep();

          for(r=0;r

          {

          motor_ffw(); //電機正轉(zhuǎn)

          if(K4==0)

          {beep();break;}//退出此循環(huán)程序

          }

          }

          else if(K2==0)

          {

          beep();

          for(r=0;r

          {

          motor_rev(); //電機反轉(zhuǎn)

          if(K4==0)

          {beep();break;}//退出此循環(huán)程序

          }

          }

          else

          P1 = 0xf0;

          }

          }

          匯編語言范例

          ;/*****************************************************************

          ;/*

          ;/* ME300系列單片機開發(fā)系統(tǒng)演示程序 - 步進電機鍵控正反轉(zhuǎn)實驗

          ;/*

          ;/*

          ;/* 郵箱:gguoqing@willar.com

          ;/* 網(wǎng)站:http://www.willar.com;

          ;/* 作者: gguoqing

          ;/* 時間: 2006/05/30

          ;/*

          ;/*【版權(quán)】Copyright(C)偉納電子www.willar.comAll Rights Reserved

          ;/*【聲明】此程序僅用于學習與參考,引用請注明版權(quán)和作者信息!

          ;/*

          ;/******************************************************************

          ; 步進電機步進角為 7.5度,一圈 360 度。

          ; 雙四拍工作方式:

          ; AB-BC-CD-DA (即一個脈沖,轉(zhuǎn) 7.5 度)

          ; 單雙八拍工作方式:

          ; A-AB-B-BC-C-CD-D-DA (即一個脈沖,轉(zhuǎn) 3.75 度)

          ; 一個取數(shù)工作周期,步進電機轉(zhuǎn)30度

          ; 步進電機轉(zhuǎn)一圈需要12個取數(shù)工作周期

          ;-------------------------------------------------------

          ; A組線圈對應 P1.0(桔色)

          ; B組線圈對應 P1.1(棕色)

          ; C組線圈對應 P1.2(黃色)

          ; D組線圈對應 P1.3(黑色)

          ;-------------------------------------------------------

          K1BITP1.4 ;步進電機正轉(zhuǎn)

          K2BITP1.5 ;步進電機反轉(zhuǎn)

          K3BITP1.6

          K4BITP1.7 ;步進電機停止轉(zhuǎn)動

          BEEPBITP3.7

          ;-------------------------------------------------------

          ORG 0000H

          LJMP MAIN

          ORG 0030H

          ;-------------------------------------------------------

          MAIN:

          MOVSP,#60H

          MOVP1,#0F0H ;關(guān)閉步進電機,鍵輸入線置高

          MAIN1:

          JBK1,MAIN2

          ACALLBEEP_BL ;步進電機正轉(zhuǎn)

          ACALLFFW

          MAIN2:

          JBK2,MAIN1

          ACALLBEEP_BL ;步進電機反轉(zhuǎn)

          ACALLREV

          JMPMAIN1

          ;------------------------正轉(zhuǎn)-------------------------

          FFW:

          ;MOV R3,#12 ;7.5度電機正轉(zhuǎn)1圈共12個周期

          MOVR3,#60 ;轉(zhuǎn)5圈

          FFW1:

          MOV R0,#00H

          FFW2:

          JBK4,FFW3 ;終止步進電機運行

          ACALLBEEP_BL

          JMPFFW4

          FFW3:

          MOV P1,#0F0H

          MOV A,R0

          ;MOV DPTR,#TABLE_F;選擇工作方式

          MOV DPTR,#TABLE1

          MOVC A,@A+DPTR

          MOV P1,A

          LCALL DELAY

          INC R0

          CJNEA,#0FFH,FFW2

          DJNZ R3,FFW1

          FFW4:

          MOV P1,#0F0H

          RET

          ;---------------------------反轉(zhuǎn)--------------------------

          REV:

          ;MOV R3,#12 ;7.5度電機反轉(zhuǎn)1圈共12個周期

          MOVR3,#60 ;轉(zhuǎn)5圈

          REV1:

          MOV R0,#00H

          REV2:

          JBK4,REV3;終止步進電機運行

          ACALLBEEP_BL

          JMPREV4

          REV3:

          MOV P1,#0F0H

          MOV A,R0

          ; MOV DPTR,#TABLE_R ;選擇工作方式

          MOV DPTR,#TABLE2

          MOVC A,@A+DPTR

          MOV P1,A

          CALL DELAY

          INC R0

          CJNEA,#0FFH,REV2

          DJNZ R3,REV1

          REV4:

          MOV P1,#0F0H

          RET

          ;-------------------------------------------------------

          DELAY:

          MOV R7,#40 ;步進電機的轉(zhuǎn)速

          DEL1:MOV R6,#248

          DJNZ R6,$

          DJNZ R7,DEL1

          RET

          ;-------------------------------------------------------

          DELAY1:

          MOV R5,#20 ;2S 延時子程序

          DEL2:

          MOV R7,#200

          DEL3:

          MOV R6,#250

          DJNZR6,$

          DJNZR7,DEL3

          DJNZR5,DEL2

          RET

          ;-------------------------------------------------------

          ; 單雙八拍工作方式

          TABLE_F:;正轉(zhuǎn)表

          DB0F1H,0F3H,0F2H,0F6H,0F4H,0FCH,0F8H,0F9H

          DB0FFH

          TABLE_R:;反轉(zhuǎn)表

          DB0F9H,0F8H,0FCH,0F4H,0F6H,0F2H,0F3H,0F1H

          DB0FFH

          ;-------------------------------------------------------

          ; 雙四拍工作方式:

          TABLE1:

          DB 0F3H,0F6H,0FcH,0F9H;正轉(zhuǎn)表

          DB 0FFH;正轉(zhuǎn)結(jié)束

          TABLE2:

          DB 0F9H,0FCH,0F6H,0F3H;反轉(zhuǎn)表

          DB 0FFH;反轉(zhuǎn)結(jié)束

          ;--------------------------------------------------------

          ;蜂鳴器響一聲子程序

          ;--------------------------------------------------------

          BEEP_BL:

          MOVR6,#100

          BL1:

          CALLDEX1

          CPLBEEP

          DJNZR6,BL1

          RET

          DEX1:

          MOVR7,#180

          DEX2:

          NOP

          DJNZR7,DEX2

          RET

          ;---------------------------------------------------------

          END

          四相步進電機:

          齒距角: Qz = 2π/ Z Z --- 轉(zhuǎn)子的齒數(shù)

          步距角---轉(zhuǎn)子走一步所轉(zhuǎn)過的角度

          步距角: Qn = Qz/N = 2π/NZN --- 步進電機工作拍數(shù)

          步進電機轉(zhuǎn)速:

          n = 60×f / N×Z (轉(zhuǎn)/分); f =脈沖頻率(Hz)

          對于步距角為7.5度的步進電機而言:

          Qn = 7.5度

          Qz = Qn×N = 7.5×4=30度 (齒距角)

          Z=2π/Qz = 360/30 = 12 (轉(zhuǎn)子的齒數(shù))

          四相步進電機有三種運行狀態(tài):

          1、步進電機為四相單四拍運行狀態(tài):

          當電機繞組通電時序為A-B-C-D時為正轉(zhuǎn),通電時序為D-C-B-A時為反轉(zhuǎn)。

          N = 4

          步距角: Qn = Qz/N = 2π/NZ =360/4*12=7.5°

          則步進電機轉(zhuǎn)一圈所需步進數(shù): 360°/7.5°=48 (步進數(shù))

          2、步進電機為四相雙四拍運行狀態(tài):

          當電機繞組通電時序為AB-BC-CD-DA時為正轉(zhuǎn),通電時序為DA-CD-BC-AB時為反轉(zhuǎn)。

          N = 4

          步距角: Qn = Qz/N = 2π/NZ =360/4*12=7.5°

          則步進電機轉(zhuǎn)一圈所需步進數(shù): 360°/7.5°=48 (步進數(shù))

          3、步進電機為四相八拍運行狀態(tài)。

          當電機繞組通電時序為A-AB-B-BC-C-CD-D-DA時為正轉(zhuǎn),通電時序為DA-D-CD-C-BC-B-BA-A時為反轉(zhuǎn)。

          N = 8

          步距角: Qn = Qz/N = 2π/NZ =360/8*12=3.75°

          則步進電機轉(zhuǎn)一圈所需步進數(shù): 360°/3.75°=96 (步進數(shù))



          評論


          技術(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); })();