你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

实战经验 | 在STM32中实现电机测速的方法介绍

[复制链接]
STMCU-管管 发布时间:2025-3-6 16:16
01 电机测速方法介绍
# N  r  ~) n' N# A/ i
+ Y* M$ s9 V) a& U2 {& m! A3 P
: N# r# p  y8 }' F/ ]) T
在电机控制类应用中,经常会需要对电机转速进行检测,测速常用的方式有M法测速和T法测速。
' r) T1 @/ E6 [0 U( a- g" bM法测速是利用在规定时间Ts内编码器输出脉冲数量M1计算电机转速,如下图所示,信号A和B为正交编码器的输出信号,C解码后的计数脉冲(4x)。
, F, K! {/ _6 f6 W. p. F) z
13.png
▲ 图1. M法测速原理
单位时间(1s)内编码器输出脉冲数量,即脉冲频率:
; F- P  m; f; T
14.png
假设电机每旋转一圈正交编码器(4x)的输出脉冲数量为Z,则电机转速为(r/min 代表圈/分钟):
' u: G# a, w5 O/ J# O% T# l
15.png
M法测速的分辨率为:$ Y# k. u' [4 t
16.png
M法测速的误差率为:6 D1 M. g) L% W; Z( k* W* b
17.png
由上可知,M法测速的分辨率与速度无关,要提高分辨率,即减小Q值,必须增大编码器每圈输出的脉冲个数Z,或者增大采样周期Ts。M法测速误差率与测定时间内的脉冲数量成反比关系,转速越高M1值越大,当转速很低时,M1值很小,误差率会变大,因此M法适合高速测量。3 S! T, d: m4 }. a
T法测速是测量编码器输出两个脉冲之间的间隔来计算转速,通过计算高频时钟脉冲数量M2来衡量编码器两个脉冲间隔的时间。
( a7 ~! L; \+ \! _; `( \7 C8 t' B
18.png
▲ 图2. T法测速原理
假设高频时钟的频率为ft,那么编码器两个脉冲之间的时间:
& p  w+ e1 r8 b/ D( O
19.png
假设电机每旋转一圈正交编码器(4x)的输出脉冲数量为Z,则电机转速为:
" @- @) e( L% Q4 D/ [" ^
20.png
T法测速的分辨率为:6 a% a! U6 q( W
21.png
& @! m, J4 X0 i& k5 _* H3 ~

2 N! Q7 H# X  kT法测速的误差率为:
$ P2 [5 w/ M/ R! ~% q
22.png
由上可知,T法测速的分辨率Q与M2相关,当转速越低时M2的值越大,Q值越小,分辨能力越强。T法测速的误差率也与M2相关,当转速越低时M2的值越大,误差率越小,因此T法测速非常适合低速测量。# e2 I( _2 h3 P; X+ ]

3 W: c- ]- p. N. ^& _( t% z! X8 |02M法与T法测速在STM32中的实现2 g; p  C7 F3 E8 K7 B% I" G
STM32中的很多定时器都带编码器接口,在对输入编码器信号进行计数的同时,还通过该接口可以将正交编码器的输入信号解码成脉冲输出映射到TIMx_TRGO,手册中的原文描述如下:
( U) s" A0 l: s4 K
23.png
结合上述的测速原理,在STM32中应用定时器的编码器接口完成M法测速和T法测速的方案框图如下:
: o; a  N7 d* L" [5 P6 W9 T2 S
24.png
▲ 图3. STM32定时器测速方案框图
使用两个32bit的定时器TIM2和TIM3来处理编码器信号,TIM3的编码器接口与外部的编码器信号连接直接实现4x计数;解码后的输出映射到TIM3_TRGO,并作为TIM2的定时器捕获和复位的触发源。TIM6作为基本定时器,实现一个ms级别的中断,在中断服务程序中实现M法和T法测速的计算。7 C4 U' ]* P5 I" Z' L1 n1 c
M法测速中,在TIM6的定时中断服务程序中读取TIM3的计数值TIM3_CNT,两次连续读取值的差值即为图1种的M1,TIM6的中断定时时间即为Ts,在Z为已知固定值的情况下,根据公式(1)即可计算出转速n。
! ~( r, h) k! n- i2 ZT法测速中,在TIM6的定时中断服务程序中读取TIM2捕获值 TIM2_CCR1(TIM3_TRGO内部连接到TIM2_CH1),TIM2_CCR1即为图2中所示的编码器连续两个输出脉冲之间的高频脉冲数量M2,TIM2的时钟频率即为ft,在 Z为已知固定值的情况下,根据公式(2)即可计算出转速n。
8 [; M$ T- A) N0 h  G, E6 p
* |8 V! j! u6 x2 \03方案测试结果) m: U5 x8 n, C& f3 J
基于以上的方案,通过定时器模拟生成编码器输出信号A和B,分别的高速和低速情况下进行模拟测试,结果如下,图中Speed_M_Ref和Speed_T_Ref为速度参考值,Speed_M和Speed_T为测试结果值。
' @5 Z$ E1 [4 v: Y高速M法测试结果(1460rpm~2920rpm):! E# s1 X( ]* w
25.png
高速T法测试结果(1460rpm~2920rpm):6 }/ ~( A8 U+ W# Y1 N2 z) y- Q
26.png
中速M法测试结果(146rpm~292rpm):
4 g( m/ k4 P; |2 X- `  L
27.png
中速T法测试结果(146rpm~292rpm):
- s: K( g  r7 Q6 T
28.png

0 g3 [$ M8 F& R" C

1 v4 [+ R: Y5 }- i. J1 j! o8 d低速M法测试结果(19rpm~35rpm):
1 |% {2 j, n2 _# N$ x
29.png
低速T法测试结果(19rpm~35rpm):
: A# ?+ `  r0 l0 s" ]! z/ w! X7 @
30.png
04 小结
+ O% a$ D6 y8 @2 j6 ?本文简单介绍了电机控制中M法和T法测速的原理,给出了在STM32中如何利用定时器的编码器接口和多个定时器合作的方式实现两种测速的方案,并对方案进行了模拟测试,给出测试结果,高速下M法的效果更好,在低速情况下M法测速偏差大,T法测速更适合低速测速。: q1 e0 Q( R) \, N/ E8 Y
▼▼▼
7 |& F) Z3 K$ Q下载《在STM32中实现电机测速的方法介绍》原文档。
1 d7 ~9 @5 s8 u1 ?& k" ^ LAT1447_电机测速方法以及在STM32中的实现v1.0.pdf (805.66 KB, 下载次数: 22)
1 收藏 评论0 发布时间:2025-3-6 16:16

举报

0个回答

所属标签

相似分享

官网相关资源

关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
STM32N6 AI生态系统
STM32MCU,MPU高性能GUI
ST ACEPACK电源模块
意法半导体生物传感器
STM32Cube扩展软件包
关注我们
st-img 微信公众号
st-img 手机版