51單片機驅動(dòng)步進(jìn)電機(雙四拍和八拍)
通常電機的轉子為永磁體,當電流流過(guò)定子繞組時(shí),定子繞組產(chǎn)生一矢量磁場(chǎng)。該磁場(chǎng)會(huì )帶動(dòng)轉子旋轉一角度,使得轉子的一對磁場(chǎng)方向與定子的磁場(chǎng)方向一致。當定子的矢量磁場(chǎng)旋轉一個(gè)角度。轉子也隨著(zhù)該磁場(chǎng)轉一個(gè)角度。每輸入一個(gè)電脈沖,電動(dòng)機轉動(dòng)一個(gè)角度前進(jìn)一步。它輸出的角位移與輸入的脈沖數成正比、轉速與脈沖頻率成正比。改變繞組通電的順序,電機就會(huì )反轉。所以可用控制脈沖數量、頻率及電動(dòng)機各相繞組的通電順序來(lái)控制步進(jìn)電機的轉動(dòng)。每一個(gè)脈沖信號對應步進(jìn)電機的某一相或兩相繞組的通電狀態(tài)改變一次,也就對應轉子轉過(guò)一定的角度(一個(gè)步距角)。當通電狀態(tài)的改變完成一個(gè)循環(huán)時(shí),轉子轉過(guò)一個(gè)齒距。四相步進(jìn)電機可以在不同的通電方式下運行,常見(jiàn)的通電方式有單(單相繞組通電)四拍(A-B-C-D-A),雙(雙相繞組通電)四拍(AB-BC-CD-DA-AB),八拍(A-AB-B-BC-C-CD-D-DA-A)。
本文引用地址:http://dyxdggzs.com/article/201611/318365.htm以下代碼為8拍:
sbit P00 = P0^0;sbit P01 = P0^1;sbit P02 = P0^2;sbit P03 = P0^3;//設置成推挽模式-將引腳強制拉高--void init_gpio(void){P0M1 = P0M1 & 0X0;P0M2 = P0M2 0XFF;P0 = 0X0; }//--horizontal motor#define A P00#define B P01#define C P02#define D P03#define h_Coil_A {A = 1;B = 0;C = 0;D = 0;}#define h_Coil_AB {A = 1;B = 1;C = 0;D = 0;}#define h_Coil_B {A = 0;B = 1;C = 0;D = 0;}#define h_Coil_BC {A = 0;B = 1;C = 1;D = 0;}#define h_Coil_C {A = 0;B = 0;C = 1;D = 0;}#define h_Coil_CD {A = 0;B = 1;C = 1;D = 0;}#define h_Coil_D {A = 0;B = 0;C = 0;D = 1;}#define h_Coil_DA {A = 0;B = 0;C = 1;D = 1;}#define h_Coil_OFF {A = 0;B = 0;C = 0;D = 0;}void h_Right_Motor(){h_Coil_Adelay_ms(speed);h_Coil_ABdelay_ms(speed);h_Coil_Bdelay_ms(speed);h_Coil_BCdelay_ms(speed);h_Coil_Cdelay_ms(speed);h_Coil_CDdelay_ms(speed);h_Coil_Ddelay_ms(speed);h_Coil_DAdelay_ms(speed);}void h_Left_Motor(){h_Coil_DAdelay_ms(speed);h_Coil_Ddelay_ms(speed);h_Coil_CDdelay_ms(speed);h_Coil_Cdelay_ms(speed);h_Coil_BCdelay_ms(speed);h_Coil_Bdelay_ms(speed);h_Coil_ABdelay_ms(speed);h_Coil_Adelay_ms(speed);}
評論