文章目录

  • A4988使用方法
  • A4988控制模式
  • A4988驱动板逻辑控制图
  • A4988的接线方式
  • 步进电机接线
  • A4988使用STM32F103C8T6进行驱动
  • A4988原理图封装
  • 与步进电机连接方式
  • 调节电流
  • 遇到的问题
  • 接上线后不动作,电流非常大


A4988使用方法

A4988控制模式

(1)睡眠模式:Sleep管脚电平置0,进入睡眠模式,驱动器输出待机模式;Sleep管脚置1,驱动器处于正常工作状态;

(2)正反转模式:正转模式DIR管脚置0或1,反转模式置1或0;

(3)复位模式:复位模式下容易消耗能量,产生的冲击电流较大。直接RESET管脚置1,在不影响系统工作时RESET管脚置0复位。一旦驱动芯片复位,系统将回归到原始A4988 I/O端口控制状态;

(4)使能模式:使能模式控制系统是否开始工作,ENBALBE管脚置0开始工作,置1停止工作;

(5)细分模式:通过MS1、MS2、MS3控制细分系数,A4988细分为1/16细分为最小,通过计算角度值可得最小细分角度为全步进角度的1/16。

A4988驱动板逻辑控制图

android AW8733模式改变 aw988模式_#include

A4988的接线方式

android AW8733模式改变 aw988模式_android AW8733模式改变_02


在实际使用中,需要注意

1、VMOT需要加一个47uF~100uF的电容进行储能。

2、ENABLE信号可以不接

3、MS1 MS2 MS3信号可以不接,不接默认不细分。

4、SLEEP和RESET信号接在一起,上电后即是高电平。不会进入复位和休眠状态

步进电机接线

对于两相四线或者2相六线,我们只需要接4根线
接线顺序为A+ A- B- B+或者B+ B- A- A+

注意不同步进电机的线序不同,比如下图中第二个,则接线时的顺序可以为:
1、红-蓝-绿-黑
2、黑-绿-蓝-红

若第二个图中的第一个的话,则线序可以为

1、蓝-黄-绿-红

2、红-绿-黄-蓝

android AW8733模式改变 aw988模式_步进电机_03

android AW8733模式改变 aw988模式_android AW8733模式改变_04

A4988使用STM32F103C8T6进行驱动

引脚连接:
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);

#endif

stepper.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<step;i++)
       {
           ROTATE_STEP=1;
           delay_ms(1);
           ROTATE_STEP=0;
           delay_ms(1);
       } 
   }
   else
   {
       ROTATE_DIR=0;
       for(i=0;i<step;i++)
       {
           ROTATE_STEP=1;
           delay_ms(1);
           ROTATE_STEP=0;
           delay_ms(1);
       } 
   }   
}

MAIN.C

int main (void)//主程序
{
    RCC_Configuration(); //时钟设置
  
    Stepper_Rot_Initial();
    
    while(1)
    {
        stepper_rotate(1,200);
        delay_ms(1000);
        stepper_rotate(0,200);
        delay_ms(1000);
    }
}

A4988原理图封装

android AW8733模式改变 aw988模式_#define_05

与步进电机连接方式

连接方式是依次连接步进电机的1B-1A-2A-2B,或者反向为2B-2A-1A-1B,或者1A-1B-2B-2A,其它的方式一次类推。如果电机线是标准的红蓝绿黑的颜色,可以按照颜色连接为:红-蓝-绿-黑,或相反:黑-绿-蓝-红。

调节电流

驱动板是通过一个小的电位器来实现对输出电流的配置的。可以通过用万用表测量电位器中间管脚的电位。电位和电流的关系满足下面的公式:Vref = A*0.8.也就是如果你想配置电机工作电流为1A,则电位应该配置在0.8V

遇到的问题

接上线后不动作,电流非常大

原因:接线接错,12V的电源和地接反了。万幸的是由于使用了直流源进行限流,芯片没有烧坏。