电子产业一站式赋能平台

PCB联盟网

搜索
查看: 70|回复: 0
收起左侧

STM32实现M法与T法电机测速方法

[复制链接]

939

主题

939

帖子

7793

积分

高级会员

Rank: 5Rank: 5

积分
7793
发表于 4 天前 | 显示全部楼层 |阅读模式

xbpod1nl04w64025227955.gif

xbpod1nl04w64025227955.gif
9 I9 {0 E% k/ t8 R
点击上方蓝色字体,关注我们
% C: p2 X# `/ n2 M9 s6 [" w) A0 p1 l3 }5 h
公式1:2 p5 ~! {* R% D+ X

qvns0titbv564025228055.png

qvns0titbv564025228055.png
8 R! @$ W4 k' w' q3 |; {1 K# s; V
假设编码器在电机旋转一圈时输出 (Z) 个脉冲(4x模式下),则电机转速 (n) (r/min) 计算公式为:
. ^7 A& H1 W, x* h

dmaip55cvac64025228155.png

dmaip55cvac64025228155.png

, I& u8 O) ?* l9 Q9 U1 b分辨率:
6 ~. j. }* f8 [' _$ U! C7 H. d: J( N" A5 Q9 [% {0 h

cmtyfnkvvt464025228255.png

cmtyfnkvvt464025228255.png

. ^- K* W" F& Y误差率:" C+ A& g/ \; u) L7 J

) N& p- f' e* X6 L' M8 p

mpuhyfsnjuf64025228355.png

mpuhyfsnjuf64025228355.png

- [' Q) I+ B% i* T/ p: a! P由此可知,M法测速分辨率与 (T_s) 和 (Z) 相关,误差率与 (M_1) 成反比。当电机高速旋转时,(M_1) 较大,测量精度较高;但在低速情况下,(M_1) 变小,误差率显著增大,因此M法更适用于高速场景。
) s* |4 C) y1 K4 U! Y6 _0 y; K: @
* G& X& X: L  a$ B1 n1 v  o* C+ m8 d1 d1.2. T法测速原理
8 g1 S  A* w! cT法测速通过测量编码器连续两个脉冲之间的时间间隔,间接计算转速。通过捕获高频时钟脉冲数量 (M_2),可计算时间间隔,进而计算转速。
3 I/ D+ [7 A9 @, T/ E  u9 v2 t  ?: y  ]0 n0 k0 V/ y' r

xy5kdpy1osw64025228455.png

xy5kdpy1osw64025228455.png
9 m: [5 P8 L8 H4 Y9 O
公式2:
) Q* A9 ~2 |$ z$ Q. x$ v

f5zi2n1dzyj64025228555.png

f5zi2n1dzyj64025228555.png

' S3 T+ f; m8 V电机转速 (n) 为:
# r  A3 d! Y; ]( B' n* Z
. }, @* M" A  W* G; O

zzad4bunycu64025228655.png

zzad4bunycu64025228655.png
( r* d$ ~; n' D$ k4 B$ g
分辨率:& z, z% X4 F( f  }3 v* G, F/ U

) X3 a, ]" N  L: w. P- B

r1kvchhabnd64025228755.png

r1kvchhabnd64025228755.png

+ N3 T7 N; o: G3 U% \: ]4 C误差率:( ?, `8 O7 m" w! |; a! W) r
2 A. V! P( [/ I# {4 i7 K; E+ u

jhz1ml2aiwi64025228855.png

jhz1ml2aiwi64025228855.png
9 P' `6 d  v; N
T法测速在低速时 (M_2) 较大,分辨率更高,误差率更低,因此非常适合低速电机测速。, n/ y+ P) H/ N- S6 h: c3 |' K
25 o" @3 \/ e: W& j. Q
基于STM32的M法和T法测速实现) g) d: T" M% b/ B4 I" I
STM32内部定时器具备编码器接口功能,可以直接对编码器信号进行计数。9 y) X) E* p7 g8 J
( |7 h1 b; o1 R4 z
在本方案中,通过配置TIM3TIM2定时器配合,实现M法和T法测速。
: }- I- `0 S) p$ p
0 `, k! ^- M' |" M* N& A

zy4shufefwz64025228955.png

zy4shufefwz64025228955.png
& W! B& D% ^. \# o. |

- `7 m# R6 t& L2 i% K3) q3 \" c1 @' N: w
M法测速实现
1 p6 |8 G3 v* J' @8 ]在TIM6的定时中断中,每隔(T_s)读取一次TIM3的计数值,并计算两次计数之差(M_1),即可通过公式(1)计算转速。( D- ^9 ^# g4 y6 x9 S3 k1 y
; G" U" n2 I: r$ F
中断服务函数示例8 @9 G/ z( [. ]' k
3 J, B! J5 d. g
  • void TIM6_IRQHandler(void){    staticuint32_t last_cnt =0;    uint32_t current_cnt = TIM3->CNT;    // 计算M1    int32_t M1 = current_cnt - last_cnt;    if(M1 0) M1 +=0xFFFF;    // 计算转速    float speed =(60.0* M1)/(Z * Ts);    // 更新计数值    last_cnt = current_cnt;}4 P- p# K- L  ^: C+ G
    46 h" b/ Q7 H% f5 [7 j
    T法测速实现1 J- Z7 v) P# `% F- |$ n. I
    在TIM2的捕获中断中,每次捕获到一个脉冲时记录捕获值M2,通过高频时钟(f_t)计算间隔时间,进一步计算转速。
    4 w4 ]  B9 d9 T
    & U! Z  r; L9 m% G  P中断服务函数示例
    % L8 D9 P1 r6 O
    : G8 q: i- \' P  Z2 v
  • void TIM2_IRQHandler(void){    uint32_t capture = TIM2->CCR1;    // 计算时间间隔    floatdelta_t= capture /(float)ft;    // 计算转速    float speed =60.0/(Z *delta_t);}
    1 S1 l7 C$ ^$ ]0 J( w59 O. X) j9 L9 D* d& C* ?1 E" S
    测试与结果
    - D. J" v) O% U% c  f; a5.1. 高速测试(1460rpm~2920rpm)
    8 o' {& B; O" [M法测速结果:偏差小,精度高。' i" l# Y4 c( Q0 M5 Z

    - o6 F! j5 D0 \6 Q& }8 j7 E# i+ I

    5jrzi1bqpsk64025229055.png

    5jrzi1bqpsk64025229055.png
    1 J1 a& Q1 T1 E3 j: u
    * l: s# ]1 ?% @6 j4 H: E+ t
    1 h% l) y4 e% g9 p* u2 e
    T法测速结果:误差略大。( p' P2 T* y% t4 Q

    8 K# g  I' A  p

    lu4dgcw2gz164025229155.png

    lu4dgcw2gz164025229155.png

    / S$ _, U) i" j+ z) @+ V( W+ s1 k; {
    5.2. 中速测试(146rpm~292rpm)
    ) d* q5 _' t% o" TM法: 误差增加。) r3 \: S  n9 x

    8 ^+ \, C; J* R0 V

    5xs5yh0rlck64025229255.png

    5xs5yh0rlck64025229255.png

    4 N, F2 D. X* |7 s7 W/ X! I6 O6 r# G3 j5 A1 H7 @
    ' X" m* Z3 z! Q3 R) M( P
    T法: 精度较高。+ h5 W4 F; k: c5 S8 E- p( U

    2 G; K. h0 a) n0 K; b

    jiwxehild2e64025229355.png

    jiwxehild2e64025229355.png
    & Y& q- a( _6 Z% k, E: V

      L4 w% x2 g" i" W' \8 ]8 k5.3. 低速测试(19rpm~35rpm)
    * F$ a+ i, B! @9 w$ WM法: 误差非常大。
    1 N; k% J) p: I) _0 K) y
    7 H: A* r5 H( p. X, x9 T! b

    xvalr4alzeb64025229455.png

    xvalr4alzeb64025229455.png
      W8 q& N9 L' B3 d

    + o: j/ |; |9 X% w
    6 Z! O1 F( Z. j# Y1 Q
    T法: 误差较小,适合低速场合。
    2 I/ H. r/ G& m3 w5 a0 }
    8 u( o- j+ N: o% O" e. s5 u

    vmlfyonoqdp64025229555.png

    vmlfyonoqdp64025229555.png

    * o3 H& Z/ w" Y. t; e! z- Z  {" a% S1 ~( d8 ^/ ^8 {
    基于STM32硬件平台实现了两种测速方法。实验结果表明:# R- @% |, H  M, w+ Q9 H
    高速状态:M法精度更优,T法误差较大。
    , `0 M( i- m7 \/ E9 `! x* [$ g3 P7 K低速状态:T法精度更优,M法误差较大。- ?' [% I' z& W  B1 y0 {1 {
    中速状态:两者效果接近,但T法更具优势。: L1 l# W' ~8 M: ^3 C. j7 l5 z
    + j" y  T/ z" D! E
    在实际应用中,可根据电机的运行速度选择合适的测速方法,或者结合软硬件算法,动态切换测速模式,以获得最佳测速效果。
    ) _0 E; P$ e( x0 s& n/ Y

    zaaja3kjf4h64025229655.jpg

    zaaja3kjf4h64025229655.jpg
    " H2 N" V) ]+ e" z- A

    2fk0q2qt1ty64025229756.gif

    2fk0q2qt1ty64025229756.gif
    6 }% t( k. i; S6 X% p
    点击阅读原文,更精彩~
  • 回复

    使用道具 举报

    发表回复

    您需要登录后才可以回帖 登录 | 立即注册

    本版积分规则


    联系客服 关注微信 下载APP 返回顶部 返回列表