使用的是400线的编码器,步进电机每个脉冲走1.8度
int motor_stop()//返回1为停止
{
int n;
n=STOP;//读取编码器数据
if(anglechange==n)
{
return(1);
}
else
{
anglechange=n;
return(0);
}
}
viod main()
for(t1=1;t1<=202;t1++)//循环一
{
for(t=1;t<=202;t++)//循环二
{
LOW_CP;
__delay_cycles(150);
HIGH_CP;
__delay_cycles(350);//脉冲完成
if((motor_stop())==1)//读取编码器数据
{
t2++;
}
if(t2==400)//转到一圈的时候
{
__delay_cycles(1);
}
}
}
结果是 循环二 步进电机只动一下, 循环一 中步进电机转了快几圈。
当t2=400的时候,步进电机也仅动了一点点。这是怎么一回事,按照一个脉冲1.8度的话,202次脉冲差不多一圈,但是电机只动一下。
当编码器的值变化400次的时候应该也是一圈,结果还是只动了一点。
程序哪里出问题了?
我是在__delay_cycles(1); 处设置断点来看程序跑到哪里了,断点全部去掉后步进电机可以正常运转。
200字以内,仅用于支线交流,主线讨论请采用回复功能。