1、A4988模块可以驱动两相四线步进电机,模块引脚及接线图如下:

A4988两相四线步进电机驱动模块使用经验-LMLPHP

2、步进电机引线如下:

A4988两相四线步进电机驱动模块使用经验-LMLPHP

3、引脚:

ENABLE:低电平有效,用于打开和关闭场效应管的输出;

RESET:低电平有效,芯片复位;

SLEEP:低电平有效,进入睡眠模式;

STEP:电机每动一步需要给一个脉冲;

DIR:方向选择,高电平一个方向,低电平一个方向;

VMOT:电机电源输入(8-35V);

GND:地(负极);

2A、2B:一组线圈(如分别接B+、B-);

1A、1B:一组线圈(如分别接A+、A-);

VDD:逻辑电源输入(一般使用单片机的电源);

MS1、MS2、MS3:用于选择电机的类型,具体如下:

A4988两相四线步进电机驱动模块使用经验-LMLPHP

4、下面是参考使用GD32F130写的参考代码:

//首先判断转动方向,再给STEP脉冲
void motor0_run(uint16_t speed,uint16_t step,uint8_t dir)
{
uint16_t i; if(dir) //判断方向
{
GPIO_BOP(DIR_PORT) = DIR_PIN;
}
else
{
GPIO_BC(DIR_PORT) = DIR_PIN;
}
for(i = 0; i < step; i++) //给step脉冲
{
GPIO_BOP(STEP_PORT) = STEP_PIN; //step = 1
delay_1ms(speed);
GPIO_BC(STEP_PORT) = STEP_PIN; //step = 0
delay_1ms(speed);
}
}
//实现的内容是,电机先往一个方向转一段时间,在往另一个方向转一段时间
int main(void)
{
motor0_init(); //初始化相关的IO
systick_config();
while (1)
{
GPIO_BC(ENAB_PORT) = ENAB_PIN; //ENABLE = 0
motor0_run(1,1000,1);
GPIO_BOP(ENAB_PORT) = ENAB_PIN; //ENABLE = 1
delay_1ms(1000);
GPIO_BC(ENAB_PORT) = ENAB_PIN; //ENABLE = 0
motor0_run(1,1000,0);
GPIO_BOP(ENAB_PORT) = ENAB_PIN; //ENABLE = 1
delay_1ms(1000);
}
}

以上代码需要注意的的是,电机驱动完之后要失能mosfet(ENABLE拉高),不然的后电机会持续发热。

05-11 23:03