1、步進電機
以滾珠絲桿為例,作假設如下:
① 步進電機與滾珠絲桿的減速比是2:1;
② 絲桿轉一圈所移動的距離是2mm;
通過上面的1和2,我們可以得出我們需要的東西:步進電機轉1圈所對應的移動距離是1mm。
步進電機通過PWM波輸入來控制其輸出速度,步進的意思是每一個PWM脈沖會使電機前進/后退1步。步進細分數就是關聯脈沖與電機速度的重要參數。這里假設細分數是1000步,意思就是,每1000個脈沖會使步進電機轉動一圈,倒過來講就是每1個PWM脈沖,會使步進電機運動0.001步,也就是轉動0.001圈。這就是我們需要的第二個東西,把這兩個放一起,可以看到如下:
③ 步進電機轉1圈所對應的移動距離是1mm;
④ 每1個PWM脈沖,會使步進電機運動0.001步,也就是轉動0.001圈;
通過上面3和4,我們可以得出:每1個PWM脈沖,會使運動機構運動0.001mm。
2、定時器中斷與PWM輸出
我們都知道,PWM的輸出是CNT和CCRx寄存器比較的結果,所以只要配置好PSC、ARR和CCRx,就可以確定輸出PWM的頻率,公式是:
PWM頻率 = APBx的頻率/(PSC+1)*(ARR+1)
占空比 = CCRx/ARR * 100%
為了輸出占空比為50%的方波,我們令CCRx=ARR/2。這樣就可以確定輸出頻率了,頻率其實就是每秒的脈沖數,比方說100HZ,其代表的就是100脈沖/秒。而我們在前面2里頭已經知道了,在這套假設的系統中,1個脈沖對應運動機構實際運行0.001mm,那么1000HZ就代表,在這個頻率下,運動機構的運動速度是1mm/s。到這里我們就可以知道如何控制速度了,我們按1個脈沖為最小單位,即0.001mm/s的速度,在不考慮失步的情況下,我們的實際速度就能從0.001mm/s到任意大的區間里自由選擇了,其控制精度為0.001mm/s。
這時候如果我們打開比較中斷,每1次中斷累加1,那么這個累加數就是我們的實際移動距離,精度為0.001mm。到此為止,我們就可以地控制運動機構的移動距離,並且記錄理論移動距離了。注意這里是理論移動距離,由於存在各方面原因,實際的移動不一定就是我們認為的距離。
3、主從定時器與精確的步進電機控制
以上面的情況,我們舉個極端的例子,我們將控制運動機構以100mm/s的速度運動,這時候我們的PWM頻率會達到100KHz,如果每次定時器比較都進一次中斷,那么我們將每隔0.01ms進入一次中斷。系統不可能僅有這一個中斷,而如果我們將此中斷優先級設的較高,則極大概率會一直占用中斷而導致別的中斷無法正常執行,如果設的較低則會導致距離累計不准確,並且我們的系統不可能只執行中斷而不去做別的事情,這明顯是不合理的。這也是為什么我們需要使用主從定時器的原因。
⑴ 主從定時器的概念:
一句話總結,從定時器使用主定時器的觸發輸出信號作為自己的觸發輸入信號工作,這就是主從定時器的大概意思,從定時器模式分為以下幾種:
1、復位模式 [Reset mode]
2、觸發模式 [Trigger mode]
3、門控模式 [Gate mode]
4、外部時鍾模式1 [External clock mode 1]
5、編碼器模式 [encode mode](這個不記)
復位模式[Reset Mode]
當有效觸發輸入信號出現時,計數器將會被復位,同時還會產生更新事件和觸發事件。如果計數器向上計數或中央對齊模式的話,復位后計數器從0開始計數,如果向下計數模式,復位后計數器從ARR值開始計數。不妨以計數器向上計數為例,將它配置在復位從模式。比方說當計數器計數到某個數據的時候,來了個觸發信號,計數器不再繼續往上計數,而是重新歸0后開始計數。當然,計數器的實際復位操作與觸發沿之間往往會有個小的延時,這是由於觸發信號作為有效觸發脈沖的話,還需要經過定時器內的同步電路確認。
觸發模式 [Trigged Mode]
當有效觸發輸入信號出現時,會將本來處於未使能狀態的計數器使能激活,讓計數器開始計數,同時還會產生觸發事件。觸發從模式下,觸發信號具有相當於軟件使能計數器的作用。
門控模式 [Gate Mode]
定時器根據觸發輸入信號的電平來啟動或停止計數器的計數。在計數器啟動或停止時都會產生觸發事件並置位相關標志位。下圖表示來自TI1的輸入信號,低電平時計數器啟動計數,高電平時停止計數。
外部時鍾模式1從模式 [External Clock Mod1]
當計數器的時鍾來自觸發信號時,計數器就處於外部時鍾模式1從模式。當然,這個觸發信號就不僅僅限於來自定時器通道TI1/TI2的輸入信號,還可以是上面提到過三類觸發輸入信號的任一種,比方來自其它定時器的觸發輸出信號,或者來自ETR腳的觸發輸入信號。或者,反過來講,如果定時器的時鍾來自外來觸發信號時,它一定就工作在外部時鍾模式1從模式,顯然,它的工作離不開這個觸發信號,不然連計數時鍾都沒有。這個從模式“從”得很徹底。
⑵ 精確的步進電機控制:
我們將控制步進電機的輸出PWM波的定時器工作在主模式,再另外選一個定時器工作在從模式。利用從定時器被主定時器觸發的特性,我們可以讓從定時器自動地記錄已經輸出的PWM脈沖個數。而上面我們已經知道了1個脈沖對應的實際移動距離是0.001mm。假定我們的控制精度要求為0.1mm,則我們只要讓從定時器在累積到100個計數的時候觸發一次中斷即可,這樣子我們同樣能實現精度為0.1mm的控制,但是相比較單個定時器0.01ms進一次中斷來說,使用主從定時器的工作模式,由於我們的主定時器中斷並未打開,所以不存在頻繁中斷的情況,我們將會每1ms進一次中斷,而1ms對於系統而言,是一個很長的間隔了。這時候將從定時器的中斷優先級設置較高並不會對整個系統產生過多的影響。
4、程序實現
先預留吧,寫筆記的電腦上沒有源碼,看懂前面的應該能搞出來的。