四相八拍的步进电机简单的驱动

简单介绍:

1. 步进电机:就是将电脉冲信号转变为角位移或者线位移的 开环控制 电机

2. 开环控制:即开环控制系统,就是不降控制的结果反馈回来影响当前控制的系统。 所谓开环:就是没有反馈

3. 四相八拍:也叫做半步:A---AB---B---BC---C---CD---D---DA,再次从头循环。四相四拍:A---B---C---D,循环

4. 四相:指步进电机中有四组线圈,八拍:指的是四组线圈的通电时序。

四相八拍的步进电机简单的驱动_第1张图片

附上简单正转驱动的代码:此代码是 正转的简单驱动 ,如果要反转:只需要将第二个函数中case 语句执行的顺序改为:

                                               8--->7--->6--->5--->4--->3--->2--->1--->8.......

//I/O口  1
#define     STEP_1_H        P11 = 1                //高电平
#define     STEP_1_L         P11 = 0               //低电平
//I/O口  2
#define     STEP_2_H        P12 = 1
#define     STEP_2_L        P12 = 0
//I/O口  3
#define     STEP_3_H        P13 = 1
#define     STEP_3_L        P13 = 0
//I/O口  4
#define     STEP_4_H        P14 = 1
#define     STEP_4_L        P14 = 0


uint8     motor_state     = 0;        //步进电机的状态
uint8     rotate_speed     = 0;         
uint16     motor_cnt        = 0;        //计数

/***************************************************
*函数名称:Step_Motor_Driver
*输       入:void
*输       出:void
*说       明:步进电机的驱动
***************************************************/
void Step_Motor_Driver(void)
{
    if (++ motor_cnt >= rotate_speed)             //多少秒执行一次下面switch语句
    {
        motor_cnt = 0;
        switch (motor_state)
        {
            case 0:
                    STEP_1_L;
                    STEP_2_L;
                    STEP_3_L;
                    STEP_4_L;

                    break;
                    
            case 1:                                                                                    //对应     A
                    STEP_1_H;
                    STEP_2_L;
                    STEP_3_L;
                    STEP_4_L;
                    
                    motor_state = 2;
                    
                    break;
            
            case 2:                                                                                    //对应     AB
                    STEP_1_H;
                    STEP_2_H;
                    STEP_3_L;
                    STEP_4_L;
                    
                    motor_state = 3;
                    
                    break;
                    
            case 3:                                                                                    //对应     B
                    STEP_1_L;
                    STEP_2_H;
                    STEP_3_L;
                    STEP_4_L;
                    
                    motor_state = 4;
                    
                    break;
                    
            case 4:                                                                                    //对应    BC
                    STEP_1_L;
                    STEP_2_H;
                    STEP_3_H;
                    STEP_4_L;
                    
                    motor_state = 5;
                    
                    break;
                    
            case 5:                                                                                    //对应    C
                    STEP_1_L;
                    STEP_2_L;
                    STEP_3_H;
                    STEP_4_L;
                    
                    motor_state = 6;
                    
                    break;
                    
            case 6:                                                                                    //对应     CD
                    STEP_1_L;
                    STEP_2_L;
                    STEP_3_H;
                    STEP_4_H;
                    
                    motor_state = 7;
                    
                    break;
                    
            case 7:                                                                                    //对应     D
                    STEP_1_L;
                    STEP_2_L;
                    STEP_3_L;
                    STEP_4_H;
                    
                    motor_state = 8;
                    
                    break;
                    
            case 8:                                                                                    //对应     DA
                    
                    STEP_1_H;
                    STEP_2_L;
                    STEP_3_L;
                    STEP_4_H;
                    
                    motor_state = 1;
                    break;
                    
            default:
                    break;
                    
        }
    }
}

 

 

你可能感兴趣的:(单片机学习)