STM32 Cubemax(五) —— STM32利用PWM控制42步进电机

STM32 Cubemax(五) —— STM32利用PWM控制42步进电机

文章目录

  • STM32 Cubemax(五) —— STM32利用PWM控制42步进电机
  • 前言
  • 一、硬件准备
  • 二、代码部分
    • 1.CubeMax配置
    • 2.代码编写
  • 总结


前言

42步进电机也是经常使用的一类电机,其控制方法也十分简单,但如果要用好步进电机,还需要了解一些前瞻知识,这篇文章除了介绍其控制方法外,还会介绍其中一些必备的知识。

一、硬件准备

42步进电机
STM32 Cubemax(五) —— STM32利用PWM控制42步进电机_第1张图片
42步进电机在市面上还是挺常见的,每一款都大同小异。而市面上最为常用的为两相四线制的步进电机。两相即AB相,四线即步进电机引出来的四根线。

对于引出四线的步进电机,比较关键的是怎么区分哪两根线是同一相的,对于如何接线来说十分重要。

STM32 Cubemax(五) —— STM32利用PWM控制42步进电机_第2张图片
对于一般的万用表,都有一个检测导线两端是否接通的功能,即上图中间的那一档,有个二极管的

一般比较常用的方法是用万用表的通断功能来测量,即上图中间那个带二极管有个声波的那个。用两个表笔两两测量四根线,有响声或者说万用表上有示数的即为同一相,这里A,B相没有严格区分,即一对是A相,另一相就是B相。

还有一种较为简单的方法,先用手去转动步进电机的转轴,感受一下力。然后将其中两根线缠在一起形成短接,再去用手转动步进电机的转轴,感受一下力,如果发现此时的力比之前的要费劲了,说明这两跟线是同相的

下面介绍驱动步进电机的驱动器

TB6600步进电机驱动器
STM32 Cubemax(五) —— STM32利用PWM控制42步进电机_第3张图片
步进电机实际上是按着一定的频率,分别去给线圈上电,最后使其转起来,但我们有了驱动器就不需要考虑这么多了,里面已经帮我们把所需的电路集成好了,这里我们只需要会连线就行了。

电机驱动器 步进电机 STM32
ENA- \ GND
ENA+ \ IO
DIR- \ GND
DIR+ \ IO
PUL- \ GND
PUL+ \ PWM
B- B相线 \
B+ B相线 \
A- A相线 \
A+ A相线 \

其中还有的VCC接购买的步进电机所需的电压值

其中ENA,DIR,PUL的接线有两种,一种是共阳,另一种是共阴接法,共阳即将ENA+,DIR+,PUL+都接5V的口,而共阴接法则由上表格所示。

下面说一下ENA,DIR和PUL分别是什么。

ENA为使电机脱机状态控制端子
若按上述接线,当ENA+赋予高电平时,电机处于脱机状态,手可以转动转轴,电流撤去。故一般工作情况,ENA+要赋予低电平。

DIR为控制步进电机正反转的控制端子
按上述接线,当DIR+赋予低电平时,默认为反转,DIR+赋予高电平时,默认为正转,可以通过控制这个端子去控制步进电机按照指定方向运作

PUL为脉冲控制端子
PUL为控制步进电机最为关键的端子。而在介绍PUL前,还需要介绍一个步进电机的基础知识,即细分和步距角

步距角:输入一个电脉冲信号,步进电动机转子相应的角位移。
即说明,给一个PWM波,步进电机转子转过的角度。对于1.8°步距角的步进电机来说,转一圈则需要360/1.8=200个脉冲

步进电机细分技术:细分通俗易懂的说就是将上面所说的需要200个脉冲转一圈变成需要更多的脉冲才能转一圈了,如果是二细分,则为400个脉冲转一圈。

其中脉冲信号我们从PUL+中输入,而细分,则由驱动器上的说明设置
STM32 Cubemax(五) —— STM32利用PWM控制42步进电机_第4张图片
最后还剩下最后一项就是设置额定的电流值
STM32 Cubemax(五) —— STM32利用PWM控制42步进电机_第5张图片
我们可以按照拨码,来设置所需的电流值,其中,我们在小负载的情况下,可以设置的电流值小于额定电流,在大负载的情况下,也可以设置比额定电流大一点的电流值,只是这个时候不建议长时间使用。

二、代码部分

1.CubeMax配置

开了一个定时器,这里PWM波的频率为1kHz,如果在没有细分的情况下,1s为5圈(1圈200个脉冲,1kHz为一秒1000个脉冲)
STM32 Cubemax(五) —— STM32利用PWM控制42步进电机_第6张图片
开了两个用于ENA和DIR的IO口
在这里插入图片描述
其中PE3为ENA,默认输出为低电平,即上电就为非脱机状态
PE4为DIR,默认为高电平,即正转模式

2.代码编写

代码这一部分其实是比较简单的

只需要在main函数中开启PWM波即可

HAL_TIM_PWM_Start(&htim3,TIM_CHANNEL_4);

总结

后续还会出一期有关步进电机控制策略的相关教程。

你可能感兴趣的:(STM32,嵌入式,硬件,stm32)