本教程介紹步進電機驅(qū)動和細分的工作原理_第1頁
本教程介紹步進電機驅(qū)動和細分的工作原理_第2頁
本教程介紹步進電機驅(qū)動和細分的工作原理_第3頁
本教程介紹步進電機驅(qū)動和細分的工作原理_第4頁
本教程介紹步進電機驅(qū)動和細分的工作原理_第5頁
已閱讀5頁,還剩7頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權,請進行舉報或認領

文檔簡介

本教程介紹步進電機驅(qū)動和細分的工作原理和stm32103為主控芯片制作的一套自平衡的兩輪車系統(tǒng)附帶原理圖pcb圖和源代碼,有興趣的同窗一路來吧.本系統(tǒng)還有一些小問題,不妥的地方希望取得大家的指正.混合式步進電機的結(jié)構(gòu)和驅(qū)動原理電機原理這部份不想講的太復雜了,拆開一臺電機看看就明白了。電機的轉(zhuǎn)子是一個永磁體,它的上面有若干個磁極SN組成,這些磁極固定的擺放成必然角度。電機的定子是幾個串聯(lián)的線圈組成的磁體。出線一般是四條線標記為A+,A-,B+,B-。A相與B相是不通的,用萬用表很容易區(qū)分出來,至于各相的+-出線實際是不用考慮的,任意一相正負對調(diào)電機將反轉(zhuǎn)。另夕卜一種出線是六條線的只是在A相和B相的中間點做兩條引出線別的沒什么不同,六出線的電機通過中間出線到A+或A-的電流來模擬正向或負向的電流,可以在沒有負相電流控制的電路中實現(xiàn)電機驅(qū)動,從而簡化驅(qū)動電路,可是這種做法任意時刻只有半相有電流,對電機的力矩是有損失的。步進電機的轉(zhuǎn)動也是電磁極與永磁極作使勁的結(jié)果,只不過電磁極的極性是由驅(qū)動電路控制實現(xiàn)的。咱們做這樣的一個實驗就可妥協(xié)進電機轉(zhuǎn)動起來。1找一節(jié)電池正負隨意接入到A相兩頭;然后斷開;(記為A正向)2再將電池接入到B相兩頭;然后斷開;(記為B正向)3電池正負對調(diào)再次接入A相;然后斷開;(記為A負向)4維持正負對調(diào)接入B相;然后斷開;(記為B負向)...如此循環(huán)你會看到步進電機在緩慢轉(zhuǎn)動。注意電機的相電阻是很小的接通時近乎短路。咱們將相電流的方向記錄下來應該為:A+B+A-B-A+...,若是咱們改換接線順序使得相電流順序為A+B-A-B+A+.這時咱們會看到電機向反方向運動。這里每切換一次相電流電機都會轉(zhuǎn)動一個很小的角度,這個角度就是電機的步距角。步距角是步進電機的一個固有參數(shù),一般兩相電機步距角為度即切換200次可讓電機轉(zhuǎn)動一圈。這里咱們比較正反轉(zhuǎn)的電流順序可以看出A+和A-;B+和B-的互換后的順序和正反順序是一致的,也就是前面所說的”任意一相正負對調(diào)電機將反轉(zhuǎn)”。以上為四排工作方式,為了使相電流加倍光滑另外可利用八排的工作方式即:A+;A+B+;B+;B+A-;A-;A-B-;B-;B-A+之前去后循環(huán)正轉(zhuǎn),從后往前循環(huán)反轉(zhuǎn)。為了用單片機實現(xiàn)相電流的正負流向控制必需要有一個H橋的驅(qū)動電路,這種帶H橋的驅(qū)動模塊仍是很多的,比較廉價的是晶體管H橋比如L298N,晶體管開關速度比較慢,無法驅(qū)動電機高速運動。有些模塊將細分控制電路也包括在內(nèi),咱們也不用這種,因為咱們的細分由軟件控制。實際應用中利用ST的mos管兩橋驅(qū)動芯片L6205一片即可驅(qū)動一臺步進電機。有了H橋通過PWM就可以夠控制相電流大小,改變輸入極IN—、IN2的狀態(tài)(參看手冊第8頁)可以控制相電流的方向。細分的原理和輸出控制從這里開始重點了,別的地方看不到哦。一個理想的步進電機電流曲線應該是相位相差90度的正弦曲線如下圖:圖中藍色線時A相電流,紅色線是B相電流。若是把A相正負極值視為A+A-,B相正負極值視為B+B-,比較一下四拍方式正轉(zhuǎn)A+B+A-B-和反轉(zhuǎn)A+B-A-B+不難看出四排方式實際上是用一個脈沖來代替一個正弦半周期,相位點從左到右轉(zhuǎn)變則電機正轉(zhuǎn),從右到左電機反轉(zhuǎn)。類似的咱們把八拍方式A+;A+B+;B+;B+A-;A-;A-B-;B-;B-A+;放到曲線里也可以找到對應點,圖中標出了各拍的相位點1,2,3…,不難看出用A+B+代替第2拍點用B+A-代替第四拍點都是近似的做法。那么這種近似和理想情況的電流的差值去哪里了呢?這些電流被無謂的消耗掉了而且多余的電流會引發(fā)電機轉(zhuǎn)動的不平穩(wěn)。為何要細分呢?實際細分的終極目標就是在正弦的周期中插入若干個點使得相電流接近正弦轉(zhuǎn)變,細分可以提高定位精度和電機運轉(zhuǎn)的平穩(wěn)性。由此咱們拋開細分不談,若是你能調(diào)制出兩條相差為90度的正弦波形就是理想的步進電機驅(qū)動器了,調(diào)制出的正弦波形的頻率就是步進電機的轉(zhuǎn)速,正弦的幅值就是步進電機的轉(zhuǎn)矩。這個聽起來貌似不難啊,可是你不要忘了調(diào)制出的正弦是有要求的。第一要有必然的驅(qū)動能力步進電機的功率越大驅(qū)動能力要求也越大。第二要能夠維持90度的相差前提下改變正弦的頻率,這樣才能夠驅(qū)動電機按不同的轉(zhuǎn)速運轉(zhuǎn),步進電機的旋轉(zhuǎn)方向?qū)嶋H上是兩條正弦波的相位點順序。第三最好能夠調(diào)幅,調(diào)整幅值能夠?qū)崿F(xiàn)電機的恒力矩輸出,調(diào)幅的實際意義還不止這些后面再講??傊痪湓捑褪峭ㄟ^pwm調(diào)制輸出可以調(diào)頻調(diào)幅的兩路固定相差的正弦波。(若是是三相步進電機應該是相差列位120度的三路正弦波,原理是一樣的。)上面那個圖和兩相步進電機驅(qū)動的關系可能有些疑惑"真的是這樣的嗎?",咱們在這里再安排一個實驗。咱們知道電動機和發(fā)電機是兩個可逆的進程,因此咱們可以用步進電機來當發(fā)電機。很簡單的實驗,咱們把步進電機的兩相引線接到雙蹤示波器輸入上,然后找個電機帶著轉(zhuǎn)軸運轉(zhuǎn)(我是用一個手電鉆夾住電機的轉(zhuǎn)軸,我的這個手鉆是可以正反轉(zhuǎn)的)。維持穩(wěn)定的轉(zhuǎn)速,你會在示波器上看到上面那個圖:即兩路相差固定的完美的正弦波,當轉(zhuǎn)速增大時幅值和頻率都有轉(zhuǎn)變(線性關系),而且正轉(zhuǎn)和反轉(zhuǎn)時兩路正弦相位位置不同,若是你能夠肯定轉(zhuǎn)速的話你還可以驗證以下周期、轉(zhuǎn)速、步距角之間的關系。步進電機的驅(qū)動要比逆變器、伺服電機驅(qū)動復雜的地方在于需要大范圍的變頻,若是能做好這個步進電機的驅(qū)動器其它那兩個就不成問題了,至少在波形調(diào)制上絕對沒問題了,它們的大體原理是通的。下面咱們展開正弦調(diào)制的討論,這部份是核心的部份將占很大的篇幅,你安心我絕對不會羅列一大堆的數(shù)學式在教程里,不然怎么能叫超級無敵呢?教程超級無敵,這個stm32實現(xiàn)的驅(qū)動程序也是超級無敵的(吼吼)??墒恰拜d波比、spwm、死區(qū)、單雙極性”這幾個詞若是你感覺很陌生的話建議你仍是要看看電力電子課程的相關章節(jié)大體概念仍是要有的。spwm運算和輸出Spwm的產(chǎn)生可以分為軟件方式和硬件方式,硬件方式通過硬件產(chǎn)生一路三角波一路正弦波,通過一個比較器比較正弦波幅值與三角波幅值的關系即可取得spwm波。這種方式也應用于很多spwm集成芯片硬件方式在波形產(chǎn)生上不需要軟件參與,而且調(diào)頻和調(diào)幅控制上都是比較簡單的。硬件方式的功能和性能取決于芯片本身,對于比較復雜的應用上會受到限制。軟件方式的思路是使得pwm波以spwm的脈寬數(shù)據(jù)轉(zhuǎn)變?yōu)V波后就可以夠取得正弦波形,通過計算取得占空比的波形數(shù)據(jù),按波形數(shù)據(jù)調(diào)整pwm。其實軟方式和硬方式也并非是絕對的,比如ti的dsp芯片內(nèi)部的spwm發(fā)生器,他的做法是在內(nèi)存中存儲一張正弦表,然后用一個和按時器時鐘同步的計數(shù)器正負計數(shù)模擬一個三角波,每一個時鐘將正弦表的值與三角計數(shù)值作比較輸出即取得spwm,實際上可以看成是一種半軟件半硬件的做法。軟件方式的優(yōu)勢在于本錢低且更靈活,本錢低不用說了,靈活性上舉個例子:調(diào)制正弦波性的極性是由獨立的控制位實現(xiàn)的(雙極性),若是輸出標準的正弦波形硬方式需要三角波發(fā)生器和正弦波發(fā)生器的起始點精準對齊,這在硬件電路實現(xiàn)上需要附帶鎖相環(huán)電路才能保證,而軟件方式則不需要任何附加操作。此刻為了改善步進電機的驅(qū)動性能,咱們希望極性翻轉(zhuǎn)點掉隊輸出幾個微秒,要做到這一點硬件方式改動肯定是難上難,而軟件方式上只需要增加個按時滯后輸出就好了。為了減少運算開銷也可利用查表法,把計算好的spwm數(shù)據(jù)存儲在rom里,按丿I順序輸出表中的值即可。這種方式的數(shù)據(jù)計算可以在PC機上通過matlab軟件進行,將數(shù)據(jù)算好粘貼到源程序中就可以夠了。查表法的局限在于參數(shù)的轉(zhuǎn)變和存儲開銷的矛盾,參數(shù)越復雜占用存儲空間越大。三角波向鋸齒波的轉(zhuǎn)換載波為三角波時輸出的是一個左右不對稱的Pwm波形,只有這種波形能夠調(diào)制出半周期對稱的正弦波,這種方式稱為非對稱的自然采樣法。其它方式(規(guī)則采樣等效面積…)都是為了減小計算量或不得以而采取的近似方式。非對稱Pwm開點與關閉點沒有必然關系,必需由中央對齊的Pwm模式通過一個周期的兩次更新來輸出。三角波可以看成是兩個鋸齒波的組合,因此咱們可以通過鋸齒波的數(shù)據(jù)來簡化程序結(jié)構(gòu)。咱們比較下面三張圖:圖1是一個鋸齒波幅值為1,載波比N=16,正弦幅值,正弦與鋸齒波相差為半個鋸齒波周期;圖2是圖1水平翻轉(zhuǎn)的結(jié)果;圖3是圖1和圖2的疊加結(jié)果。圖三中看到三角波形的sPwm數(shù)據(jù)了嗎?沒錯就這么簡單,鋸齒波正弦幅值比為2:1,相差半個鋸齒波周期,計算出來的數(shù)據(jù)首尾組合成三角波數(shù)據(jù)。算法上就很簡單了,假設數(shù)組中寄存上述的鋸齒波spwm數(shù)據(jù),編號0~15共16個,依次取0,1,2,..15為三角波形開點輸出數(shù)據(jù),則反向取15,14,13,...0為三角波形關點數(shù)據(jù)即可。特別的若是載波比為奇數(shù)時三角波也為奇數(shù),中間的數(shù)自然和自己組合的數(shù)據(jù)仍然是正確的。注意這里提及的方式可以把三角波形的計算轉(zhuǎn)換為鋸齒波,但并非能減少計算量,因為若是是偶數(shù)個三角波只要計算四分之一周期就夠了其他的是對稱的,而鋸齒波形數(shù)據(jù)需要計算半個周期。至此咱們可利用鋸齒波的方式計算按三角波的數(shù)據(jù)輸出。spwm迭代運算為計算spwm占空比首先要求得鋸齒波斜線與正弦交點,即方程KX+B二Y與Sin(X)二Y的解。這個方程是一個超越方程,只能通過迭代的方式計算。咱們將直線方程變成X=(Y-B)/K,首先任取一個X值(這個值就是迭代初值),將它帶入Sin(X)求一個Y值再將Y值代入(Y-B)/K求一次X值,再將X帶入Sin(X)求一個Y值…如此反復若干次后可以取得一個結(jié)果就是方程式的解,這個就叫做迭代法。迭代次數(shù)越多;迭代初值越接近結(jié)果精度越高。每一組數(shù)據(jù)計算有這樣幾個參數(shù)1:正弦幅值(三角幅值與之成比例)2:載波比N值即半周期中三角波個數(shù)。另外pwm的占空比即按時器的通道值是和pwm的周期值有關系的,因此為了計算按時器通道值還需要一個周期值,對于stm32f這個值就是按時器ARR寄放器的值,它決定pwm周期(或頻率)。附件中有個,matlab下計算按時器spwm數(shù)值和畫圖的小工具上面幾個圖就是用它畫的,開始部份可以置參數(shù)s_M=32768/65536%正弦波幅值比0~1s_N=16%半周期三角波個數(shù)s_Pre=16384%單片機按時器模數(shù)值執(zhí)行分為三部份,計算spwm數(shù)據(jù);將數(shù)據(jù)按周期值換算為按時器設定值;畫圖;計算按時器設定結(jié)果在TimerSetting中,復制粘貼替換tab字符成逗號就好了,下面是上述參數(shù)的計算結(jié)果:1780524684441122113461150881606316384160751518213764118939645710243461463(3)spwm實時運算的優(yōu)化如前所述簡單的應用查表法就可以夠解決了可是復雜一點的功能就不能知足要求了,比如步進電機大范圍調(diào)速、不同轉(zhuǎn)速下恒力矩輸出、恒加速運動等等。網(wǎng)上有很多文章介紹自然采樣法的數(shù)學方式,并給出了各類優(yōu)化算法,這些算法力圖精準求解三角方程與正弦方程的交點,由于運算中帶有大量的浮點運算若沒有dsp或高速浮點處置芯片的支持必然會造成運算時間太長對實時調(diào)控產(chǎn)生影響。實際上咱們需要的計算精度和每載波周期可能的開關點數(shù)量有關系,此數(shù)值用C來表示,稱其為控制比(下文同)數(shù)值上二載波周期/pwm周期,同步伐制方式中此值為整數(shù),可以理解為用多少個pwm周期控制一個載波周期。pwm頻率實際上是開關電路的極限頻率或最理想工作的頻率,假設每載波周期可能的開關點數(shù)量為512個則需要二進制的9位計算精度若是再加一名存疑位最多計算10位就夠了。若是采用數(shù)據(jù)類型IEEE32浮點數(shù)迭代運算將取得24位(二進制)精度的計算結(jié)果,與實際需要相差甚遠,也就是說你算了半天大部份是沒成心義的計算,這種計算資源浪費發(fā)生在每一次運算中,因此累計起來就比較驚人了。從另一個角度看由于pwm頻率的限制有高精度的計算結(jié)果也無法實施高精度的開關控制,這么說就好理解了。對計算采取必然的優(yōu)化是必需的它將直接影響系統(tǒng)的實時性能。一個簡單的方式就是在計算有初值后肯定數(shù)據(jù)變更方向逐個可能值比較,另一個方式就是去浮點迭代計算,這兩個方式在單片機上實現(xiàn)都可行有機緣再發(fā)文討論再也不詳述了。步進電機運行控制至此假設咱們可以很快的在單片機上進行實時的迭代運算了。迭代計算一個半周期的spwm其輸入的原始參數(shù)只和三個數(shù)值有關:正弦的幅值這個值將決定步進電機的相電流大小,也就是步進電機的輸出力矩。步進電機的長處之一是它的低速性能,當步進電機低速運轉(zhuǎn)時轉(zhuǎn)子始終受到磁場力的牽引轉(zhuǎn)動,這個力的大小直接取決于勵磁電流的大小,很小的速度下卻可以用很大的力牽引轉(zhuǎn)動。而直流電機的低速運動只能靠減小勵磁電流實現(xiàn),實際上就是小力矩實現(xiàn)低速,這樣控制就不可能很精準特別是啟停階段尤其麻煩。步進電機在高速時力矩下降很快這個原因也不難理解,因為在步進電機勵磁線圈里有多組磁極快速劃過產(chǎn)生很大的感生電動勢抵消了驅(qū)動的電壓致使勵磁電流變小力矩變小。為了改善高速性能解決辦法只有一個提高工作電壓。按照電機轉(zhuǎn)速自動調(diào)整相電流的大小就可以夠?qū)崿F(xiàn)恒定的力矩輸出了,即低轉(zhuǎn)速小幅值高轉(zhuǎn)速大幅值。載波比N和控制比C,這兩個參數(shù)和調(diào)制頻率F的關系是:F*2C*2N二TF(TF是按時器的時鐘頻率)咱們慢慢來解釋一下這個式子,調(diào)制頻率就是咱們實際想要的電機轉(zhuǎn)速,從上面式子可以看出要讓電機速度增加有兩個方式即減小C或減小N(TF也是可以變的暫不考慮);C實際上就是按時器的模數(shù)值(ARR)他的含義是利用幾個按時器時鐘周期產(chǎn)生一個pwm周期,前面的2是由于按時器工作在中央對齊模式下,按時器+-計數(shù)一輪產(chǎn)生一個完整的三角波周期。ARR的取值范圍不可以過小,因為需要按時器中斷來更新個通道的值,過小的數(shù)值兩次更新時間太短而無法實現(xiàn)計算和更新步計數(shù)等操作OARR的值若是太大則輸出的pwm頻率太低效果不佳。N是載波比也就是半周期的三角波的數(shù)量他的含義是利用幾個pwm周期調(diào)制出一個正弦周期其實也就是咱們常說的細分數(shù)它決定一個正弦周期(一個步距角)內(nèi)可以控制的位置點的數(shù)量。在常見的驅(qū)動器中這個數(shù)值都是由撥碼開關事前設定的,工作中是一個固定值,原因是硬件電路無縫的調(diào)整細分度幾乎是不可能的。軟件運算則沒有這個問題,N的取值可以是任意的,唯一受影響的就是極性控制,上面算式里N前面的2含義是正弦正半周期和負半周期。N的取值還要考慮內(nèi)存和計算占用;迭代算法若是有接近結(jié)果的初始值將使得運算效率大幅提高,因此對于有初始值的運算每一個計算點都要有存儲空間占用,過大的N值要考慮內(nèi)存資源,若是無初值的計算則要考慮計算資源。特別的當N值轉(zhuǎn)變時初值會與真實值有差距,所以應盡可能減少N的變更。和步進電機轉(zhuǎn)速有關系的參量在運行時都是已知的,因此任意時刻電機的轉(zhuǎn)速都是可以計算的,若是電性能夠平穩(wěn)運行(沒有堵轉(zhuǎn)或丟步的情況)是不需要其它測速碼盤裝置的,閉環(huán)控制就加倍沒必要了。話又說回來若是丟步或堵轉(zhuǎn)了閉環(huán)能解決嗎?步值計數(shù)產(chǎn)生AB極性邏輯和正反轉(zhuǎn)網(wǎng)上看到的步進電機驅(qū)動程序千篇一概的都是數(shù)組存儲io狀態(tài)查表輸出,帶細分更少。先來梳理一下目前已經(jīng)此刻做到的內(nèi)容,內(nèi)存中有一個數(shù)組寄存整個正弦半周期的實時運算的spwm數(shù)據(jù),這個數(shù)據(jù)是按照當前的pwm周期折算過,因此每一個pwm周期依次將數(shù)組內(nèi)容賦值給按時器通道值就可以夠在按時器通道管腳輸出正弦轉(zhuǎn)變的pwm了。另夕卜利用一個(16205是兩個,也可以用非門)io口來控制極性輸出,比如高電平輸出正弦負半周,低電平輸出正弦正半周。接下來需要安排一個合理而簡單的數(shù)據(jù)結(jié)構(gòu)把步進計數(shù)、細分和極性控制合為一體。首先咱們用一個s32stepcounter全局量來做步進計數(shù),它的數(shù)值與步進電機的實時位置對應,這個變量是一個很關鍵的變量,因為任意時刻的AB兩相spwm數(shù)據(jù)輸出點和極性控制信號都由它產(chǎn)生。假設咱們把它的低八位視為細分步計數(shù)(256為最大細分),則這個計步值除256對應整步位置。另外安排一個u8microstep用來控制細分步進它的取值和當前的細分度有關,若是256細分則microstep=1,128細分microstep=2,以此類推.若是電機正轉(zhuǎn)前進一個微步則stepcounter+二microstep,若是反轉(zhuǎn)一個微步貝0stepcounter-二microstep(微步進這部份可以放至ll中斷程序里),OK正反轉(zhuǎn)很簡單,微步前進自動更新整步。關鍵點在于如何利用這個計數(shù)值產(chǎn)生兩個相位的極性信號輸出控制和A相B相的spwm數(shù)據(jù)位置,這里解釋一下為何會希望控制都由這一個變量產(chǎn)生:因為這樣的程序最簡單,雖然這里講一大堆可是在編程實現(xiàn)時你就看至了就幾行弄定;不容易犯錯,效率最高,你可以想象的至若是涉及的變量越多操作的代碼越多需要考慮的可能性越多也越容易錯;便于封裝和功能擴展,比如你想做一個AD采樣值與電機位置按一個比例同步的程序即轉(zhuǎn)滑阻電機隨著動的小玩意兒,略微改改把AD采樣值賦給計步值其它都不用管了。先說第一個數(shù)據(jù)的輸出,spwm數(shù)組256個,若是不考慮極性則數(shù)據(jù)位置只和stepcounter的低8位有關,因此A相

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經(jīng)權益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論