前言

上一讲给大家介绍了步进电机的基础知识,相信大家对步进电机的基本工作原理有了一定的了解(如果没看上一节内容,可以先看一下,或学习下面网页的内容:

如果你手头有步进电机及相应的驱动板,学习完本节的内容后也你可以轻松地实现对步进电机的控制。

 

本节演示步进电机实物图如下,因没有找到电机的详细参数,只能从型号中大致猜测一些(电机工作电压4V,电流4A),结合万用表实测,得知该步进电机为两相四线电机,具体接线关系如下图所示。

STorM32电机控制 stm32 控制电机_公众号

STorM32电机控制 stm32 控制电机_电机控制_02

STorM32电机控制 stm32 控制电机_STorM32电机控制_03

 

示例详解

本节用到ST官方推出的NUCLEO-F103RB和MPS的EV8049S-U-00A 电机控制评估板 ,EV8049S-U-00A评估板使用MP8049双通道全桥芯片,可同时控制两个有刷直流电机或两个喇叭或一个步进电机,本节将用它来控制一个步进电机,手头没有EV8049S-U-00A评估板的可以用专门的步进电机驱动板(tb6560等)代替,也可以用L298N电机驱动板来控制。

STorM32电机控制 stm32 控制电机_公众号_04

 

 

STorM32电机控制 stm32 控制电机_电机控制_05

NUCLEO-F103RB对应的大致原理接线图:

STorM32电机控制 stm32 控制电机_步进电机_06

EV8049S-U-00A 电机控制评估板原理图:

 

STorM32电机控制 stm32 控制电机_步进电机_07

 

 

  1. 准备操作
  1. MP8049驱动芯片工作电压是5-26V,因不太确定步进电机工作电压具体是多少,本示例以该驱动支持的最低电压5V控制步进电机(电压越低,电机电流越小,电机越不容易烧坏,但出力也越小),关于EV8049S-U-00A评估板及MP8049双通道全桥芯片的详细数据手册可在mps官网下载),连接好NUCLEO-F103RB与EV8049S-U-00A及电机:

STorM32电机控制 stm32 控制电机_步进电机_08

 

需要用到的信号

对应MCU引脚

PWM1A

PA0

PWM1B

PA1

PWM2A

PA4

PWM1B

PB0

GND

GND

本节将直接使能PA0,PA1,PA4,PB0引却配置成通用输出模式 ,直接以接高或拉低方式控制步进电机的各相通电状态。

 

关于两相步进电机的控制节拍:

正转:

(1)四拍:A 1000,A- 0010,   B 0100,  B- 0001.

(2)八拍:A 1000,AA- 1010,A- 0010,A-B 0110,B 0100,BB- 0101,B- 0001,B-A 1001.

反转为正转的逆序,本节将演示以上两种控制方式的步进电机正反控制。

 

 

 

 

 

 

 

 

 

  1. 在STM32CubeMX中,有专门的NUCLEO-F103RB工程模板,新建一个Cube工程,芯片型号为st32f103rb:

STorM32电机控制 stm32 控制电机_公众号_09

STorM32电机控制 stm32 控制电机_电机控制_10

生成一个简单的工程模板实现了RCC,SYS,USART2接口的配置,同时还实现了LD2(LED)引脚的配置。接下来手动配置PA0,PA1,PA4,PB0为普通输出功能:

STorM32电机控制 stm32 控制电机_步进电机_11

 

生成工程:

STorM32电机控制 stm32 控制电机_公众号_12

 

 

  1. 打开工程,在main.c中加入如下代码:

STorM32电机控制 stm32 控制电机_公众号_13

STorM32电机控制 stm32 控制电机_步进电机_14

STorM32电机控制 stm32 控制电机_电机控制_15

STorM32电机控制 stm32 控制电机_步进电机_16

STorM32电机控制 stm32 控制电机_电机控制_17

经过测试,示例使用四拍方式刚好是400步走完一圈,故步距角是 360/400 = 0.9 度,又因

步距角 = 180/(相数*转子极对数),前面已实测出该步进电机相数为2 ,可知,转子极对数为100。八拍驱动方式为四拍驱动方式的1/2细分驱动,在该驱动方式下,步时电机每拍转动 1/2 步距角即0.45度故需要800个节拍才能起完一圈。

设置工程下载后自动运行:

STorM32电机控制 stm32 控制电机_STorM32电机控制_18

STorM32电机控制 stm32 控制电机_步进电机_19

编译代码,下载程序运行可直以看到步时电机成功转动起来,先是快速正一圈(4拍),然后慢速反转一圈(8拍),然后是快慢速正反各两圈,依次循环运动。程序中可以修改HAL_Delay(1)的延时时间来实现步时电机的速度控制,需要注意的是延时时间不能过短,不然步时电机可能会跟不上节拍导致丢步,延时时间太长也有可能导致动作不连贯。在步进电机转动时,可以看到如下的驱动波形图,四拍波驱动波形:

STorM32电机控制 stm32 控制电机_电机控制_20

八拍驱动波形:

STorM32电机控制 stm32 控制电机_步进电机_21

 

通过本节内容,学习了步进电机的基本节拍控制,对步进电机的控制原理有了更加具体及深刻的认识。其实现在市面上已经有了很多完整的步进电机驱动方案(芯片或控制板),这些驱动方案往往都已经完整地实现了步进电机的节拍控制,在使用时,用户往往只需给定简单的脉冲(一个脉冲走一步或一个细分步)信号及方向信号就可以实现步进电机的控制,使得控制步进电机变得更加简单。OK,本期实验完成!下一期将给大家介绍步进电机的开环速度控制,如果大家有什么疑问或是有想了解的其它内容,也欢迎大家留言!!最后喜欢这个公众号的同学们记得加关注了,每天都会有技术干货推出!!