STM32 电机教程 7 - 步进电机开环速度控制
前言
上一讲我们已成功实现对步进电机的正反转动控制,并简单的通过调节节拍间的延时时间实现了简单的转速控制(开环),这一节将继续给大学介绍在STM32中通过定时器方式来实现节拍间的精确延时操作,并通时调节定时器定时中断产生的时间来实现对步进电机的开环速度控制。
本节演示步进电机实物图如下,因没有找到电机的详细参数,只能从型号中大致猜测一些(电机工作电压4V),结合万用表实测,得知该步进电机为两相四线电机,具体接线关系如下图所示。
示例详解
本节用到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为普通输出功能:
配置定时器1,用来产生定时中断,并在定时中断函数中完成步进电机的节拍换向操作,这里在定时器分频系数为(71+1)=72,默认定时时长为(999+1)=1000us ,即1ms,可实现的定时时间范围是1us 到 65.535ms。
同时开启定时器更新中断,中断等级选择默认即可:
生成工程:
- 打开工程,为工作加入stepmotor.c(放于src文件夹下) 和stepmotor.h(放于inc文件夹下)文件,并在tim.c中加入开启定时器更新中断代码:
修改stm32f1xx_it.c中代码
最后在main.c 中加入如下测试代码:
设置工程下载后自动运行:
编译代码,下载程序运行可直以看到步时电机成功转动起来,可以看到步进电机成功实现了三种速度正转及反转功能,结合已编写好的stepmotor.c中的代码及定时器功能,可以很方便实现步进电机的速度,方向及使能控制,操作mymotor.EN变量可以实现步进电机的起停控制,控制mymotor.Dir 变量值就可以实现步进电机的方向控制,映射好mymotor.Delay 变量的值如程序中( mymotor.Delay= &(htim1.Instance->ARR); )后操作 *mymotor.Delay 的值就可实现步进电机的速度控制( 如程序中的 *mymotor.Delay = 500; )。
通过本节内容,我们已经可以实现对步时电机速度的较为精确的控制,不过需在注意的是,本节对步进电机的速度控制是开环控制,如果步进电机不丢步,则速度是比较准确的,为了防止步进电机丢步,控制节拍间的间隔一定不能太小,否则很有可能发生步进电机跟不上(丢步)甚至不转的情况。OK,本期内容完成!下一期将给大家介绍步进电机的开环电流控制,如果大家有什么疑问或是有想了解的其它内容,也欢迎大家留言!!最后喜欢这个公众号的同学们记得加关注了,每天都会有技术干货推出!!
文中源码及资料下载,关注十三公众号:
在公众号里给十三发送 “下载|STM32 电机教程 7” :
STM32 电机教程 7 - 步进电机开环速度控制相关推荐
- STM32 电机教程 8 - 步进电机开环电流控制
前言 上一讲我们已成功实现基于STM32定时器的步进电机开环速度控制,这一节将介绍步时电机的开环电流控制,步进电机内阻较大,在电机停机或堵转时其电流可近视为 I = U/R.其中R是常量,控制U就可以 ...
- STM32 电机教程 6 - 步进电机转动控制
前言 上一讲给大家介绍了步进电机的基础知识,相信大家对步进电机的基本工作原理有了一定的了解(如果没看上一节内容,可以先看一下,https://blog.csdn.net/zhanglifu360188 ...
- STM32 电机教程 5 - 步进电机基础知识介绍
前言 步进电机是一种专门用于速度及位置精确控制的特种电机,它旋转是以固定的角度〈俗称步距角〉一步一步运行的,故称为步进电机. 步进电机有反应式 (VR).永磁式(PM).混合式(HB)三种类型.混 ...
- STM32 电机教程 11 - BLDC 6 步方波开环速度控制
前言 无刷直流 (Brushless Direct Current, BLDC)电机是一种正快速普及的电机类型,它可在家用电器.汽车.航空航天.消费品.医疗.工业自动化设备和仪器等行业中使用.正如名称 ...
- STM32 电机教程 25 - ST MCLIB实战之开环svpwm控制
前言 上一节已经成功手动将工程修改成绝对式位置传感器方案FOC,有些朋友可能按照上面的操作电机已经成功转动起来了,可能有些朋友的还是有点问题,电机转动不起来有很多因素,如接线相序不对,位置不对,FOC ...
- STM32 电机教程 33 - 无刷电机无感控制快速实现
前言 上一节<STM32 电机教程 32 - 基于ST X-CUBE-SPN7 无刷无感电机库的电机驱动实现>给大家分享了ST的官方的无刷电机无感控制实现方案(基于NUCLEO-F103R ...
- STM32 电机教程 30 - 无刷无感入门2
前言 无刷直流 (Brushless Direct Current, BLDC)电机是一种正快速普及的电机类型,它可在家用电器.汽车.航空航天.消费品.医疗.工业自动化设备和仪器等行业中使用.正如名称 ...
- STM32 电机教程 29 - 无刷无感入门1
前言 无刷直流 (Brushless Direct Current, BLDC)电机是一种正快速普及的电机类型,它可在家用电器.汽车.航空航天.消费品.医疗.工业自动化设备和仪器等行业中使用.正如名称 ...
- STM32 电机教程 12 - BLDC 闭环电流控制
前言 无刷直流 (Brushless Direct Current, BLDC)电机是一种正快速普及的电机类型,它可在家用电器.汽车.航空航天.消费品.医疗.工业自动化设备和仪器等行业中使用.正如名称 ...
最新文章
- 老调重弹:插件式框架开发的一个简单应用
- Lucene 4.X 倒排索引原理与实现: (3) Term Dictionary和Index文件 (FST详细解析)——直接看例子就明白了!!!...
- kotlin 类及其成员的可见性
- DevOps笔记-03:DevOps可以给我们带来什么?
- php导出mongo日志,导出mongo库到本地
- 【转】C++11 并发指南五(std::condition_variable 详解)
- Spring Cloud 搭建 Hystrix Dashboard和Turbine
- Educational Codeforces Round 10 A. Gabriel and Caterpillar 模拟
- page cache 与free
- C语言存储为2进制,浮点数的二进制存储形式及c语言验证
- Font Configuration and Customization for Open Source Systems - 白皮书翻译和深入
- C# WPF中DataGrid的数据绑定(Binding)
- 桌面右下角出现“测试模式 Windows7 内部版本7601”怎么回事?
- 今天不写技术文章,摘一篇好文,呵呵(95%中国民营企业家富不过三代 子女教育存失误)
- (论文加源码)基于自动编码器和LSTM的脑电情感识别(数据集为DEAP)提取了功率谱密度,并进行了无编码和SVM的对比实验。
- 区块链在金融行业有哪些应用
- ETL DataStage实现
- python小游戏《孙悟空大战白骨精》 (循环的练习)
- 新兴市场崛起,1 对 1 社交应用出海成“新贵”!
- 康拓排列以及全排列老年人听不懂系列