完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
|
|
相关推荐
1个回答
|
|
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驱动板逻辑控制图 A4988的接线方式 在实际使用中,需要注意 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、红-绿-黄-蓝 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 ROTATE_STEP=1; delay_ms(1); ROTATE_STEP=0; delay_ms(1); } } else { ROTATE_DIR=0; for(i=0;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原理图封装 与步进电机连接方式 连接方式是依次连接步进电机的1B-1A-2A-2B,或者反向为2B-2A-1A-1B,或者1A-1B-2B-2A,其它的方式一次类推。如果电机线是标准的红蓝绿黑的颜色,可以按照颜色连接为:红-蓝-绿-黑,或相反:黑-绿-蓝-红。 调节电流 驱动板是通过一个小的电位器来实现对输出电流的配置的。可以通过用万用表测量电位器中间管脚的电位。电位和电流的关系满足下面的公式:Vref = A*0.8.也就是如果你想配置电机工作电流为1A,则电位应该配置在0.8V 遇到的问题 接上线后不动作,电流非常大 原因:接线接错,12V的电源和地接反了。万幸的是由于使用了直流源进行限流,芯片没有烧坏。 |
|
|
|
只有小组成员才能发言,加入小组>>
调试STM32H750的FMC总线读写PSRAM遇到的问题求解?
1683 浏览 1 评论
X-NUCLEO-IHM08M1板文档中输出电流为15Arms,15Arms是怎么得出来的呢?
1582 浏览 1 评论
1013 浏览 2 评论
STM32F030F4 HSI时钟温度测试过不去是怎么回事?
703 浏览 2 评论
ST25R3916能否对ISO15693的标签芯片进行分区域写密码?
1627 浏览 2 评论
1892浏览 9评论
STM32仿真器是选择ST-LINK还是选择J-LINK?各有什么优势啊?
675浏览 4评论
STM32F0_TIM2输出pwm2后OLED变暗或者系统重启是怎么回事?
538浏览 3评论
558浏览 3评论
stm32cubemx生成mdk-arm v4项目文件无法打开是什么原因导致的?
526浏览 3评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-12-4 02:19 , Processed in 0.975882 second(s), Total 47, Slave 40 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号