胡向東



摘 要為了實時檢測步進電機在運動過程中是否發生了失步或者堵轉情況,設計一種基于STM32的閉環檢測系統。系統中使用STM32F429微處理器向步進電機驅動器發送控制信號,并通過增量編碼器將步進電機的運動狀態反饋到STM32F429中,以此來構成一個閉環的控制系統。使用該系統可以實時確定步進電機的運動狀態,從而判斷出步進電機是否在運動的過程中發生了失步或者堵轉的情況。
關鍵詞步進電機;控制信號;閉環控制;增量編碼器;STM32F429
0 引言
步進電機是將電脈沖信號轉變為角位移或線位移的開環控制元件[1]。步進電機驅動器每接收到一個控制信號,就驅動步進電機按設定的方向轉動一個固定的步距角。由于步進電機的轉動角度僅與其驅動信號的脈沖個數有關,其控制過程非常簡單。步進電機每轉動一圈所需要的脈沖個數是固定的,因此其只有單步轉動過程中產生的單步誤差而沒有連續轉動產生的累積誤差。步進電機的這種特點使其在工業中的精確位置控制領域得到了廣泛的應用。步進電機實現精確位置控制的前提條件是,其在轉動過程中不發生失步或者堵轉的情況。在實際應用中,步進電機會由于其驅動頻率太高或者變化速度太快以及其驅動負載的改變而導致失步,從而使步進電機的位置控制精度下降,嚴重時會產生堵轉,使步進電機無法正常工作。因此,對步進電機運動狀態的檢測便顯得十分重要。本文使用STM32F429微處理器作為主控制器構成一個閉環的步進電機控制系統來對步進電機的運動狀態進行檢測,通過該系統可以實時檢測步進電機是否發生了失步或者堵轉的情況。
1 系統方案設計
用于檢測步進電機失步或者堵轉情況的步進電機閉環控制系統結構如圖1所示。在該閉環控制系統中,STM32F429微處理器發送控制信號到步進電機驅動器;驅動器接收到該控制信號后,根據設定的驅動參數來驅動步進電機;步進電機通過聯軸器帶動增量編碼器進行轉動;增量編碼器在轉動過程中向STM32F429微處理器發送反饋信號;STM32F429對反饋信號進行處理后得出步進電機當前的運動狀態,并將該結果輸出到TFTLCD顯示屏上進行顯示。
2 步進電機驅動與信號反饋
步進電機選用雷賽公司生產的42HS03兩相混合式步進電機,該型號步進電機的基本步距角為1.8°,單步運動誤差為±5%。42HS03上有黑、綠、黃、橙、紅、藍、白、棕8根引出導線,對其進行驅動時,將黑、綠、黃、橙四根導線串聯構成步進電機的A相繞組,將剩下的四根導線串聯構成B相繞組,相繞組的具體串聯方式如圖2所示。
驅動器選用雷賽公司的高性能數字式兩相步進驅動器,型號為DM542S。該驅動器采用32位DSP技術,利用驅動器上的撥碼開關既可以對常用的8檔電流進行選擇,也可以對16檔細分驅動進行選擇,其對控制信號的響應頻率最高可達200kHz,具有過壓、短路等保護功能。該驅動器的強大功能使其能夠滿足大多數步進電機驅動應用的場合。
驅動器DM542S接+24V電源,使用A+、A-兩個功率輸出端口來驅動42HS03步進電機的A相,使用B+、B-兩個端口驅動B相,驅動電流峰值設置為1.0A,平均值為0.7A。驅動器的細分設置為不細分,即步進電機以基本步距角進行轉動,每轉動200步所轉過的角度為360°。
驅動器通過信號引腳PUL+、PUL-來接收步進電機運動控制信號,使用DIR+、DIR-來接收轉動方向判斷信號。該運動控制信號與方向判斷信號由STM32F429的GPIO引腳PC6與PC7發送。由于STM32F429的GPIO引腳只能輸出3.3V的高電平,而DM542S所接收的高電平信號電壓不能低于3.5V,因此在其兩者之間連接一個可以輸出5V電壓的高速反相器74HC04。STM32F429與DM542S的連接電路如圖3所示。
增量編碼器型號選擇分辨率為2000脈沖/轉的為E6B2-CWZ3E,其最大轉速為每分鐘6000轉,理論上能夠識別0.18°的轉角變化,其角度測量的精度很高。E6B2-CWZ3E支持+5V—+12V的寬范圍直流供電電壓,本文選擇+5V直流供電。E6B2-CWZ3E有A相、B相與Z相三路信號輸出端,其中A相與B相成正交輸出關系,即A相與B相信號在相位上相差90°[2-3],編碼器每轉過一個刻度,A相與B相就相應輸出一個脈沖信號,當編碼器每轉過一周,則A、B相各輸出2000個脈沖信號,而Z相此時僅輸出一個脈沖信號。將E6B2-CWZ3E的A、B兩相信號分別對應連接到圖3中所示STM32F429的GPIO引腳PH2與PH3上,通過PH2與PH3的外部中斷來捕捉增量編碼器的反饋信號。
3 運動狀態檢測方法
在步進電機運動狀態的檢測方法借鑒了M法測量轉速原理。在規定時間內測量增量編碼器產生的脈沖個數,經過計算后可得被測目標的轉速,這種獲得轉速的方法被稱為M法[4]。在檢測步進電機失步或者堵轉的過程中,不需要計算轉速,只需在規定時間內統計出增量編碼器產生的脈沖個數,然后與理論值進行對比即可。如果實際脈沖個數與理論值的差值在規定的誤差范圍內,則判定步進電機沒有發生失步或者堵轉問題;如果二者的差值超出了規定的誤差范圍,則判定步進電機發生了失步或者堵轉問題。為了提高檢測的精度,避免誤判,采用4倍頻的方式接收增量編碼器的脈沖信號[5-7]。對A、B兩相信號的上升沿與下降沿均進行統計并將所有脈沖個數進行疊加。
由于設定了步進電機轉動一圈需要200步,也就是需要200個控制脈沖信號,而編碼器相應的在理論上總共會產生8000個脈沖。也就是說,步進電機每轉動一步,STM32F429理論上可以接收到40個反饋脈沖信號,考慮到聯軸器安裝與電機振動帶來的測量誤差,規定接收到的反饋信號在25-55之間均有效。
4 結束語
通過設計步進電機的閉環控制系統,可以實時檢測步進電機的運動狀態,從而判斷步進電機是否發生失步或者堵轉情況。在設計中需要注意步進電機與增量編碼器之間的連接偏差要盡可能的小,以減小測量誤差,最好將二者固定在同一個基座上,步進電機固定要牢固,以減小其振動。STM32F429發送控制信號使用定時器的計數溢出中斷,在中斷發生后需要軟件清除其相應的中斷標志位。
參考文獻
[1]袁賽,王德輝,曹海麗,等.基于Multisim10的步進電機數控電路的分析和設計[J].電子設計工程,2013,21(23):69-72.
[2]孫小平.基于FPGA的增量式光電編碼器接口電路設計[J].自動化應用,2017(12):6-8.
[3]梁學修,陳志,趙博.基于FPGA的電機轉速高精度測量技術研究[J].制造業自動化,2015,37(23):50-52.