步进电机是一种将电脉冲转化为相应的线位移和角位移的电磁机械设备。具有快速发动中止才能,在电机的负荷不超越他供给的转矩时,能够经过输入脉冲来操控他在一会儿的中止和发动。步进电机的步距角和转速只和输入脉冲的频率有关。
一般电机的转子为永磁体,当电流流过定子绕组时,定子绕组发生一矢量磁场。该磁场会带动转子旋转一视点,使得转子的一对磁场方向与定子的磁场方向共同。当定子的矢量磁场旋转一个视点。转子也跟着该磁场转一个视点。每输入一个电脉冲,电动机滚动一个视点行进一步。它输出的角位移与输入的脉冲数成正比、转速与脉冲频率成正比。改动绕组通电的次序,电机就会回转。所以可用操控脉冲数量、频率及电动机各相绕组的通电次序来操控步进电机的滚动。每一个脉冲信号对应步进电机的某一相或两相绕组的通电状况改动一次,也就对应转子转过必定的视点(一个步距角)。当通电状况的改动完结一个循环时,转子转过一个齿距。四相步进电机能够在不同的通电方法下运转,常见的通电方法有单(单相绕组通电)四拍(A-B-C-D-A),双(双相绕组通电)四拍(AB-BC-CD-DA-AB),八拍(A-AB-B-BC-C-CD-D-DA-A)。
以下代码为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);}