【STM32】A4988步進(jìn)電機(jī)驅(qū)動(dòng)器的使用 | 您所在的位置:網(wǎng)站首頁(yè) › 屬龍人忌用字根 › 【STM32】A4988步進(jìn)電機(jī)驅(qū)動(dòng)器的使用 |
文章目錄
A4988使用方法A4988控制模式A4988驅(qū)動(dòng)板邏輯控制圖A4988的接線(xiàn)方式步進(jìn)電機(jī)接線(xiàn)A4988使用STM32F103C8T6進(jìn)行驅(qū)動(dòng)A4988原理圖封裝與步進(jìn)電機(jī)連接方式調(diào)節(jié)電流
遇到的問(wèn)題接上線(xiàn)后不動(dòng)作,電流非常大
A4988使用方法
A4988控制模式
(1)睡眠模式:Sleep管腳電平置0,進(jìn)入睡眠模式,驅(qū)動(dòng)器輸出待機(jī)模式;Sleep管腳置1,驅(qū)動(dòng)器處于正常工作狀態(tài); (2)正反轉(zhuǎn)模式:正轉(zhuǎn)模式DIR管腳置0或1,反轉(zhuǎn)模式置1或0; (3)復(fù)位模式:復(fù)位模式下容易消耗能量,產(chǎn)生的沖擊電流較大。直接RESET管腳置1,在不影響系統(tǒng)工作時(shí)RESET管腳置0復(fù)位。一旦驅(qū)動(dòng)芯片復(fù)位,系統(tǒng)將回歸到原始A4988 I/O端口控制狀態(tài); (4)使能模式:使能模式控制系統(tǒng)是否開(kāi)始工作,ENBALBE管腳置0開(kāi)始工作,置1停止工作; (5)細(xì)分模式:通過(guò)MS1、MS2、MS3控制細(xì)分系數(shù),A4988細(xì)分為1/16細(xì)分為最小,通過(guò)計(jì)算角度值可得最小細(xì)分角度為全步進(jìn)角度的1/16。 A4988驅(qū)動(dòng)板邏輯控制圖
對(duì)于兩相四線(xiàn)或者2相六線(xiàn),我們只需要接4根線(xiàn) 接線(xiàn)順序?yàn)锳+ A- B- B+或者B+ B- A- A+ 注意不同步進(jìn)電機(jī)的線(xiàn)序不同,比如下圖中第二個(gè),則接線(xiàn)時(shí)的順序可以為: 1、紅-藍(lán)-綠-黑 2、黑-綠-藍(lán)-紅 若第二個(gè)圖中的第一個(gè)的話(huà),則線(xiàn)序可以為 1、藍(lán)-黃-綠-紅 2、紅-綠-黃-藍(lán) 引腳連接: EN:A2 DIR:A3 STEP:A4 stepper.h #ifndef __STEPPER_ #define __STEPPER_ #include "sys.h" #include "stm32f10x.h" #define STEPPER_ROT_EN_RCC RCC_APB2Periph_GPIOA #define STEPPER_ROT_EN_PORT GPIOA #define STEPPER_ROT_EN_PIN GPIO_Pin_2 #define STEPPER_ROT_DIR_RCC RCC_APB2Periph_GPIOA #define STEPPER_ROT_DIR_PORT GPIOA #define STEPPER_ROT_DIR_PIN GPIO_Pin_3 #define STEPPER_ROT_STEP_RCC RCC_APB2Periph_GPIOA #define STEPPER_ROT_STEP_PORT GPIOA #define STEPPER_ROT_STEP_PIN GPIO_Pin_4 #define ROTATE_EN PAout(2) #define ROTATE_DIR PAout(3) #define ROTATE_STEP PAout(4) void Stepper_Rot_Initial(void); void stepper_rotate(int dir,int step); #endifstepper.c #include "delay.h" #include "stepper.h" void Stepper_Rot_Initial(void) { GPIO_InitTypeDef GPIO_InitStructure; RCC_APB2PeriphClockCmd(STEPPER_ROT_EN_RCC | STEPPER_ROT_DIR_RCC | STEPPER_ROT_STEP_RCC, ENABLE); GPIO_InitStructure.GPIO_Pin = STEPPER_ROT_EN_PIN; //enable GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IPU; GPIO_Init(STEPPER_ROT_EN_PORT, &GPIO_InitStructure); GPIO_InitStructure.GPIO_Pin = STEPPER_ROT_DIR_PIN; //dir GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IPU; GPIO_Init(STEPPER_ROT_DIR_PORT, &GPIO_InitStructure); GPIO_InitStructure.GPIO_Pin = STEPPER_ROT_STEP_PIN; //step GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IPU; GPIO_Init(STEPPER_ROT_STEP_PORT, &GPIO_InitStructure); GPIO_SetBits(STEPPER_ROT_EN_PORT,STEPPER_ROT_EN_PIN | STEPPER_ROT_DIR_PIN |STEPPER_ROT_STEP_PIN ); ROTATE_EN=0; } void stepper_rotate(int dir,int step) { int i; if(dir==1) { ROTATE_DIR=1; for(i=0;i |
CopyRight 2018-2019 實(shí)驗(yàn)室設(shè)備網(wǎng) 版權(quán)所有 |