程序中相关定义
#define Coil_A1 {A1=1;B1=0;C1=0;D1=0;}//A相通电,其他相断电
#define Coil_B1 {A1=0;B1=1;C1=0;D1=0;}//B相通电,其他相断电
#define Coil_C1 {A1=0;B1=0;C1=1;D1=0;}//C相通电,其他相断电
#define Coil_D1 {A1=0;B1=0;C1=0;D1=1;}//D相通电,其他相断电
#define Coil_AB1 {A1=1;B1=1;C1=0;D1=0;}//AB相通电,其他相断电
#define Coil_BC1 {A1=0;B1=1;C1=1;D1=0;}//BC相通电,其他相断电
#define Coil_CD1 {A1=0;B1=0;C1=1;D1=1;}//CD相通电,其他相断电
#define Coil_DA1 {A1=1;B1=0;C1=0;D1=1;}//D相通电,其他相断电
#define Coil_OFF {A1=0;B1=0;C1=0;D1=0;}//全部断电
采用整步工作方式(好像是叫做4相4拍)时
Coil_A1 //遇到Coil_A1 用{A1=1;B1=0;C1=0;D1=0;}代替
DelayMs(Speed); //改变这个参数可以调整电机转速 ,
Coil_B1
DelayMs(Speed);
Coil_C1
DelayMs(Speed);
Coil_D1
DelayMs(Speed);
采用4相8拍工作方式时
Coil_A1 //遇到Coil_A1 用{A1=1;B1=0;C1=0;D1=0;}代替
DelayMs(Speed); //改变这个参数可以调整电机转速 ,
Coil_AB1 //遇到Coil_A1 用{A1=1;B1=0;C1=0;D1=0;}代替
DelayMs(Speed); //数字越小,转速越大,力矩越小
Coil_B1
DelayMs(Speed);
Coil_BC1
DelayMs(Speed);
Coil_C1
DelayMs(Speed);
Coil_CD1
DelayMs(Speed);
Coil_D1
DelayMs(Speed);
Coil_DA1
DelayMs(Speed);
不管哪种方式,实际测量中,以上循环512次步进电机旋转一圈。
void step ()
{
unsigned int i; //i=512是一圈
for(i=0;i<512;i++)
{
Coil_A1 //遇到Coil_A1 用{A1=1;B1=0;C1=0;D1=0;}代替
DelayMs(Speed); //改变这个参数可以调整电机转速 ,
Coil_AB1 //遇到Coil_A1 用{A1=1;B1=0;C1=0;D1=0;}代替
DelayMs(Speed); //数字越小,转速越大,力矩越小
Coil_B1
DelayMs(Speed);
Coil_BC1
DelayMs(Speed);
Coil_C1
DelayMs(Speed);
Coil_CD1
DelayMs(Speed);
Coil_D1
DelayMs(Speed);
Coil_DA1
DelayMs(Speed);
}
}
到目前为止还是不知道这个512是怎么根据步进角算出来的,以后知道了再添加上。