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拉高),不然的后電機會持續發熱。