步进电动机的细分:2000脉冲/转是什么意思

如题所述

表示给其2000个脉冲内转子转一圈;至于是是否有减速比未给出;
如果减速比为64,即64*2000个脉冲它转一大圈;
至于脉冲,就是按照一定的时间给它高低电平的变化,具体可翻阅手册查得。
下面贴出28BYJ48步进电机程序参考下,你应该就理解了。
#include "reg52.h"
sbit Ma=P1^0;
sbit Mb=P1^1;
sbit Mc=P1^2;
sbit Md=P1^3;
void delay(unsigned int n)
{
unsigned int i=0,j=0;
for(i=0;i<n;i++)
for(j=0;j<110;j++);
}
void motorstep_a(unsigned char i)
{
if(i==0) Ma=1,Mb=0,Mc=0,Md=0;
if(i==1) Ma=1,Mb=1,Mc=0,Md=0;
if(i==2) Ma=0,Mb=1,Mc=0,Md=0;
if(i==3) Ma=0,Mb=1,Mc=1,Md=0;
if(i==4) Ma=0,Mb=0,Mc=1,Md=0;
if(i==5) Ma=0,Mb=0,Mc=1,Md=1;
if(i==6) Ma=0,Mb=0,Mc=0,Md=1;
if(i==7) Ma=1,Mb=0,Mc=0,Md=1;
}

void motorstep_c(unsigned char i)
{
if(i==7) Ma=1,Mb=0,Mc=0,Md=0;
if(i==6) Ma=1,Mb=1,Mc=0,Md=0;
if(i==5) Ma=0,Mb=1,Mc=0,Md=0;
if(i==4) Ma=0,Mb=1,Mc=1,Md=0;
if(i==3) Ma=0,Mb=0,Mc=1,Md=0;
if(i==2) Ma=0,Mb=0,Mc=1,Md=1;
if(i==1) Ma=0,Mb=0,Mc=0,Md=1;
if(i==0) Ma=1,Mb=0,Mc=0,Md=1;
}

void motorwork(bit sign) //sign 1、0 为方向
{
unsigned char i,j;
unsigned char time=20; //更改此参数调整速度 注意! 无法过快,否则内转子会带不动外面,现象为电机疯狂振动,转轴却不转
if(sign==0)
{for(j=0;j<8;j++)
{

for(i=0;i<8;i++)
{
motorstep_a(i);
delay(time);
}
}
}
else
{for(j=0;j<8;j++)
{

for(i=0;i<8;i++)
{
motorstep_c(i);
delay(time);
}
}
}
}
void main()
{ unsigned char i;
while(1)
{
for(i=0;i<64;i++)
motorwork(1) ; //正转一圈
delay(1000); //停顿1秒
for(i=0;i<64;i++)
motorwork(0) ; //反转一圈
}
}
温馨提示:答案为网友推荐,仅供参考