天天看点

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

简单介绍:

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

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

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

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

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

附上简单正转驱动的代码:此代码是 正转的简单驱动 ,如果要反转:只需要将第二个函数中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;        //计数

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;

        }

    }

}

继续阅读