為了進(jìn)行測速,我們一共需要3個定時器,作用分別是:①輸出PWM;②編碼器模式進(jìn)行脈沖計數(shù);③計時,確定每次測速的時間間隔。
其中,用于定時的定時器③可以用輸出PWM的定時器①代替,輸出PWM的定時器一樣有更新中斷,只要在更新中斷里運(yùn)行測速程序即可。
但由于PWM定時器的頻率很快,所以我們會間隔很多個更新中斷后進(jìn)行測速。
具體配置如下:
TIM2:編碼器輸入定時器
這里開啟了兩個通道計數(shù),即Encoder Mode中設(shè)置為Encoder Mode TI1 and TI2。這里就是上文倍頻技術(shù)的4倍頻。
編碼器模式下的定時器其實是個計數(shù)器,在編碼器的脈沖到來時,Counter會相應(yīng)地加和減,正轉(zhuǎn)時加,反轉(zhuǎn)時減,溢出后到達(dá)另一個極端值,比如說向上計數(shù)到達(dá)20001時會變成0
接下來我們需要設(shè)定編碼器的兩個引腳為上拉,防止誤觸發(fā)。
TIM3:PWM輸出定時器
STM32F103的定時器時鐘來源于APB總線時鐘,最高為72MHz,我們一般也配置為72MHz。APB時鐘經(jīng)過PSC分頻后得到實際的定時器的計數(shù)頻率。定時器的計數(shù)頻率為
當(dāng)計數(shù)值達(dá)到ARR寄存器的設(shè)定值后計數(shù)值歸零,重新開始計數(shù),完成一個周期。在一個周期中,PWM高電平時間由比較寄存器(ARRARR)的值決定。
在設(shè)置PWM mode1且向上計數(shù)時,計數(shù)值小于ARR的值時是高電平,大于ARR值是低電平。所以PWM頻率是這樣計算的
上圖中設(shè)置初始PWM頻率為100Hz。但是設(shè)置頻率最好在20Hz~20000Hz以外,因為這個頻率內(nèi)的PWM波會讓電機(jī)發(fā)出明顯的電流聲。我們可以將PSC設(shè)置為3-1,將ARR設(shè)置為1000-1,我這里作為演示就先不管了。
TIM4:計時間隔定時器
設(shè)定為10Hz即1秒計算10次速度。
最后要開啟中斷,并保證編碼器定時器的中斷優(yōu)先級高于計時間隔定時器的中斷優(yōu)先級,避免編碼器輸入被間隔計時中斷。
其他基礎(chǔ)配置不再贅述。
-
編碼器
+關(guān)注
關(guān)注
45文章
3651瀏覽量
134772 -
PWM
+關(guān)注
關(guān)注
114文章
5193瀏覽量
214244 -
計數(shù)器
+關(guān)注
關(guān)注
32文章
2256瀏覽量
94717 -
定時器
+關(guān)注
關(guān)注
23文章
3251瀏覽量
115021
發(fā)布評論請先 登錄
相關(guān)推薦
評論