步进电机

最近看了看步进电机怎么用,还没完全弄明白,实际测量了一下,先记录一下结果。
我用的是4相5线步进电机,参数如下

程序中相关定义

#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是怎么根据步进角算出来的,以后知道了再添加上。

期待 发表于09-23 14:59 浏览65535次
分享到:

已有0条评论

暂时还没有回复哟,快来抢沙发吧

添加一条新评论

只有登录用户才能评论,请先登录注册哦!

话题作者

期待
期待(总统)
金币:32857个|学分:82368个
立即注册
畅学电子网,带你进入电子开发学习世界
专业电子工程技术学习交流社区,加入畅学一起充电加油吧!

x

畅学电子网订阅号