STM32 电机教程 6 - 步进电机转动控制
前言
上一讲给大家介绍了步进电机的基础知识,相信大家对步进电机的基本工作原理有了一定的了解(如果没看上一节内容,可以先看一下,https://blog.csdn.net/zhanglifu3601881/article/details/102844594或学习下面网页的内容:
https://www.orientalmotor.com.cn/web_seminar/stkiso2-1-1/),如果你手头有步进电机及相应的驱动板,学习完本节的内容后也你可以轻松地实现对步进电机的控制。
本节演示步进电机实物图如下,因没有找到电机的详细参数,只能从型号中大致猜测一些(电机工作电压4V,电流4A),结合万用表实测,得知该步进电机为两相四线电机,具体接线关系如下图所示。
示例详解
本节用到ST官方推出的NUCLEO-F103RB和MPS的EV8049S-U-00A 电机控制评估板 ,EV8049S-U-00A评估板使用MP8049双通道全桥芯片,可同时控制两个有刷直流电机或两个喇叭或一个步进电机,本节将用它来控制一个步进电机,手头没有EV8049S-U-00A评估板的可以用专门的步进电机驱动板(tb6560等)代替,也可以用L298N电机驱动板来控制。
NUCLEO-F103RB对应的大致原理接线图:
EV8049S-U-00A 电机控制评估板原理图:
- 准备操作
- MP8049驱动芯片工作电压是5-26V,因不太确定步进电机工作电压具体是多少,本示例以该驱动支持的最低电压5V控制步进电机(电压越低,电机电流越小,电机越不容易烧坏,但出力也越小),关于EV8049S-U-00A评估板及MP8049双通道全桥芯片的详细数据手册可在mps官网下载),连接好NUCLEO-F103RB与EV8049S-U-00A及电机:
需要用到的信号 |
对应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.
反转为正转的逆序,本节将演示以上两种控制方式的步进电机正反控制。
- 在STM32CubeMX中,有专门的NUCLEO-F103RB工程模板,新建一个Cube工程,芯片型号为st32f103rb:
生成一个简单的工程模板实现了RCC,SYS,USART2接口的配置,同时还实现了LD2(LED)引脚的配置。接下来手动配置PA0,PA1,PA4,PB0为普通输出功能:
生成工程:
- 打开工程,在main.c中加入如下代码:
经过测试,示例使用四拍方式刚好是400步走完一圈,故步距角是 360/400 = 0.9 度,又因
步距角 = 180/(相数*转子极对数),前面已实测出该步进电机相数为2 ,可知,转子极对数为100。八拍驱动方式为四拍驱动方式的1/2细分驱动,在该驱动方式下,步时电机每拍转动 1/2 步距角即0.45度故需要800个节拍才能起完一圈。
设置工程下载后自动运行:
编译代码,下载程序运行可直以看到步时电机成功转动起来,先是快速正一圈(4拍),然后慢速反转一圈(8拍),然后是快慢速正反各两圈,依次循环运动。程序中可以修改HAL_Delay(1)的延时时间来实现步时电机的速度控制,需要注意的是延时时间不能过短,不然步时电机可能会跟不上节拍导致丢步,延时时间太长也有可能导致动作不连贯。在步进电机转动时,可以看到如下的驱动波形图,四拍波驱动波形:
八拍驱动波形:
通过本节内容,学习了步进电机的基本节拍控制,对步进电机的控制原理有了更加具体及深刻的认识。其实现在市面上已经有了很多完整的步进电机驱动方案(芯片或控制板),这些驱动方案往往都已经完整地实现了步进电机的节拍控制,在使用时,用户往往只需给定简单的脉冲(一个脉冲走一步或一个细分步)信号及方向信号就可以实现步进电机的控制,使得控制步进电机变得更加简单。OK,本期实验完成!下一期将给大家介绍步进电机的开环速度控制,如果大家有什么疑问或是有想了解的其它内容,也欢迎大家留言!!最后喜欢这个公众号的同学们记得加关注了,每天都会有技术干货推出!!
文中源码及资料下载,关注十三公众号:
在公众号里给十三发送 “下载|STM32 电机教程6” :
STM32 电机教程 6 - 步进电机转动控制相关推荐
- STM32 电机教程 8 - 步进电机开环电流控制
前言 上一讲我们已成功实现基于STM32定时器的步进电机开环速度控制,这一节将介绍步时电机的开环电流控制,步进电机内阻较大,在电机停机或堵转时其电流可近视为 I = U/R.其中R是常量,控制U就可以 ...
- STM32 电机教程 7 - 步进电机开环速度控制
前言 上一讲我们已成功实现对步进电机的正反转动控制,并简单的通过调节节拍间的延时时间实现了简单的转速控制(开环),这一节将继续给大学介绍在STM32中通过定时器方式来实现节拍间的精确延时操作,并通时调 ...
- STM32 电机教程 5 - 步进电机基础知识介绍
前言 步进电机是一种专门用于速度及位置精确控制的特种电机,它旋转是以固定的角度〈俗称步距角〉一步一步运行的,故称为步进电机. 步进电机有反应式 (VR).永磁式(PM).混合式(HB)三种类型.混 ...
- STM32 电机教程 33 - 无刷电机无感控制快速实现
前言 上一节<STM32 电机教程 32 - 基于ST X-CUBE-SPN7 无刷无感电机库的电机驱动实现>给大家分享了ST的官方的无刷电机无感控制实现方案(基于NUCLEO-F103R ...
- STM32 电机教程 25 - ST MCLIB实战之开环svpwm控制
前言 上一节已经成功手动将工程修改成绝对式位置传感器方案FOC,有些朋友可能按照上面的操作电机已经成功转动起来了,可能有些朋友的还是有点问题,电机转动不起来有很多因素,如接线相序不对,位置不对,FOC ...
- STM32 电机教程 2 - 直流有刷电机转动控制
前言 有刷电机是大家最早接触的一类电机,中学时物理课堂上介绍电动机也是以它为模型来展示的.有刷电机的主要结构就是定子+转子+电刷,通过旋转磁场获得转动力矩,从而输出动能.电刷与换向器不断接触摩擦,在转 ...
- STM32 电机教程 30 - 无刷无感入门2
前言 无刷直流 (Brushless Direct Current, BLDC)电机是一种正快速普及的电机类型,它可在家用电器.汽车.航空航天.消费品.医疗.工业自动化设备和仪器等行业中使用.正如名称 ...
- STM32 电机教程 29 - 无刷无感入门1
前言 无刷直流 (Brushless Direct Current, BLDC)电机是一种正快速普及的电机类型,它可在家用电器.汽车.航空航天.消费品.医疗.工业自动化设备和仪器等行业中使用.正如名称 ...
- STM32 电机教程 9 - BLDC电机基础
本节内容整理自<无刷直流( BLDC)电机基础>( MicroChip 公司,编号 AN885)和<直流无刷电机的原理及其控制>( infineon 公司) 前言 无刷直流 ( ...
最新文章
- 2010年最火与最冷的IT职业
- jquery extend函数
- JZOJ100047.基因变异 (Standard IO)
- .Net程序员面试 中级篇 (回答Scott Hanselman的问题)
- 『设计模式』JAVA I/O 与装饰者模式UML图
- Linux驱动程序学习步骤
- 值得玩味儿的14个Python编程小技巧
- 【IJCAI 2020】篇章要素识别和篇章结构评分(下)
- 定位篇align_measurements
- 某网站登录接口password参数还原
- 跳一跳改分java源码_解密微信小程序漏洞:可下载任意小游戏源代码,“跳一跳”可改分...
- aliPay支付宝APP支付操作流程
- java 高内聚低耦合_高内聚低耦合法则实例解析
- 常见Oracle错误都在这了: ORA-00257/ORA-00313/ORA-28000/ORA-28000
- CCleaner解决的三个问题
- nib but the view outlet was not set 错误的解决办法。
- 主生产计划报表(MPS报表)用PHP解决ERP课程中白本教材第四章报表5-7的编制问题
- ws心跳检测完整代码,for websocket
- Rabin Karp 算法详解及Python实现
- elasticsearch 如何保证数据一致性?