一、尺寸與接線
一種是紅、橙、黃、粉、藍的,電機實物如下:
注意電機的接頭可能是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);
}
}