步进电机简单使用:STM32 PWM输出固定数目的脉冲数(基于CubeMX)

这篇具有很好参考价值的文章主要介绍了步进电机简单使用:STM32 PWM输出固定数目的脉冲数(基于CubeMX)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

1 步进电机驱动原理

使用步进电机之前,我们需要了解步距角的概念:步进电机接收到一个脉冲转动的角度,步进电机步距角通常
为1.8°,即步进电机接收到一个脉冲转动1.8°,则若步进电机接收到360°/1.8°=200个脉冲,步进电机就能转动一圈

步进电机通过驱动器控制,驱动器如下图所示(都比较相似)
步进电机stm32,STM32,单片机,嵌入式,stm32,单片机,嵌入式硬件

驱动器侧面有拨码开关,根据图中1、2部分可以修改驱动器细分数和电流大小
细分数:类似于将步进电机的分辨率扩大,若将SW1设置为ON、SW2设置为OFF、SW3设置为OFF、SW4设置为OFF,即将驱动器细分数设置为2后,此时步进电机的分辨率扩大为200*2=400,即步进电机接收到400个脉冲才能转动一整圈,一个脉冲只能转动0.9°
图中4处与步进电机相连,连接顺序步进电机上面一般会标明,通常为黑线接A+、绿线接A-、红线接B+、蓝线接B-
图中3处为控制信号接口,分为共阴接线法、共阳接线法
步进电机stm32,STM32,单片机,嵌入式,stm32,单片机,嵌入式硬件
上图为购物网站提供的资料

共阳极接法:分别将PUL+,DIR+,EN+连接到控制系统的电源上, 如果此电源是+5V 则可直接接入,如果此电源大于+5V,则须外部另加限流电阻R,PUL-接脉冲引脚、DIR-接方向引脚、ENA-接使能引脚

共阴极接法:分别将 PUL-,DIR-,EN-连接到控制系统的地端,PUL+接脉冲引脚、DIR+接方向引脚、ENA+接使能引脚

2 程序快速配置

本文以共阳接线法为例,用一个引脚A来连接ENA-,引脚B来连接DIR-,引脚A的高低电平输出就能控制电机使能与否,引脚B的高低电平输出控制电机的正转、反转,本文重点讲解如何利用CubeMX快速实现PWM输出固定数目个脉冲数,从而实现对步进电机的精确控制
本文以f407igt6为例,打开CubeMX选择完芯片后首先进行SYS、RCC配置,具体配置其他文章均详细描述过,此处不再赘述
步进电机stm32,STM32,单片机,嵌入式,stm32,单片机,嵌入式硬件
选择定时器8的通道1,输出模式为PWM(在2处如果找不到图示选项,就转动鼠标轮,当初作者也在此处绕了很多弯),然后设置分频系数(不同定时器最高频率可能不同)和计数周期,

步进电机stm32,STM32,单片机,嵌入式,stm32,单片机,嵌入式硬件
最后别忘记设置占空比,否则输出的脉冲全为高电平或者低电平

步进电机stm32,STM32,单片机,嵌入式,stm32,单片机,嵌入式硬件
最后打开定时器更新中断

步进电机stm32,STM32,单片机,嵌入式,stm32,单片机,嵌入式硬件
设置时钟频率

步进电机stm32,STM32,单片机,嵌入式,stm32,单片机,嵌入式硬件
设置项目名称以及生成项目格式MDK

步进电机stm32,STM32,单片机,嵌入式,stm32,单片机,嵌入式硬件
将c文件单独放置于一文件夹,最后生成并打开项目加入如下代码(记得在USER CODE BEGIN-END之间添加,防止重新生成代码时将内容覆盖了)
步进电机stm32,STM32,单片机,嵌入式,stm32,单片机,嵌入式硬件

函数void PWM_Output(uint32_t pwm_num)即为输出脉冲的函数,参数pwm_num为需要输出脉冲个数

uint32_t Pulse_Cnt=0;
uint32_t Pulse_exp_Cnt=0;
void PWM_Output(uint32_t pwm_num)
{
		/*开启定时器更新中断*/
		HAL_TIM_Base_Start_IT(&htim8);
		/*开始输出PWM*/
		HAL_TIM_PWM_Start(&htim8,TIM_CHANNEL_1);
		Pulse_exp_Cnt=pwm_num;
}


void HAL_TIM_PeriodElapsedCallback(TIM_HandleTypeDef *htim){
	/*每输出一个脉冲进入一次中断,Pulse_Cnt用于计数已经产生的脉冲个数*/
	/*Pulse_exp_Cnt为需要产生的脉冲个数*/
	/*当Pulse_Cnt与Pulse_exp_Cnt为相等时,表示已经产生了预期数目的脉冲数,从而停止PWM输出*/
	if(htim==(&htim8))
	{
		Pulse_Cnt++;
		if(Pulse_Cnt==Pulse_exp_Cnt)
		{
			 HAL_TIM_Base_Stop_IT(&htim8);
			 HAL_TIM_PWM_Stop(&htim8,TIM_CHANNEL_1);
			 Pulse_Cnt=0;
		}
	}
}

3 注意事项

电机转动的角度通过控制输出脉冲个数来控制,电机转速通过控制输出的脉冲频率来控制
脉冲频率越高、电机转速越快,其输出扭矩越低
脉冲频率越低、电机转速越慢,其输出扭矩越大
脉冲过高、过低都有可能无法驱动电机;若电机只发出声音不转动,极有可能是脉冲频率设置不合理,则需要重新设置分频系数、重装载值,最后别忘了设置占空比!
文章来源地址https://www.toymoban.com/news/detail-741627.html

到了这里,关于步进电机简单使用:STM32 PWM输出固定数目的脉冲数(基于CubeMX)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

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

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

相关文章

  • 【STM32】使用HAL库对ULN2003控制28BYJ-48步进电机

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

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

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

    2024年02月11日
    浏览(39)
  • STM32自学笔记17-步进电机驱动项目-磁编码器的正常使用

    上节有这样一句话: 步进电机旋转角度和编码器输出数据之间的关系通常是非线性的。在校准过程中,可以通过采集一系列已知角度位置的数据点,并拟合出角度与编码器数据之间的关系。这个拟合可以使用曲线拟合算法或其他数学方法来实现。通过拟合,可以建立编码器输

    2024年02月16日
    浏览(41)
  • STM32控制42步进电机

    首先采用TB6600驱动外接12VDC电源。 STM32选c8t6最小系统板 接线TB6600跟32接线有共阴级接法(把ENA-,DIR-,PUL-与32共地)也有共阳接法(把ENA+,DIR+,PUL+与32共地)。这里选共阴级接法。 判断42步进电机的4根线哪两根是A相(A-和A+),哪两根是B相(B-和B+),方法:将任意两根线短接起来

    2024年02月16日
    浏览(62)
  • 【STM32篇】4988驱动步进电机

    本文介绍的步进电机驱动为毕设所用,学习时也借鉴了其他博主和商家的资料,介绍的都很详细。但对于刚入门的友友萌来说,可能还会存在的一些不解。而我就是被卡在驱动电源上。下文为我对4988驱动的一些理解,希望能帮助到刚学习步进电机的朋友。 4988驱动IC价格便宜

    2024年02月01日
    浏览(62)
  • 基于STM32的步进电机驱动设计

    程序源码提取链接放置文章底部,自行提取即可。 采用STM32驱动28BYJ4步进电机,实现正转反转,完成角度调整。步进电机是一种将电脉冲转化为角位移的执行机构。当步进驱动器接收到一个脉冲信号,它就驱动步进电机按设定的方向转动------一个固定的角度(及步进角)。可以

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

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

    2024年02月15日
    浏览(35)
  • 【STM32篇】DRV8425驱动步进电机

    【STM32篇】4988驱动步进电机_hr4988-CSDN博客         在上篇文章中使用了HR4988实现了步进电机的驱动,在实际运用过程,HR4988或者A4988驱动步进电机会存在电机噪音太大的现象。本次将向各位友友介绍一个驱动简单且非常静音的一款步进电机驱动IC。         DRV8424/25 是适

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

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

    2024年02月01日
    浏览(46)
  • 基于STM32闭环步进电机控制系统设计

    ** 单片机设计介绍,1654基于STM32闭环步进电机控制系统设计(仿真,程序,说明)   基于STM32的闭环步进电机控制系统设计是一种利用STM32微控制器开发的系统,用于实现对步进电机的精确控制。以下是该系统的一般设计概述: STM32微控制器:作为主控芯片,STM32具备高性能

    2024年02月08日
    浏览(35)

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

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

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

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

二维码1

领取红包

二维码2

领红包