STM32+A4988拓展板+HAL实现简单42步进电机驱动

这篇具有很好参考价值的文章主要介绍了STM32+A4988拓展板+HAL实现简单42步进电机驱动。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

 前言

1.A4988及其拓展板简介

2.接线

3.STM32_CUBEMX配置

4.代码详解

———————————————————————————————————————————

1.A4988及其拓展板简介
STM32+A4988拓展板+HAL实现简单42步进电机驱动,stm32,嵌入式硬件,单片机
A4988
STM32+A4988拓展板+HAL实现简单42步进电机驱动,stm32,嵌入式硬件,单片机
A4988拓展板

    A4988是一款常用的步进电机驱动器,A4988驱动器采用了步进电机的微步技术,能够实现高精度的步进控制,提高了电机的运行平稳性和精度。同时,A4988驱动器还具有保护功能,如过压、欠压、过温保护等。其下方的电位调节器可用于调节参考电压,该产品可在全、半、1/4、1/8 及 1/16 步进模式时操作双极步进电动机,输出驱动性能可达 35V ,A4988 包括一个固定关断时间电流稳压器,该稳压器可在慢或混合衰减模式下工作。

STM32+A4988拓展板+HAL实现简单42步进电机驱动,stm32,嵌入式硬件,单片机
给予MS引脚不同电平控制步进模式

    STEP、DIR 分别连接单片机的两个控制端口,EN 可以使用单片机端口控制,也可以直接连接 GND 使能,EN=0时成功被使能;MS1、MS2、MS3 按照上表“步进模式设置”,接高低电平,设置步进模式,来选择不同的步距角。例如全模式时,一个脉冲,步进电机旋转角度 1.8°;在 1/4 模式时,一个脉冲,步进电机旋转角度为 0.45°。设置脉冲的频率,来控制旋转速度。

    这里我们使用A4988拓展板进行步进电机控制,该拓展板是用跳线帽进行步进模式选择,见上图。这里我们不加跳线帽,选着全模式。拓展板输入电压为12~35V,我这选择一块12V锂电池输入,电源接口上方是普通步进电机驱动引脚,详细配置如下表。板子右边是CNC拓展接口,这里我们用不到。

    拓展板上一共有4个A4988排针母座,这里我们选择Y,进行控制,直接将A4988接上,注意方向一定不要插反,如下图。右边四个排针直接接电机四个母插,方向可以改变

STM32+A4988拓展板+HAL实现简单42步进电机驱动,stm32,嵌入式硬件,单片机
A4988方向,电位器朝下

        

STM32+A4988拓展板+HAL实现简单42步进电机驱动,stm32,嵌入式硬件,单片机
步进模式选择
2.接线图

        这里我随便找了一块F103ZET6板子,因为要稳定5V电压给拓展板的5V/GND引脚,所以我这找了一块L298N借他的5V输出一用,给予单片机和拓展板,最好将拓展板与单片机供电隔开。

STM32+A4988拓展板+HAL实现简单42步进电机驱动,stm32,嵌入式硬件,单片机
接线

STM32+A4988拓展板+HAL实现简单42步进电机驱动,stm32,嵌入式硬件,单片机

3.CUBE_MX配置

STM32+A4988拓展板+HAL实现简单42步进电机驱动,stm32,嵌入式硬件,单片机

EN脚配置为推挽输出,一开始置低电平。

STM32+A4988拓展板+HAL实现简单42步进电机驱动,stm32,嵌入式硬件,单片机

X.STEP 和X.DIR 引脚都配置为推挽输出OPP

STM32+A4988拓展板+HAL实现简单42步进电机驱动,stm32,嵌入式硬件,单片机

为了控制电机正转反转停止,我选择了三个板载KEY来控制,都选择GPIO_EXTI模式,上拉电阻,选择下降沿触发。记得在NVIC配置中勾选这三个GPIO_EXTI.

STM32+A4988拓展板+HAL实现简单42步进电机驱动,stm32,嵌入式硬件,单片机

时钟选择外部时钟,时钟树配置直接拉满。
STM32+A4988拓展板+HAL实现简单42步进电机驱动,stm32,嵌入式硬件,单片机

确定文件名,选好路径,勾选必要的生成代码配置,直接生成代码!

4.代码详解

  main.c文件

/* USER CODE BEGIN 0 */


uint8_t flag = 2;   //设置一个标志位,控制电机正反转

//这里使用宏定义控制DIR STEP的极性(个人习惯)
#define XDIR_1     HAL_GPIO_WritePin(GPIOA, X_DIR_Pin, GPIO_PIN_SET);
#define XDIR_0     HAL_GPIO_WritePin(GPIOA, X_DIR_Pin, GPIO_PIN_RESET);
#define XSTEP_1    HAL_GPIO_WritePin(GPIOA, X_STEP_Pin,GPIO_PIN_SET);
#define XSTEP_0    HAL_GPIO_WritePin(GPIOA, X_STEP_Pin, GPIO_PIN_RESET);

//手动创建一个us级别延时函数,也可以用其他方法
 void delay_us(uint32_t us)
{
    uint32_t delay = (HAL_RCC_GetHCLKFreq() / 4000000 * us);
    while (delay--)
	{
		;
	}
}

void XStep_Control_Foreward(uint16_t period,uint32_t steps)  
{ 
//电机正转,step 步长,period 周期,通过调整周期步长可以控制电机旋转状态
	uint32_t i;
	for(i=0; i <= steps; i++)
	{
		XDIR_1;
		XSTEP_1;
		delay_us(1);
		XSTEP_0;
		delay_us(period);
	}
}
void XStep_Control_Backward(uint16_t period,uint32_t steps)
{
	//电机反转
	uint32_t i;
	for(i=0; i <= steps; i++)
	{
		XDIR_0;
		XSTEP_1;
		delay_us(1);
		XSTEP_0;
		delay_us(period);
	}
}

/* USER CODE END 0 */

主函数 

  while (1)
  {
    /* USER CODE END WHILE */

    /* USER CODE BEGIN 3 */
		if(flag == 1)//当flag等于1,进行正转
					XStep_Control_Foreward(3200,1);  // 调整周期可以调整速度
		if(flag == 0)//当flag等于0,进行反转
					XStep_Control_Backward(3200,1);
		else         //当flag等于其他,停止
					XDIR_0;
  }
  /* USER CODE END 3 */
}

回调函数 

void HAL_GPIO_EXTI_Callback(uint16_t GPIO_Pin)   //按键回调函数
{
	if (GPIO_Pin == key_1_Pin)
	{
		flag = 1;  //k1按下
	}
	if (GPIO_Pin == key_2_Pin)
	{
		flag = 0;  //k2按下
		}
		if (GPIO_Pin == key_3_Pin)
	{
		flag = 2;  //k3按下
		}

}
5.实测视频

步进文章来源地址https://www.toymoban.com/news/detail-814660.html

到了这里,关于STM32+A4988拓展板+HAL实现简单42步进电机驱动的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • STM32F4驱动42步进电机(采用驱动器)

    提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 stm32f407zgt6芯片,tb6600驱动器 植树机代码,可以驱动四路42步进电机,以下是只驱动1路。 : 红线接B+(TB6600), 蓝线接B-, 绿线接A-, 黑线接A+ 该图片是转载的。根据本文代码:Signal的-统一接开发板的GND(解

    2024年02月03日
    浏览(62)
  • 【STM32】实战3.1—用STM32与TB6600驱动器驱动42步进电机(一)

    目录 0 参考资料出处 1 实验预期效果 2 硬件学习 2.1 TB6600驱动器  2.1.1 通过拨码开关设定细分与电流 2.1.2 共阴共阳接线法 2.2 开关电源(AC转DC变压器) 电源线 2.3 42步进电机 2.3.1 基本知识 2.3.2 转速细分控制 2.3.3 满步、半步、微步驱动原理 3 软件配置与硬件接线 3.1 STM32CubeM

    2024年02月02日
    浏览(58)
  • stm32使用TB6600驱动器控制42BYGH型步进电机

    stm32使用TB6600驱动器控制42BYGH型步进电机 例如:随着人工智能的不断发展,机器学习这门技术也越来越重要,很多人都开启了学习机器学习,本文就介绍了机器学习的基础内容。 24V电源就是通过电路控制开关进行高速的导通于截至,将直流电转化为高频率的交流电提供给变压

    2024年02月11日
    浏览(47)
  • ESP32设备驱动-步进电机A4988驱动模块

    在本文中,我们将介绍如何通过ESP32芯片驱动A4988 步进电机驱动器模块。 A4988 驱动器模块用于以相对简单的方式控制步进电机。 仅使用 ESP32 和 A4988 驱动模块的两个引脚,我们就可以控制步进电机的旋转速度和旋转方向。 步进电机是直流无刷同步电机。 它们以预定义值的离

    2024年02月13日
    浏览(39)
  • MKS SERVO42&57D 闭环步进电机_系列12 STM32_CAN例程

    具备脉冲接口和RS485/CAN串行接口,支持MODBUS-RTU通讯协议,内置高效FOC矢量算法。 硬件开源! 网盘: 08_例程-STM32系列(CAN) 设置波特率: 菜单 → CanRate → 500K 设置从机地址: 菜单 → CanID → 01 需要一个TTL转CAN电平模块。 接线说明 代码说明 代码功能:STM32 主板通过CAN接口读取

    2024年02月10日
    浏览(40)
  • STM32控制步进电机:基于HAL库定时器中断的闭环步进电机驱动+精准控制脉冲数

    该篇文章中用到的步进电机闭环驱动器为Emm42_V4.0步进电机闭环驱动器。该闭环驱动器自带FOC矢量闭环控制算法,能实现力矩、速度、位置三环控制。 如下图所示,该42步进闭环电机驱动器的A+、A-、B+、B-连接步进电机,通过右侧的使能、脉冲、方向端对步进电机进行驱动控制

    2024年02月01日
    浏览(56)
  • stm32f103使用DM542控制42相步进电机的原理和可行性分析

    步进电机是一种能够实现准确位置控制的电机,通常应用于需要高精度定位的场合,例如3D打印机、机器人和自动化系统等。而STM32F103是一种高性能、低功耗的微控制器,它拥有广泛的外设,适合用于控制各种电机。本文将介绍使用STM32F103控制DM542驱动器驱动42相步进电机的原

    2024年02月15日
    浏览(46)
  • MKS SERVO42&57D 闭环步进电机_系列11 STM32_脉冲和串口例程

    MKS SERVO 28D/35D/42D/57D 系列闭环步进电机是创客基地为满足市场需求而自主研发的一款产品。具备脉冲接口和RS485/CAN串行接口,支持MODBUS-RTU通讯协议,内置高效FOC矢量算法,采用高精度编码器,通过位置反馈,有效防止电机丢步。适合小型机械臂,3D打印机,雕刻机,写字机,

    2024年02月12日
    浏览(56)
  • 【STM32】使用HAL库对ULN2003控制28BYJ-48步进电机

    步进电机是将电脉冲信号转变为角位移或线位移,通过控制施加在电机线圈上的电脉冲顺序、频率和数量,可以控制步进电机的转向、速度和旋转角度。 配合以直线运动执行机构(螺纹丝杆)或齿轮箱装置,更可以实现更加复杂、精密的线性运动控制要求。 在非超载的情况下,

    2024年02月16日
    浏览(55)
  • 【STM32F429】HAL库的PWM中断,精确控制脉冲数,控制步进电机

    这两天在调步进电机,希望是使得步进电机每次都达到期望的高度。在查了一天的资料,发现大部分上传的资料都是使用CubeMX生成的,可复制性很高,但未免有失可读性,故上传我的心得经验。 本来原子哥的例程里有整合度很高的,已经封装好的精确控制步进电机前进距离的

    2024年02月08日
    浏览(53)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包