文章目录

  • 一、A4988模块简介
  • 二、A4988引脚说明
  • 三、A4988的Vref电压调节
  • 四、STM32F103C8T6控制A4988驱动2相4线步进电机
    • 准备工作
    • 引脚接线
    • 代码示例
    • 效果展示
  • 五、A4988电机驱动板常见问题


一、A4988模块简介

  A4988 是一款功能齐全的微步进电机驱动器,内置转换器,操作简便。它设计用于在全步进、半步进、四分之一步进、八分之一步进和十六分之一步进模式下驱动双极步进电机,输出驱动能力高达 35 V 和 ±2 A。A4988 内置一个固定关断时间电流调节器,可在慢速或混合衰减模式下工作。转换器是 A4988 轻松实现的关键。只需在 STEP 输入端输入一个脉冲,即可驱动电机进行一个微步。无需相序表、高频控制线或复杂的编程接口。A4988 接口非常适合无法使用复杂微处理器或微处理器负担过重的应用。在步进操作期间,A4988 中的斩波控制会自动选择电流衰减模式:慢速或混合。在混合衰减模式下,设备初始设置为在固定关断时间内以快速衰减,然后在剩余关断时间内以慢速衰减。混合衰减电流控制可降低电机可听噪声,提高步进精度,并降低功耗。内置同步整流控制电路,用于改善 PWM 工作期间的功耗。内部电路保护包括:带滞后的热关断、欠压锁定 (UVLO) 和交叉电流保护。
特性
 ▪ 低导通电阻 (RDS(ON)) 输出
 ▪ 自动电流衰减模式检测/选择
 ▪ 混合和慢速电流衰减模式
 ▪ 同步整流,低功耗
 ▪ 内部欠压锁定 (UVLO)
 ▪ 交叉电流保护
 ▪ 3.3 V 和 5 V 兼容逻辑电源
 ▪ 热关断电路
 ▪ 接地短路保护
 ▪ 负载短路保护
 ▪ 五种可选步进模式:全步进、1/2、1/4、1/8 和 1/16
在这里插入图片描述

二、A4988引脚说明

在这里插入图片描述

EN:使能引脚(低电平有效),该引脚悬空或接低电平,A4988都可以正常工作;接高电平则不工作。

MS1,MS2,MS3:微步细分驱动控制,通过这三个引脚的逻辑电平,调整A4988驱动电机模式为全、半、1/4、1/8 及 1/16 步进模式。

MS1MS2MS3微步分辨率
LLL全步
HLL半步
LHL1/4步
HHL1/8步
HHH1/16步

RST:复位引脚(低电平有效),该引脚悬空,则默认为高电平。即该引脚没有连接任何电平时,A4988可以正常工作。

SLP:睡眠引脚,该引脚连接电平为低电平时,A4988将进入低能耗睡眠状态,即消耗最小的电能。如果无需使用SLeep功能,则可以将SLEEP引脚与RESET引脚连接,则A4988将持续保持正常能耗状态而不会进入低能耗状态。

STEP:步进引脚,通过MCU控制器向A4988发送脉冲控制信号,A4988接收到此信号后,会根据 MS1, MS2 和 MS3引脚控制电机运转。

DIR:方向引脚,通过此引脚可以调整A4988控制电机运行方向。当此引脚为低电平,A4988将控制电机顺时针旋转。高电平则逆时针旋转。

1A,1B:电机绕组1控制引脚。

2A,2B:电机绕组2控制引脚。

VMOT:电机电源正极(可用电源电压为8V ~ 35V)注:此引脚用于连接为电机供电的电源。

VDD:逻辑电源正极(3 – 5.5伏)注:此引脚用于为A4988电机驱动板供电。

GND:电机电源接地和逻辑电源接地。

三、A4988的Vref电压调节

  Vref电压调节是通过A4988上的电位器旋钮调节Vref参考电压。该电压将直接影响到步进电机在工作时流过线圈的电流强度。请注意,这一步操作非常重要,如果忽略这一步有可能会产生电机损坏的后果。
A4988 Vref参考电压计算公式:

Rs: 市面上A4988模块上的Rs电阻值一般有3种类型,0.05 欧姆, 0.1 欧姆或0.2 欧姆。店铺的A4988模块上的Rs电阻值为0.1欧姆,大部分A4988模块顺时针旋转电位器可调大Vref,逆时针旋转电位器调小Vref。

Vref: 电位器金属旋钮和GND之间的电压即为Vref。可使用小改锥旋转电位器旋钮从而改变Vref。(如下图所示)。

Imax:步进电机工作时,线圈允许流过的最大电流。

  例:Rs为0.1欧姆,电机Imax为1.5A,通过以上公式计算,Vref参考电压为1.2V。即将通过调节电位器旋钮 将Vref调节为1.2伏特左右。

测量Vref时注意:

  1. A4988模块的VDD引脚需要连接+5V电压
  2. A4988模块的GND引脚必须与电路中的其它设备共地
  3. A4988模块的VMOT引脚无需通电,但是通电也不影响Vref的测量。
  4. A4988模块的1A/1B/2A/2B引脚可以不与步进电机连接,但连接也不会影响Vref的测量

四、STM32F103C8T6控制A4988驱动2相4线步进电机

准备工作

  STM32F103C8T6最小系统板,A4988驱动模块,OLED显示屏,EC11旋转编码器,按键和导线若干。

引脚接线

STM32F103C8T6A4988
电机电源正VMOT
电机电源负GND
3.3VVDD
GNDGND
PA0STEP
PA4EN
PA5DIR
PB3MS1
PB4MS2
PB5MS3
PA1编码器的A ,控制频率和占空比的调节
PA2编码器的B,控制频率和占空比的调节
PA3编码器的S,切换调节频率还是调节占空比
PA6与PA0短接,捕获PWM
PB10按键1,控制细分切换
PB11按键2,控制方向切换

代码示例

A4988.c

#include "A4988.h"
#include "Delay.h"void A4988_Init(void)
{RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA, ENABLE);RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB, ENABLE);GPIO_InitTypeDef GPIO_InitStructure;GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;GPIO_InitStructure.GPIO_Pin = GPIO_Pin_4 | GPIO_Pin_5;GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;GPIO_Init(GPIOA, &GPIO_InitStructure);GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;GPIO_InitStructure.GPIO_Pin = GPIO_Pin_3 | GPIO_Pin_4 | GPIO_Pin_5;GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;GPIO_Init(GPIOB, &GPIO_InitStructure);GPIO_ResetBits(GPIOA, GPIO_Pin_4 | GPIO_Pin_5);GPIO_ResetBits(GPIOB, GPIO_Pin_3 | GPIO_Pin_4 | GPIO_Pin_5);
}void A4988_SetStep(uint8_t step)
{switch(step){case 1:		//1细分A4988_MS1_L;A4988_MS2_L;A4988_MS3_L;break;case 2:		//1/2细分A4988_MS1_H;A4988_MS2_L;A4988_MS3_L;break;case 3:		//1/4细分A4988_MS1_L;A4988_MS2_H;A4988_MS3_L;break;case 4:		//1/8细分A4988_MS1_H;A4988_MS2_H;A4988_MS3_L;break;case 5:		//1/16细分A4988_MS1_H;A4988_MS2_H;A4988_MS3_H;break;}
}void A4988_SetDir(uint8_t dir)
{	A4988_EN_H;Delay_ms(20);if(dir == 1) A4988_DIR_Helse A4988_DIR_LA4988_EN_L;
}

main.c

#include "stm32f10x.h"                  // Device header
#include "Delay.h"
#include "OLED.h"
#include "KEY.h"
#include "A4988.h"
#include "PWM.h"
#include "IC.h"
#include "Encoder.h"uint8_t step = 0;
uint8_t dir = 0;int main(void)
{OLED_Init();PWM_Init();A4988_Init();Key_Init();Encoder_Init();OLED_ShowString(1, 5, "A4988");OLED_ShowString(1, 12, "F");  //F:调节频率,D:调节占空比OLED_ShowString(2, 4, "0000Hz");OLED_ShowString(2, 11, "000%");OLED_ShowString(3, 4, "1   ");OLED_ShowString(3, 11, "+");PWM_SetPrescaler(720 - 1);			//Freq = 72M / (PSC + 1) / 100PWM_SetCompare1(50);				//Duty = CCR / 100A4988_SetDir(1);A4988_SetStep(1);Update_Display();while (1){int16_t encoder_change = Encoder_GetValue();if(encoder_change != 0){if(setting_mode == 0)  // 调频率{pwm_freq += encoder_change * 10;if(pwm_freq > 2000) pwm_freq = 2000;if(pwm_freq < 10) pwm_freq = 10;PWM_SetPrescaler(pwm_freq - 1);}else  // 调占空比{pwm_duty += encoder_change;if(pwm_duty > 100) pwm_duty = 100;if(pwm_duty < 0) pwm_duty = 0;PWM_SetCompare1(pwm_duty);}Update_PWM();Update_Display();}if(Encoder_GetKey())  // 按下编码器按键切换调节模式{setting_mode ^= 1;  // 0/1切换Update_Display();}Delay_ms(20);KeyEvent_TypeDef key_event = Key_Scan();switch (key_event){case KEY_MODE_CLICK:// Mode键短按事件step++;if (step > 5) step = 1;switch(step){case 1: A4988_SetStep(1); OLED_ShowString(3,4,"1   "); break;case 2: A4988_SetStep(2); OLED_ShowString(3,4,"1/2 "); break;case 3: A4988_SetStep(3); OLED_ShowString(3,4,"1/4 "); break;case 4: A4988_SetStep(4); OLED_ShowString(3,4,"1/8 "); break;case 5: A4988_SetStep(5); OLED_ShowString(3,4,"1/16"); break;}break;case KEY_DIR_CLICK:dir++;if(dir > 2) dir = 1;if(dir == 1) {A4988_SetDir(1); OLED_ShowString(3, 11, "+"); //正转}else{A4988_SetDir(0);OLED_ShowString(3, 11, "-"); //反转}break;}Delay_ms(20);}
}

效果展示

五、A4988电机驱动板常见问题

 1)4988驱动板可以驱动多大的电流?
  如果4988芯片上没有加散热片,电流最好在1A以下。如果加散热片,电流可以达到2A。

 2)步进电机的连接方式是什么?
  先判断哪两根线为同一相,短接两两线有明显阻力的为同一相,A相和B相可以不区分,只有是同一相接在同一个电机绕组控制引脚即可。

 3)接上电后,电机左右抖动不能正常运行是什么原因?
  电机出现抖动一般有两个原因,一是缺相:可能是4988与电机没有接好导致4988的输出端某一相断开,造成电机缺相从而抖动。也有可能是步进电机接线接错:如果步进电机没有正确的进行连接,电机会出现抖动的情况。二是驱动电流过大或过小导致的,调节板载上的电位器调到电机正常平稳运行就可。

 4)电机丢步如何解决?
  相电流的大小跟步进电机的扭力有直接关系,如果感觉你的步进电机扭力不足、丢步,可能是4988输出的电流太小。您可以调节A4988模块上的电位器调节A4988模块的输出电流强度。具体调节方法请参考上面的Vref电压的调节方法。请注意:如A4988输出电流强度大于电机工作电流强可能会烧毁您的步进电机。请小心调节。

 5)4988可以驱动两相六线或两相五线的电机吗?
  可以,两相连线按照问题2连接,将中间抽头悬空即可。

 6)电机停止转动时会有滋滋的电流声。
  这是正常现象。步进电机有一个参数-步距角。通过细分驱动可以缩小步进角度,比如步距角为1.8度的步进电机,采用16细分,最小可以走的角度是1.8/16=0.1125度。由于这个角度非常小,当电机停止时,可能处于非电机物理位置(1.8度为一个物理位置)。因此步进电机在静止时会有电流声,这属于正常现象,不用担心。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.pswp.cn/pingmian/93915.shtml
繁体地址,请注明出处:http://hk.pswp.cn/pingmian/93915.shtml
英文地址,请注明出处:http://en.pswp.cn/pingmian/93915.shtml

如若内容造成侵权/违法违规/事实不符,请联系英文站点网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

基于单片机智能晾衣架/智能窗户/智能窗帘设计

传送门 &#x1f449;&#x1f449;&#x1f449;&#x1f449;其他作品题目速选一览表 &#x1f449;&#x1f449;&#x1f449;&#x1f449;其他作品题目功能速览 概述 智能晾衣架系统基于单片机设计&#xff0c;融合传感器技术与物联网功能&#xff0c;实现衣物的自…

Python爬虫实战:研究dark-fantasy,构建奇幻文学数据采集分析系统

1. 引言 1.1 研究背景 奇幻文学作为奇幻文学的重要子类别,融合了哥特式元素与传统奇幻设定,以其对人性的深刻探索和复杂的道德困境构建,成为当代文学研究的重要对象。与传统奇幻文学强调英雄主义和光明战胜黑暗的叙事不同,奇幻往往展现道德边界、复杂的角色动机和充满不确…

算法提升树形数据结构-(线段树)

今天介绍有关线段树的相关部分的知识&#xff0c;线段树是树的数据结构中十分重要的算法处理思想。1.建立初始树的条件2.基本框架3.区间修改的相关代码4.区间查询的代码题目描述给定一个长度为 N 的数组 a&#xff0c;其初值分别为 a1​,a2​,...,aN​。现有 Q 个操作&#xff…

java-代码随想录第十四天| 二叉树层序遍历相关题目

目录 102.二叉树的层序遍历 107.二叉树的层次遍历II 199.二叉树的右视图 637.二叉树的层平均值 429.N叉树的层序遍历 515.在每个树行中找最大值 116.填充每个节点的下一个右侧节点指针 117.填充每个节点的下一个右侧节点指针II 104.二叉树的最大深度 111.二叉树的最小…

C++智能指针详解:告别内存泄漏,拥抱安全高效

✨✨小新课堂开课了&#xff0c;欢迎欢迎~✨✨ &#x1f388;&#x1f388;养成好习惯&#xff0c;先赞后看哦~&#x1f388;&#x1f388; 所属专栏&#xff1a;C&#xff1a;由浅入深篇 小新的主页&#xff1a;编程版小新-CSDN博客 引言&#xff1a;为什么引入智能指针&#…

算法训练营day57 图论⑦ prim算法精讲、kruskal算法精讲

两种最小生成树算法讲解 prim算法精讲 卡码网53. 寻宝 本题题目内容为最短连接&#xff0c;是最小生成树的模板题&#xff0c;那么我们来讲一讲最小生成树。最小生成树可以使用prim算法也可以使用kruskal算法计算出来。本篇我们先讲解prim算法。 最小生成树是所有节点的最小连…

148-基于Python的2024物流年度销售收入数据可视化分析系统

基于Python Django的物流数据可视化分析系统开发实录 项目背景 随着物流行业数据量的激增&#xff0c;企业对数据分析和可视化的需求日益增长。传统的Excel分析方式难以满足多维度、实时、交互式的数据洞察需求。为此&#xff0c;我们开发了一个基于Python Django的物流年度销售…

Python中的关键字参数:灵活与可读性的完美结合(Effective Python 第23条)

在Python编程中&#xff0c;函数参数的传递方式灵活多样&#xff0c;而其中一种特别强大的方式就是关键字参数。关键字参数不仅能够提升代码的可读性&#xff0c;还为函数的设计和调用提供了极大的便利。本文将深入探讨关键字参数的用法、优势以及实际应用中的注意事项。 一、关…

005.Redis 主从复制架构

主从复制概念与原理 核心概念 主节点&#xff08;Master&#xff09;&#xff1a;唯一接受写操作的节点&#xff0c;数据修改后异步复制到从节点。 从节点&#xff08;Replica&#xff09;&#xff1a;复制主节点数据的节点&#xff0c;默认只读&#xff08;可配置为可写但不…

Android Studio 模拟器 “******“ has terminated 问题

问题&#xff1a;Android Studio 模拟器 "**" has terminated 问题设备信息&#xff1a;CPU:I5 7500U RAM:64GB System:Windows 10 64位解决&#xff1a; 网上所有办法都尝试后仍然不可行可尝试如下办法&#xff1a;1、此电脑→管理→设备管理→显示适配器→右击→…

uniapp 懒加载图片

实现的功能 1.一次性获取图片。 2.按用户视野范围内看到的图片滚动下来进行懒加载,提高浏览器性能。 3.不要一次性加载全部的图片 1.给父组件绑定一个滚动监听 1.页面路径:/pages/Home/index.vue 不在一个页面的话用 EventBus去触发。@scroll="handleScroll2" Ev…

Android - 资源类型 MINE Type

一、概念MINE&#xff08;Multipurpose Internet Mail Extensions&#xff09;最初是为了标识电子邮件附件的类型&#xff0c;在 HTML 中使用 content-type 属性表示&#xff0c;描述了文件类型的互联网标准。格式&#xff1a;媒体类型/子类型&#xff0c;可使用通配符*。如 au…

php8.+ 新函数总结

PHP系统函数是PHP核心提供的内置函数&#xff0c;用于执行常见任务&#xff0c;如字符串操作、数组处理、数学运算等。它们通过预定义代码块封装了特定功能&#xff0c;开发者可直接调用而无需重复编写代码。 而 PHP 8.0以后又新增了一些实用函数&#xff0c;今天总结部分常见的…

Qt事件处理机制详解

一、事件处理基本流程在Qt中&#xff0c;所有从QObject派生的类都能处理事件。事件处理的核心流程如下&#xff1a;事件入口函数&#xff1a;bool QObject::event(QEvent *e)参数e包含事件信息&#xff0c;通过e->type()获取事件类型返回值true表示事件已被处理&#xff0c;…

Zynq中级开发七项必修课-第三课:S_AXI_GP0 主动访问 PS 地址空间

Zynq中级开发七项必修课-第三课&#xff1a;S_AXI_GP0 主动访问 PS 地址空间 目标1.0 编写 AXI-Lite Master&#xff1a;按键计数 → 写入 PS 内存1.1 PL 触发中断 → PS 响应并串口打印按键计数值BD图axi_lite_master.v // // AXI4-Lite Simple Master (single-shot, non-pip…

CVPR | 2025 | MAP:通过掩码自回归预训练释放混合 Mamba - Transformer 视觉骨干网络的潜力

文章目录CVPR | 2025 | MAP&#xff1a;通过掩码自回归预训练释放混合 Mamba - Transformer 视觉骨干网络的潜力创新点初步研究初步结论方法确定一个混合网络方法掩码机制掩码比例MAP的transformer解码器重建目标实验ImageNet-1k 上的 2D 分类CVPR | 2025 | MAP&#xff1a;通过…

Spring Boot + Spring AI 最小可运行 Demo

一. 项目依赖&#xff08;pom.xml&#xff09;<project xmlns"http://maven.apache.org/POM/4.0.0"xmlns:xsi"http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation"http://maven.apache.org/POM/4.0.0https://maven.apache.org/xsd/mav…

AI重塑校园教育:中小学AI智慧课堂定制方案+AI作业批改减负,告别一刀切学生进步快

家长们&#xff0c;你有没有听过孩子抱怨上学的烦恼&#xff1f;课堂上老师讲的内容&#xff0c;有的同学觉得太简单 “吃不饱”&#xff0c;有的却跟不上 “听不懂”&#xff1b;放学后作业堆成山&#xff0c;老师要熬夜批改到半夜&#xff0c;错题反馈要等第二天才能拿到&…

旧物循环,交易新生——旧物回收二手交易小程序,引领绿色消费新风尚

在资源日益紧张、环境污染问题日益突出的今天&#xff0c;绿色消费已经成为时代发展的必然趋势。旧物回收二手交易小程序&#xff0c;作为绿色消费的重要载体&#xff0c;正以其独特的优势和魅力&#xff0c;引领着一场关于旧物循环、交易新生的绿色革命。一、旧物循环&#xf…

刷机维修进阶教程-----如何清除云账号 修复wifi 指南针 相机 指纹等刷机故障

在刷机、系统升级或降级过程中,是否遇到过以下问题:WiFi无法开启、相机无响应、指南针或陀螺仪失灵 指纹等故障?另外,云账号是否仍会保留,即使通过9008模式刷机也无法彻底清除?那么这篇博文都可以找到答案。 通过博文了解💝💝💝 1💝💝💝----云账号信息分区如…