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

时间:2024-01-27 12:34:14

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

2、步进电机引线如下:

3、引脚:
ENABLE:低电平有效,用于打开和关闭场效应管的输出;
RESET:低电平有效,芯片复位;
SLEEP:低电平有效,进入睡眠模式;
STEP:电机每动一步需要给一个脉冲;
DIR:方向选择,高电平一个方向,低电平一个方向;
VMOT:电机电源输入(8-35V);
GND:地(负极);
2A、2B:一组线圈(如分别接B+、B-);
1A、1B:一组线圈(如分别接A+、A-);
VDD:逻辑电源输入(一般使用单片机的电源);
MS1、MS2、MS3:用于选择电机的类型,具体如下:

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拉高),不然的后电机会持续发热。