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