24BYJ48電機的使用,帶驅動程序

一、尺寸與接線

一種是紅、橙、黃、粉、藍的,電機實物如下:

注意電機的接頭可能是XH2.54-5P的(上左圖),也可能是ZH1.5-5P的(上右圖)。

還有一種是紅、黑、黃、棕、藍的

這兩種線色都是紅色爲公共線,然後挨着的4根線分別爲A、B、C、D。

二、電機結構與參數

這種5線4相電機的內部結構圖如下:

給公共極通正電,然後依次把A、B、C、D拉低,就可以形成一個旋轉的磁場,拖動轉子轉動了。

電機自帶減速器,減速比爲1:64,步進角爲5.625/64度,如果需要轉動1圈,那麼需要360/5.625*64=4096個脈衝信號。

電機還包含以下主要參數(僅供參考,不同廠家生產的有區別)

三、驅動電路

一般使用達林頓管驅動,如ULN2003A。

四、驅動程序

一般對力矩要求高使用2相勵磁,對精度要求高使用1-2相勵磁。

1、1相勵磁的51單片機例程(使用ULN2003)

sbit D1=P1^4; //定義步進電機連接端口
sbit C1=P1^5; //定義步進電機連接端口
sbit B1=P1^6; //定義步進電機連接端口
sbit A1=P1^7; //定義步進電機連接端口

#define Coil_A  {A1=1;B1=0;C1=0;D1=0;}//A相通電,其他相斷電
#define Coil_B  {A1=0;B1=1;C1=0;D1=0;}//B相通電,其他相斷電
#define Coil_C  {A1=0;B1=0;C1=1;D1=0;}//C相通電,其他相斷電
#define Coil_D  {A1=0;B1=0;C1=0;D1=1;}//D相通電,其他相斷電
#define Coil_OFF {A1=0;B1=0;C1=0;D1=0;}//全部斷電

main()
{

 Speed=50; //調整轉動速度,速度不可以調節的過快,不然就沒有力矩轉動了
 while(1)            
  {         
     Coil_A                  //遇到Coil_A  用{A1=1;B1=0;C1=0;D1=0;}代替
     DelayMs(Speed);         //改變這個參數可以調整電機轉速 ,
	                         //數字越小,轉速越大,力矩越小
     Coil_B                  //遇到Coil_B  用{A1=0;B1=1;C1=0;D1=0;}代替
     DelayMs(Speed);
     Coil_C                  //遇到Coil_C  用{A1=0;B1=0;C1=1;D1=0;}代替
     DelayMs(Speed); 
     Coil_D                  //遇到Coil_D  用{A1=0;B1=0;C1=0;D1=1;}代替
     DelayMs(Speed);
  }
}

2、2相勵磁的51單片機例程(使用ULN2003)

sbit D1=P1^4; //定義步進電機連接端口
sbit C1=P1^5; //定義步進電機連接端口
sbit B1=P1^6; //定義步進電機連接端口
sbit A1=P1^7; //定義步進電機連接端口

#define Coil_AB {A1=1;B1=1;C1=0;D1=0;}//AB相通電,其他相斷電
#define Coil_BC {A1=0;B1=1;C1=1;D1=0;}//BC相通電,其他相斷電
#define Coil_CD {A1=0;B1=0;C1=1;D1=1;}//CD相通電,其他相斷電
#define Coil_DA {A1=1;B1=0;C1=0;D1=1;}//DA相通電,其他相斷電
#define Coil_OFF {A1=0;B1=0;C1=0;D1=0;}//全部斷電

main()
{

 Speed=50; //調整轉動速度,速度不可以調節的過快,不然就沒有力矩轉動了
 while(1)  
  {         
     Coil_AB                //遇到Coil_AB 用{A1=1;B1=1;C1=0;D1=0;}代替
     DelayMs(Speed);        //改變這個參數可以調整電機轉速 ,
	                        //數字越小,轉速越大,力矩越小
     Coil_BC                //遇到Coil_BC 用{A1=0;B1=1;C1=1;D1=0;}代替
     DelayMs(Speed);
     Coil_CD                //遇到Coil_CD 用{A1=0;B1=0;C1=1;D1=1;}代替
     DelayMs(Speed);
     Coil_DA                //遇到Coil_DA 用{A1=1;B1=0;C1=0;D1=1;}代替
     DelayMs(Speed);
  }
}

3、1-2相勵磁的51單片機例程(使用ULN2003)

sbit D1=P1^4; //定義步進電機連接端口
sbit C1=P1^5; //定義步進電機連接端口
sbit B1=P1^6; //定義步進電機連接端口
sbit A1=P1^7; //定義步進電機連接端口

#define Coil_AB {A1=1;B1=1;C1=0;D1=0;}//AB相通電,其他相斷電
#define Coil_BC {A1=0;B1=1;C1=1;D1=0;}//BC相通電,其他相斷電
#define Coil_CD {A1=0;B1=0;C1=1;D1=1;}//CD相通電,其他相斷電
#define Coil_DA {A1=1;B1=0;C1=0;D1=1;}//D相通電,其他相斷電
#define Coil_A {A1=1;B1=0;C1=0;D1=0;}//A相通電,其他相斷電
#define Coil_B {A1=0;B1=1;C1=0;D1=0;}//B相通電,其他相斷電
#define Coil_C {A1=0;B1=0;C1=1;D1=0;}//C相通電,其他相斷電
#define Coil_D {A1=0;B1=0;C1=0;D1=1;}//D相通電,其他相斷電
#define Coil_OFF {A1=0;B1=0;C1=0;D1=0;}//全部斷電
#define Coil_OFF {A1=0;B1=0;C1=0;D1=0;}//全部斷電

main()
{

 Speed=100; //調整轉動速度,速度不可以調節的過快,不然就沒有力矩轉動了
 while(1)  
  {         
     Coil_A       
     DelayMs(Speed);
     Coil_AB                 //遇到Coil_AB  用{A1=1;B1=1;C1=0;D1=0;}代替
     DelayMs(Speed);         //改變這個參數可以調整電機轉速 ,
                             //數字越小,轉速越大,力矩越小
     Coil_B       
     DelayMs(Speed);
     Coil_BC
     DelayMs(Speed);
     Coil_C       
     DelayMs(Speed);
     Coil_CD
     DelayMs(Speed);
     Coil_D       
     DelayMs(Speed);
     Coil_DA
     DelayMs(Speed);
  }
}

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章