在 STM32 中实现电机测速的方法介绍

在 STM32 中实现电机测速的方法介绍

关键字:M 法测速, T 法测速,编码器

1. 电机测速方法介绍

在电机控制类应用中,经常会需要对电机转速进行检测,测速常用的方式有 M 法测速和 T法测速。

M 法测速是利用在规定时间 Ts 内编码器输出脉冲数量 M1 计算电机转速,如下图所示,信号 A 和 B 为正交编码器的输出信号,C 解码后的计数脉冲(4x)。

单位时间(1s)内编码器输出脉冲数量,即脉冲频率:

𝑓𝑐 = 𝑀1⁄𝑇𝑠

假设电机每旋转一圈正交编码器(4x)的输出脉冲数量为 Z,则电机转速为:

𝑛 =𝑓𝑐/𝑍∗ 60 =(60∗𝑀1)/(𝑍∗𝑇𝑠) (r/min) -----(1)

r/min 代表圈/分钟。

M 法测速的分辨率为:

𝑄 =( 60 ∗ (𝑀1 + 1))/(𝑍 ∗ 𝑇𝑠) −(60 ∗ 𝑀1)/(𝑍 ∗ 𝑇𝑠) =60/(𝑍 ∗ 𝑇𝑠)

M 法测速的误差率为:

由上可知,M 法测速的分辨率与速度无关,要提高分辨率,即减小 Q 值,必须增大编码器每圈输出的脉冲个数 Z ,或者增大采样周期 Ts。M 法测速误差率与测定时间内的脉冲数量成反比关系,转速越高 M1 值越大,当转速很低时,M1 值很小,误差率会变大,因此 M 法适合高速测量。

T 法测速是测量编码器输出两个脉冲之间的间隔来计算转速,通过计算高频时钟脉冲数量M2 来衡量编码器两个脉冲间隔的时间。

由上可知,T 法测速的分辨率 Q 与 M2 相关,当转速越低时 M2 的值越大,Q 值越小,分辨能力越强。T 法测速的误差率也与 M2 相关,当转速越低时 M2 的值越大,误差率越小,因此T 法测速非常适合低速测量。

2. M 法与 T 法测速在 STM32 中的实现

STM32 中的很多定时器都带编码器接口,在对输入编码器信号进行计数的同时,还通过该接口可以将正交编码器的输入信号解码成脉冲输出映射到 TIMx_TRGO,手册中的原文描述如下:

结合上述的测速原理,在 STM32 中应用定时器的编码器接口完成 M 法测速和 T 法测速的方案框图如下:

使用两个 32bit 的定时器 TIM2 和 TIM3 来处理编码器信号,TIM3 的编码器接口与外部的编码器信号连接直接实现 4x 计数 ;解码后的输出映射到 TIM3_TRGO,并作为 TIM2 的定时器捕获和复位的触发源。TIM6 作为基本定时器,实现一个 ms 级别的中断,在中断服务程序中实现 M 法和 T 法测速的计算。

M 法测速中,在 TIM6 的定时中断服务程序中读取 TIM3 的计数值 TIM3_CNT,两次连续读取值的差值即为图 1 种的 M1,TIM6 的中断定时时间即为 Ts,在 Z 为已知固定值的情况下,根据公式(1)即可计算出转速 n。

T 法测速中,在 TIM6 的定时中断服务程序中读取 TIM2 捕获值 TIM2_CCR1(TIM3_TRGO内部连接到 TIM2_CH1),TIM2_CCR1 即为图 2 中所示的编码器连续两个输出脉冲之间的高频脉冲数量 M2,TIM2 的时钟频率即为 ft,在 Z 为已知固定值的情况下,根据公式(2)即可计算出转速 n。

3. 方案测试结果

基于以上的方案,通过定时器模拟生成编码器输出信号 A 和 B,分别的高速和低速情况下进

行模拟测试,结果如下,图中 Speed_M_Ref 和 Speed_T_Ref 为速度参考值,Speed_M 和

Speed_T 为测试结果值。

高速 M 法测试结果(1460rpm~2920rpm):

高速 T 法测试结果(1460rpm~2920rpm):

中速 M 法测试结果(146rpm~292rpm):

中速 T 法测试结果(146rpm~292rpm):

低速 M 法测试结果(19rpm~35rpm):

低速 T 法测试结果(19rpm~35rpm):

4. 小结

本文简单介绍了电机控制中 M 法和 T 法测速的原理,给出了在 STM32 中如何利用定时器

的编码器接口和多个定时器合作的方式实现两种测速的方案,并对方案进行了模拟测试,给出测

试结果,高速下 M 法的效果更好,在低速情况下 M 法测速偏差大,T 法测速更适合低速测速。


本文档参考ST官方的《LAT1447-电机测速方法以及在STM32中的实现-M法与T法的应用详解》文档。

参考下载地址:https://download.csdn.net/download/u014319604/90471172

相关推荐
南泽兆1 小时前
MCU选型的五大维度--助力嵌入式产品设计
单片机·嵌入式硬件
SuperW3 小时前
蓝桥杯嵌入式十五届模拟二(串口DMA,占空比的另一种测量方式)
单片机·职场和发展·蓝桥杯
LS_learner4 小时前
ESP32S3 链接到 WiFi
嵌入式硬件
kyle~5 小时前
嵌入式---电机分类
嵌入式硬件
cccc卌6 小时前
MCU如何查看系统有没有卡死
单片机·嵌入式硬件
xMathematics8 小时前
STM32嵌入式开发从入门到实战:全面指南与项目实践
stm32·单片机·嵌入式硬件
SundayBear8 小时前
嵌入式MCU常用模块
单片机·嵌入式硬件·常用模块
getapi9 小时前
51单片机烧录程序演示教程
stm32·单片机·51单片机
我不是程序猿儿11 小时前
【C#】一种优雅的基于winform的串口通信管理
stm32·单片机·c#