引言
電機是現代工業的“肌肉”,推動著工業的發展。步進電機是電機家族的“嬰兒”,在20世紀60年代早期才開始流行。它能將電脈沖信號轉換為角位移、直線位移等諸多優點,被構想作為昂貴的位置控制應用中伺服電機的低成本替代產品,在航空航天、精密機械加工、自動化控制和辦公室自動化設備等領域大量使用,如云臺、打印機、繪圖儀和雕刻機等。
一般的步進電機因為受限于機械加工工藝,其步距角不能做到很小(如現在相數高的5相步進電機步距角為0.72)還達不到對位移精度要求高的精密控制系統的要求,如精密儀器定位、數控加工等場合。另外,使用傳統的驅動方法,步進電機還存在低速運行時振動,會產生共振和噪聲的固有特性。
采用細分驅動不僅能有效解決這些問題,改善步進電機的運行性能,還提高了分辨率,增加了電機的輸出力矩。1975年美國學者T.R.Fredriksen首次在美國增量運動控制系統及器件年會上提出了步進電機步距角細分的控制方法后,在國內外被廣泛研究,成為步進電機驅動的發展趨勢。一些高性能的細分驅動器在國外被研究出來,但技術極為保密。國內外對步進電機細分驅動研究的文獻很多,主要對細分數、均勻步距、恒定轉矩、低噪音、低振動、抗干擾、細分驅動器的硬件實現等方面進行研究。
文章下面部分對步進電機的工作原理及細分驅動進行原理詳細介紹,提出一種用PSoC設計的細分驅動器,并總結了相對于其它一些設計方案的特點。
步進電機工作原理及細分驅動
圖1是某兩型步進電機的內部與外形結構,從圖中可以大致看出其組成結構。圖2是三相混合式步進電機的結構示意圖,定子繞組磁極和轉子上都有小齒,一般分別是5個和50個,當某一相繞組通電時,轉子上的小齒就會與相應繞組上的小齒對齊,與另外兩繞組上的小齒錯開一定的角度。
圖1 步進電機內部和外形結構
圖2 三相混合式步進電機結構示意圖
以圖2為例,當進行單相輪流通電順序為A→B→C→A時,轉子逆時針旋轉;為A→C→B→A時,順時針旋轉。也可以進行雙相輪流通電AB→BC→CA→AB(逆時針轉)或BA→AC→CB→BA(順時針轉)。還可以進行單雙相輪流通電A→AB→B→BC→C→CA→A(逆時針轉)或A→AC→C→CB→B→BA→A(順時針轉)。單雙相輪流通電的步距角是其它兩種方式的一半,可以通過公式進行計算,式中左邊為步距角,右邊m為定子的相數、Z為轉子的齒數、C為通電方式(單雙相輪流通電時C=2,其它兩種C=1)。那么可以計算出三相步進電機的步距角為:
由此可得出如下一些結論:①控制步進電機各相定子繞組的通電順序可以控制步進電機的轉動方向;②控制輸入給步進電機的脈沖數目N可以控制步進電機的角位移為;③控制輸入給步進電機的脈沖的頻率可以控制步進電機的轉速為:
其實,仔細分析三種通電方式,應該不難發現蘊含于其中的細分原理。以單雙相輪流通電A→AB為例,如果在這個階段,我們使B相繞組中的電流慢慢增加到與A相繞組中電流相同,那么與A相繞組對齊的轉子就會慢慢轉到A與B相繞中間;再假設我們使B相繞組中的電流以定量大小增加,即一種階梯上升的電流,那么轉子就會以比0.6更小的步距角一步一步轉動,這樣的就實現了步距角的細分。
但這是一種只改變某一相繞組中電流大小的細分方法,以二相步進電機為例,其A、B兩相繞組中的電流合成矢量理論上是如圖3左所示的形式;其相鄰兩次電流矢量的大小與夾角都不同,這直接導致步距角與輸出力矩的大小不均勻。而現在所用的細分方法,一般是如圖3右所示的均勻恒幅電流矢量法;要實現電流矢量的這種變化,需A、B兩相中的電流同時改變,且滿足iA=iH.cos(a),iB=iH.sin(a)。
圖3 單相細分電流矢量和均勻恒幅電流矢量
下面分析一下兩相步進電機中每相繞組中的電流,圖4、5、6分別是整步(單相輪流通電)、半步和四細分運行時繞組中電流波形示意圖。分析可知,細分原理就是通過精確控制相電流來產生均勻旋轉的磁場,即把原來每相電流的矩形波變為階梯波,原來走一步只給一個矩形波,現在把一個步距角分為N步來走,給N個階梯的階梯波,N就是細分數。細分數越大,相電流相鄰兩次的變化就越小,步距角就越小,為原來固有步距角的1/N,電機運行性能更好。還可得出另外兩點結論:①進給繞組的細分電流的階梯數量m控制電機轉動的角位移為;②細分電流大小變化的頻率控制電機的轉速。
細分驅動的實現主要靠D/A數模轉換器來精確控制每小步的相電流,用8位的D/A最大能實現256級細分,位數越多,細分數越大。要用D/A輸出的正弦規律變化的電流或電壓信號來控制相電流,根據末級功放管的工作狀態可以分為放大型和開關型兩種。一般步進電機的工作電壓是幾伏到四十幾伏,工作電流是幾百毫安到幾安,從而不能用D/A的輸出直接驅動。
放大型驅動電路就是讓功放管工作在放大狀態來放大D/A的輸出,可以進行電壓放大也可以進行電流放大,但用放大后的正弦規律變化的電壓加在繞組上,會由于繞組電感的作用而不會產生正弦規律變化的電流,所以一般應進行電流放大。這種驅動方式,電路較簡單,只要選擇精度高一點的電子元件,電流的控制精度也較高;但由于功放管工作在放大狀態,功耗較大、發熱較嚴重,所以一般用在驅動電流較小、控制精度較高、散熱環境較好的場合。
開關型驅動電路就是讓功放管工作在開關狀態,從而其功耗和發熱都會降低;但電路較復雜,輸出的電流會像如圖7所示有一定的波紋;因此一般用于驅動力矩較大的電機。隨著大力矩輸出的步進電機的發展,這種電路很常見,并且許多日本公司還生產了這種電路的步進電機細分驅動芯片,如TA8435、A3955SB、THB8128等。
要實現開關型電路,常用的有兩種方法:斬波式和脈寬調制式(PWM)。斬波式電路典型結構如圖8所示,其原理是用采樣電阻對電機繞組中的電流進行采樣,使之與D/A輸出的細分電壓進行比較,若采樣值大于D/A輸出,則功放管截止,反之功放管導通。這樣D/A輸出正弦規律變化的階梯型控制電壓,繞組中就流過階梯型的電流,這也是電流會有波紋的原因。這種電路應該選用開關性能比較好的功放管和比較器。
圖4 整步運行相電流 圖5 半步運行相電流 圖6 四細分運行時相電流
圖7 有紋波的細分相電流
圖8 斬波式電路原理圖
另一種脈寬調制方式電路原理如圖9所示,其原理是用最大幅值相同的D/A輸出的正弦規律變化的電壓與恒幅三角波(也可為鋸齒波)進行比較,D/A輸出的電壓越大,脈寬調制電路輸出的PWM脈沖的寬度也越大,而脈沖間的間隔則越小;反之則PWM脈沖的寬度也越小,而脈沖間的間隔則越大。圖10很好的說明了這種比較過程及輸出結果。這種方式調制出的PWM波,其脈沖寬度時間占空比是按正弦規律變化的,用它來控制功放管的通斷將產生比斬波式精度更高正弦變化的階梯型細分電流。這種方式是通過對功放管通斷時間的控制來改變輸出到繞組上的平均電流,這是因為繞組的電感特性對電流變化有阻礙作用,并且要求所用三角波的頻率一般應大于20kHz。其實這種方法不一定要用真正的D/A與三角波發生器,完全可以用軟件的方法實現,只要輸出的PWM波的占空比按正弦規律變化。
圖9 脈寬調制式原理圖
圖10 脈寬調制原理及輸出
由于本文的設計方案是SPWM細分驅動,所以總結出以下幾點結論:①三角波的頻率決定PWM的頻率,而PWM的頻率決定了細分電流的紋波大小;②D/A輸出值的大小決定PWM的脈寬,而PWM的脈寬和頻率共同決定了細分電流的大小;③D/A的位數n決定細分數為2n ,細分后電機的最小步距角為固有步距角θ/2n-1,SPWM的占空比的值即有2n種,并且其取值是按正弦規律變化及每個階梯電流對應一種占空比;④D/A輸出值大小變化的頻率決定電機轉速,并應遠小于三角波的頻率,在電機啟動時不能超過其啟動頻率,在電機連續運行時不能超過其最高工作頻率;⑤三角波的頻率不能大于功率管的截止頻率,選擇開關性能越好的功率管,三角波的頻率可以越大,細分電流的紋波就越小。
當然,除了上面介紹的幾種常用方法,還有其它的方法,比如PID控制等。總之,目標就是精確控制繞組中流過正弦變化的階梯型波。
另外,有文獻指出由于步進電機制造工藝引起的誤差和相電流由小變到大引起的相電流及其產生的勵磁存在非線性而導致的誤差等,會使細分后的步距角并不是完全均勻的;為了進一步提高步距角,需要對正弦規律的D/A值進行修正,即修正每小步的相電流值。當然,對于細分后能達到精度允許的誤差的應用場合完全可以不必耗費過多的資源來進行這種修正了。
通過以上對步進電機及其細分驅動的分析,讀者應該對其有了充分的認識,下一節將對本文設計的基于PSoC的二相混合式步進電機細分驅動器進行介紹。
基于PSoC的二相混合式步進電機細分驅動器
隨著細分驅動技術的發展,步進電機的相數“多”和固有的步距角“小”已經沒有多大意義。對細分驅動器而言,相數多了反而增加了其復雜性,因為要輸出的細分相電流多了;且由于混合式步進電機的優勢,現在很多產商也是以生產這種電機為主,二相混合式步進電機將成為主流,所以本文針對其設計了一種基于PSoC的并使用上述脈寬調制方法實現的細分驅動器。
賽普拉斯公司生產的CY8C系列PSoC可編程的片上系統,集成了M8C內核微控制器以及用戶可配置的嵌入式系統中通常圍繞微控制器周圍的模擬及數字模塊,模塊可配置成放大器、ADC、DAC、濾波器及比較器等模擬功能以及定時器、計數器、PWM、SPI和UART等數字功能。
由于本驅動器是為二自由度的云臺設計,需要同時控制二個步進電機轉動,每個同時要兩路PWM控制,而每個PWM需占用一個數字模塊,因此選擇有8個可配置數字模塊的CY8C27443-24PXI型號28引腳封裝的芯片,其有3個8位的可復用可配置的I/O口P0、P1、P2。其功能模塊組成如圖11所示。
圖11 CY8C27443-24PXI功能組成模塊
本文通過賽普拉斯公司提供的配套開發軟件PSoC Designer進行開發(其使用方法請查看相關資料),為芯片配置4個8位PWM模塊、1個8位定時器、1個8位A/D(占1個模擬和1個數字模塊)、1個UART串口(占兩個數字模塊)和1個PGA可編程增益放大器,如圖12所示,圖中左邊為輸入引腳,右邊為輸出引腳,上半部分8個矩形即為8個可配置的數字模塊,依次被A/D、定時器、UART串口和4個PWM模塊占用,下半部分12個矩形即是可配置的模擬模塊,被PGA和A/D各占用一個。
圖12 PSoC內部模塊配置
其中,UART串口用來連接上位機,使上位機程序能發送命令控制電機的轉動(包括啟動、停止、方向和速度)和細分數等,下位機可向上發送一些狀態信息等。每個PWM模塊輸出通過內部總線連到P1口的兩個引腳上,即每個PWM模塊從兩個引腳上輸出相同的波形,但是可以通過引腳的可配置功能使其中一個引腳輸出高或低電平,可以實現模塊的分時復用;因為后文選用集成雙H橋芯片L298n作為末級功放,其每個橋的兩個輸入口同一時刻只有一個為高電平才導通,因此只用一個PWM模塊就能控制它,引腳連接如表1所示。定時器模塊用來產生中斷源以編寫分時處理結構的程序。A/D模塊的輸入連接PGA輸出,PGA的輸入可以通過MUX模塊連接4個不同的引腳(P01、P03、P05、P07),從而一個A/D模塊就能分時通過4個引腳輸入來實現采樣4組不同的反饋相電流,以此可實現如過流保護等閉環控制功能。這些模塊都可以通過在程序中調用其提供的API函數實現參數和功能的設置,如要實現PWM模塊輸出的PWM波的脈寬和周期(頻率)設置,可分別調用函數:
void PWM8_WritePulseWidth(BYTE bPulseWidth);
void PWM8_WritePeriod(BYTE bPeriod).
當然,要使其正常工作還需要用其它函數,這種調用API函數進行編程的方法,使得開發相對于用其它芯片的設計方案更簡單。
細分驅動器的末級功放使用兩片集成的雙H橋路芯片L298n。該芯片的開關頻率最高可達40kHz,最高工作電壓可達46V,瞬間峰值電流可達3A,持續工作電流為2A,其使用方法請參考芯片手冊。整個驅動器的原理圖如圖13所示。圖中選用42BYGH4417混合式2相4線步進電機,其相電流為1.7A,因此4個采樣電阻選擇0.02Ω、1W、2512封裝的精密電阻,采樣電壓分別通過P01、P03、P05和P07被A/D模塊分時讀取;正常情況下,每相繞組的采樣電壓最大值為0.034V,經過PGA模塊放大48倍后約為1.63V,給片內以2.5V作為參考電壓、分辨率約為0.02V的8位A/D進行轉換。
表1 PWM模塊與I/O口及L298n連接對應表
圖13 細分驅動器原理圖
驅動器設計的最大細分數為128,當頻率固定時,則決定細分電流大小的SPWM波的占空比即有128種。這128個脈寬值從小到大排列與四分之一個正弦波的128級量化后的值成比例關系,這樣只需要知道任意一個細分電流值(細分電流值=m×最大相電流/128,0≤m≤128)的大小對應的脈寬值,就可計算出所有的脈寬值,這個值需要通過實驗得到,并且不同的電機由于相電阻等參數的不同所得到的這個脈寬值也不同。編程時把這128個脈寬值放在代碼段,調用API函數設置PWM波脈寬時使用時用查表方式進行查找。對這128個值進行2的倍數值等距采樣使用,就能實現64、32、16、8、4、2和1等細分,從而很容易實現“電機快速轉動時使用低細分,慢速時使用高細分”的控制策略。四個PWM模塊,每兩個的脈寬值是同時變化的,PWM1與PWM2同時(控制圖2-3中上面的那個L298n),另兩個同時,并且一個是從小到大變化,另一個是從大到小變化,從而實現電機的正轉和反轉;脈寬值變化的越快,電機轉動越快,不變時電機處于自鎖狀態。
經實驗證明,本文所設計的細分驅動器在電機快速和慢速轉動時都能很穩定地工作,電機輸出力矩和步距角均勻、運行平穩,充分發揮了步進電機的功能。
總結
本文首先詳細分析了步進電機的工作和細分驅動原理,最后選擇理論上比較好的SPWM細分驅動方法,使用PSoC結合L298n實現了最高128細分的、能同時驅動兩個步進電機的細分驅動器。
本文的細分驅動器設計方案很好地解決了使用其它方案時遇到的電路復雜和編程困難等問題,成本也比其它方案低很多,所用電子元件很少、功耗低、體積小,非常適合用于對體積和重量要求嚴格的場合,如無人機等。