在前面的帖子当中笔者跟大家介绍了如何用IAP15W413AS控制板来控制步进电机的运转,这一讲,笔者要跟大家介绍一下,如何让步进电机正反转。
在前面介绍步进电机接线方法的时候,我们可以看到,单片机跟步进电机是有三根信号线相连的,其中有一根就是方向信号线。那么就很简单了,我们要控制步进电机的正反转,就只需要控制步进电机的方向信号就可以了。
本例程序思路是这样的:
1、设定四个输入信号IN00(启动)、IN01(停止)、IN02(正转)、IN03(反转),两个输出信号OUT00(脉冲)、OUT01(方向);
2、规定当OUT01=0时,步进电机运转方向为正方向,那么OUT01=1时,步进电机运转方向即为反方向;
3、当接通IN00(启动)信号时,步进电机启动,并沿正方向一直运转,当IN03(反转)接通时,步进电机马上反向运转,当IN02(正转)信号接通时,步进电机又开始正转;
4、当IN02(停止)信号接通时,步进电机停止运转;
5、正反转只有在IN00(启动)接通过后才有效,即:未启动状态下,单独按正反转无效。
按照上述逻辑,程序代码如下:
if((!IN00)&&(!Start)) //启动
{
delay_ms(20);
if((!IN00)&&(!Start))
{
Start = 1;
Stop = 0;
Motor_EN = 1;
OUT01 = 0;
}
}
if((!IN01)&&(!Stop)) //停止
{
delay_ms(20);
if((!IN01)&&(!Stop))
{
Start = 0;
Stop = 1;
Motor_EN = 0;
Forward = 0;
Reversal = 0;
OUT01 = 0;
}
}
if((!IN02)&&Start&&(!Forward)) //正转
{
delay_ms(20);
if((!IN02)&&Start&&(!Forward))
{
Forward = 1; //正转使能
Reversal = 0;
OUT01 = 0;
}
}
if((!IN03)&&Start&&(!Reversal)) //反转
{
delay_ms(20);
if((!IN03)&&Start&&(!Reversal))
{
Forward = 0;
Reversal = 1; //反转使能
OUT01 = 1;
}
}
本系列帖子代码,考虑到新手的缘故,都用的比较简单的方式来实现,相信读者还是能看懂的,演示效果如下,详细源码见附件:
源代码: