您當(dāng)前的位置:檢測資訊 > 科研開發(fā)
嘉峪檢測網(wǎng) 2025-03-09 09:56
1. 電機測速方法介紹
在電機控制類應(yīng)用中,經(jīng)常會需要對電機轉(zhuǎn)速進行檢測,測速常用的方式有M法測速和T法測速。
M法測速是利用在規(guī)定時間Ts內(nèi)編碼器輸出脈沖數(shù)量M1計算電機轉(zhuǎn)速,如下圖所示,信號A和B為正交編碼器的輸出信號,C解碼后的計數(shù)脈沖(4x)。

▲ 圖1. M法測速原理
單位時間(1s)內(nèi)編碼器輸出脈沖數(shù)量,即脈沖頻率:

假設(shè)電機每旋轉(zhuǎn)一圈正交編碼器(4x)的輸出脈沖數(shù)量為Z,則電機轉(zhuǎn)速為(r/min 代表圈/分鐘):

M法測速的分辨率為:

M法測速的誤差率為:

由上可知,M法測速的分辨率與速度無關(guān),要提高分辨率,即減小Q值,必須增大編碼器每圈輸出的脈沖個數(shù)Z,或者增大采樣周期Ts。M法測速誤差率與測定時間內(nèi)的脈沖數(shù)量成反比關(guān)系,轉(zhuǎn)速越高M1值越大,當(dāng)轉(zhuǎn)速很低時,M1值很小,誤差率會變大,因此M法適合高速測量。
T法測速是測量編碼器輸出兩個脈沖之間的間隔來計算轉(zhuǎn)速,通過計算高頻時鐘脈沖數(shù)量M2來衡量編碼器兩個脈沖間隔的時間。

▲ 圖2. T法測速原理
假設(shè)高頻時鐘的頻率為ft,那么編碼器兩個脈沖之間的時間:

假設(shè)電機每旋轉(zhuǎn)一圈正交編碼器(4x)的輸出脈沖數(shù)量為Z,則電機轉(zhuǎn)速為:

T法測速的分辨率為:

T法測速的誤差率為:

由上可知,T法測速的分辨率Q與M2相關(guān),當(dāng)轉(zhuǎn)速越低時M2的值越大,Q值越小,分辨能力越強。T法測速的誤差率也與M2相關(guān),當(dāng)轉(zhuǎn)速越低時M2的值越大,誤差率越小,因此T法測速非常適合低速測量。
2.M法與T法測速在STM32中的實現(xiàn)
STM32中的很多定時器都帶編碼器接口,在對輸入編碼器信號進行計數(shù)的同時,還通過該接口可以將正交編碼器的輸入信號解碼成脈沖輸出映射到TIMx_TRGO,手冊中的原文描述如下:

結(jié)合上述的測速原理,在STM32中應(yīng)用定時器的編碼器接口完成M法測速和T法測速的方案框圖如下:

▲ 圖3. STM32定時器測速方案框圖
使用兩個32bit的定時器TIM2和TIM3來處理編碼器信號,TIM3的編碼器接口與外部的編碼器信號連接直接實現(xiàn)4x計數(shù);解碼后的輸出映射到TIM3_TRGO,并作為TIM2的定時器捕獲和復(fù)位的觸發(fā)源。TIM6作為基本定時器,實現(xiàn)一個ms級別的中斷,在中斷服務(wù)程序中實現(xiàn)M法和T法測速的計算。
M法測速中,在TIM6的定時中斷服務(wù)程序中讀取TIM3的計數(shù)值TIM3_CNT,兩次連續(xù)讀取值的差值即為圖1種的M1,TIM6的中斷定時時間即為Ts,在Z為已知固定值的情況下,根據(jù)公式(1)即可計算出轉(zhuǎn)速n。
T法測速中,在TIM6的定時中斷服務(wù)程序中讀取TIM2捕獲值 TIM2_CCR1(TIM3_TRGO內(nèi)部連接到TIM2_CH1),TIM2_CCR1即為圖2中所示的編碼器連續(xù)兩個輸出脈沖之間的高頻脈沖數(shù)量M2,TIM2的時鐘頻率即為ft,在 Z為已知固定值的情況下,根據(jù)公式(2)即可計算出轉(zhuǎn)速n。
3.方案測試結(jié)果
基于以上的方案,通過定時器模擬生成編碼器輸出信號A和B,分別的高速和低速情況下進行模擬測試,結(jié)果如下,圖中Speed_M_Ref和Speed_T_Ref為速度參考值,Speed_M和Speed_T為測試結(jié)果值。
高速M法測試結(jié)果(1460rpm~2920rpm):

高速T法測試結(jié)果(1460rpm~2920rpm):


中速M法測試結(jié)果(146rpm~292rpm):

中速T法測試結(jié)果(146rpm~292rpm):

低速M法測試結(jié)果(19rpm~35rpm):


低速T法測試結(jié)果(19rpm~35rpm):

4.小結(jié)
本文簡單介紹了電機控制中M法和T法測速的原理,給出了在STM32中如何利用定時器的編碼器接口和多個定時器合作的方式實現(xiàn)兩種測速的方案,并對方案進行了模擬測試,給出測試結(jié)果,高速下M法的效果更好,在低速情況下M法測速偏差大,T法測速更適合低速測速。

來源:STM32