為了進行測速,我們一共需要3個定時器,作用分別是:①輸出PWM;②編碼器模式進行脈沖計數;③計時,確定每次測速的時間間隔。
其中,用于定時的定時器③可以用輸出PWM的定時器①代替,輸出PWM的定時器一樣有更新中斷,只要在更新中斷里運行測速程序即可。
但由于PWM定時器的頻率很快,所以我們會間隔很多個更新中斷后進行測速。
具體配置如下:
TIM2:編碼器輸入定時器
這里開啟了兩個通道計數,即Encoder Mode中設置為Encoder Mode TI1 and TI2。這里就是上文倍頻技術的4倍頻。
編碼器模式下的定時器其實是個計數器,在編碼器的脈沖到來時,Counter會相應地加和減,正轉時加,反轉時減,溢出后到達另一個極端值,比如說向上計數到達20001時會變成0
接下來我們需要設定編碼器的兩個引腳為上拉,防止誤觸發。
TIM3:PWM輸出定時器
STM32F103的定時器時鐘來源于APB總線時鐘,最高為72MHz,我們一般也配置為72MHz。APB時鐘經過PSC分頻后得到實際的定時器的計數頻率。定時器的計數頻率為
當計數值達到ARR寄存器的設定值后計數值歸零,重新開始計數,完成一個周期。在一個周期中,PWM高電平時間由比較寄存器(ARRARR)的值決定。
在設置PWM mode1且向上計數時,計數值小于ARR的值時是高電平,大于ARR值是低電平。所以PWM頻率是這樣計算的
上圖中設置初始PWM頻率為100Hz。但是設置頻率最好在20Hz~20000Hz以外,因為這個頻率內的PWM波會讓電機發出明顯的電流聲。我們可以將PSC設置為3-1,將ARR設置為1000-1,我這里作為演示就先不管了。
TIM4:計時間隔定時器
設定為10Hz即1秒計算10次速度。
最后要開啟中斷,并保證編碼器定時器的中斷優先級高于計時間隔定時器的中斷優先級,避免編碼器輸入被間隔計時中斷。
其他基礎配置不再贅述。
-
編碼器
+關注
關注
45文章
3781瀏覽量
137376 -
PWM
+關注
關注
116文章
5422瀏覽量
218379 -
計數器
+關注
關注
32文章
2288瀏覽量
96118 -
定時器
+關注
關注
23文章
3290瀏覽量
117410
發布評論請先 登錄
STM對正交編碼器測速的程序--輸入捕獲測速
AB相編碼器-變M/T法測速,10ms定時,測6000轉伺服電機!
編碼器計數原理與電機測速原理之多圖解析
平衡小車—編碼器使用教程與測速原理

L298N電機驅動控制編碼器電機

編碼器常用測速方法

評論