STM32 电机教程 8 - 步进电机开环电流控制

前言

      上一讲我们已成功实现基于STM32定时器的步进电机开环速度控制,这一节将介绍步时电机的开环电流控制,步进电机内阻较大,在电机停机或堵转时其电流可近视为 I = U/R。其中R是常量,控制U就可以控制步时电机的最大电流I,也就控制了步进电机的最大输出力。

 

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

 

示例详解

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

 

 

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

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

 

 

 

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

 

需要用到的信号

对应MCU引脚

PWM1A

PA8

PWM1B

PA9

PWM2A

PA10

PWM1B

PA11

GND

GND

配置STM32 MCU引脚PA8,PA9,PA10,PA11为定时器1的 PWM1,PWM2, PWM3, PWM4输出控制,定时器1的PWM载波频率为5K, 控制PWM1,PWM2, PWM3, PWM4输出引脚上的占空就可以控制对应的输出平均电压,从而实现对步进电机的电流控制,关于步进电机的速度及节拍控制则放在定时器2的更新中断中完成。

 

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

正转:

(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:

生成一个简单的工程模板实现了RCC,SYS,USART2接口的配置,同时还实现了LD2(LED)引脚的配置:

 

配置定时器2,用来产生定时中断,并在定时中断函数中完成步进电机的节拍换向操作,这里在定时器分频系数为(71+1)=72,默认定时时长为(999+1)=1000us ,即1ms,可实现的定时时间范围是1us 到 65.535ms。

同时开启定时器更新中断,中断等级选择默认即可:

配置定时器1,用于产生载波频率为5KHZ的PWM,使能四个通道,各通道的默认产生50%(600)的点空PWM:

生成工程:

 

 

      1. 打开工程,为工作加入stepmotor.c(放于src文件夹下) 和stepmotor.h(放于inc文件夹下)文件,并在tim.c中加入开启定时器更新中断代码:

修改stm32f1xx_it.c中代码

 

最后在main.c 中加入如下测试代码:

 

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

编译代码,下载程序运行可直以看到步时电机成功转动起来,可以看到步进电机成功实现了相同速度正转3秒反转3秒功能,同时正转用的PWM是600,反转用的PWM是 1000 ,在电源上可以看到,电机正转与反转时电流明显不一样。

结合已编写好的stepmotor.c中的代码及定时器功能,可以很方便实现步进电机的速度,方向及使能控制,操作mymotor.EN变量可以实现步进电机的起停控制,控制mymotor.Dir 变量值就可以实现步进电机的方向控制,映射好mymotor.Delay 变量的值如程序中( mymotor.Delay= &(htim1.Instance->ARR); )后操作 *mymotor.Delay  的值就可实现步进电机的速度控制( 如程序中的 *mymotor.Delay = 500; ), 通过setpwm函数接口可以调节pwm 的占空比范围是 0- 1199;。

通过本节内容,我们在步进电机开环速度控制的基上又实现了开环电流控制,实现了步进电机最大输出力的灵活控制。OK,本期内容完成!限于本人手中的实际研件条件,板子中没有电流或速度传感器,步进电机的闭环速度及电流控制不能给大家演示,不可相关的内容我们可以在PMSM及BLDC电机的相关内容中给大家介绍,下一期将给大家BLDC(直流无刷电机)基本控制原理,如果大家有什么疑问或是有想了解的其它内容,也欢迎大家留言!!最后喜欢这个公众号的同学们记得加关注了,每天都会有技术干货推出!!

 

 

文中源码及资料下载,关注十三公众号:

在公众号里给十三发送 “下载|STM32 电机教程8” :

 

 

  • 2
    点赞
  • 47
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值