馬丹丹,張文超
(杭州電子科技大學電子信息學院,浙江 杭州 310018)
步進電機是一種將電脈沖信號轉(zhuǎn)化為相應的角位移或直線位移的機電執(zhí)行元件。因其控制簡便,具有精確步進、沒有誤差累計和便于開環(huán)控制等優(yōu)點,故被廣泛應用于諸多行業(yè)的自動化控制系統(tǒng)中作為執(zhí)行部件。
許多生命科學儀器中都需要采用步進電機作為樣品定位執(zhí)行部件[1]。但是傳統(tǒng)的步進電機驅(qū)動往往采用由一個MCU負責全部任務(wù)的集中管理控制模式,隨著系統(tǒng)任務(wù)的增多,管理控制都變得繁雜了,集中控制體系就難以滿足實時性、快速性及精確定位的要求。為此,本文提出基于STM32和CAN總線的“分布串行式”控制體系的設(shè)計方案,通過現(xiàn)場總線技術(shù)實現(xiàn)基于高性能MCU的集中控制及上下位機的實時通信。簡化了控制系統(tǒng),提高了系統(tǒng)的穩(wěn)定性和靈活性,很好地改善了傳統(tǒng)控制架構(gòu)的缺點和不足,并實現(xiàn)了在細分模式下的精確定位[2]。
圖1 傳統(tǒng)集中式驅(qū)動模式架構(gòu)
此模式缺點如下:
(1)系統(tǒng)實時性不夠。在多步進電機控制系統(tǒng)中,隨著控制節(jié)點的增多,控制信號和反饋信號將大大增加,單個MCU既要負責整個系統(tǒng)的協(xié)調(diào)調(diào)度,還要頻繁的控制和改變各個節(jié)點的信號控制參數(shù)來控制步進電機的運行狀態(tài),造成MCU的負擔過重,影響整個系統(tǒng)的實時性。
(2)子模塊不具備智能性,獨立性不好。系統(tǒng)的各個驅(qū)動子模塊必須依賴MCU發(fā)出命令才能執(zhí)行相應動作,這就占用了MCU的大量軟硬件資源,使系統(tǒng)總性能下降。
(3)操作復雜。由圖1可以看出,電機驅(qū)動子模塊越多,則由MCU應用系統(tǒng)引出的控制線越繁雜,在多步進電機控制系統(tǒng)中排線布局將變得復雜,易發(fā)生斷線或解除不良的故障,且增加了成本。
本文設(shè)計的基于STM32和CAN總線的智能步進電機驅(qū)動模塊即為分布串行式架構(gòu),如圖2所示。
圖2 分布串行式驅(qū)動模式架構(gòu)
上位機系統(tǒng)由PC機顯示器和RS232接口模塊構(gòu)成,并采用Labwindows/CVI編寫設(shè)計良好的人機界面。
下位機系統(tǒng)為CAN總線連接的主節(jié)點和若干個智能電機控制子節(jié)點。主節(jié)點和子節(jié)點均采用高性能的STM32F103ZET6作為處理核心,主節(jié)點負責協(xié)調(diào)指揮各個子節(jié)點完成任務(wù)的統(tǒng)一調(diào)度管理、指令下達和數(shù)據(jù)傳輸?shù)裙ぷ鳎庸?jié)點則根據(jù)下行命令對電機做出相應的驅(qū)動控制。
與傳統(tǒng)架構(gòu)相比,其優(yōu)點如下:
(1)增強了系統(tǒng)的實時性。主控節(jié)點只需負責電機運行控制命令的下達和整個系統(tǒng)的協(xié)調(diào)調(diào)度,頻繁切換或頻繁改變步進電機運行狀態(tài)的任務(wù)可由智能步進電機驅(qū)動模塊自身來完成,從根本上減輕了主控節(jié)點的負擔,提高了整個系統(tǒng)的實時性。
(2)子模塊具有智能性,獨立性好。用戶只需將電機運行控制命令(如細分步數(shù)、轉(zhuǎn)向、轉(zhuǎn)速、步數(shù)等)經(jīng)CAN總線傳送給各個子模塊,由子模塊來控制步進電機的自動運行,而無需主控模塊的監(jiān)管。
(3)控制簡單,節(jié)約成本。由圖2可以看出,主控模塊可直接通過CAN總線傳送控制命令,大大降低現(xiàn)場信號線連接的繁瑣度與線纜費用,提高信號傳輸?shù)木扰c靈活性,同時也有利于系統(tǒng)的安裝、調(diào)試和維護。
(4)采用CAN總線使得整個系統(tǒng)具有傳輸速率高、兼容性好、容錯能力強及擴展性好等優(yōu)點[3]。
系統(tǒng)主節(jié)點除電源模塊外,主要包括主控單元、串口模塊、CAN接口模塊。主節(jié)點的任務(wù)如下:
(1)它通過RS232接口接收上位機下達的指令和數(shù)據(jù),并根據(jù)任務(wù)需要通過CAN接口模塊和CAN總線下傳給某個子節(jié)點,由相應的子節(jié)點功能模塊完成相應的任務(wù)。
(2)由各個子模塊產(chǎn)生的數(shù)據(jù)和請求信息等,通過CAN接口模塊和CAN總線傳送到主節(jié)點,再由主節(jié)點分類識別并根據(jù)需要將有關(guān)的數(shù)據(jù)和請求信息通過RS232接口上傳給上位機。
(3)各個子節(jié)點需要協(xié)調(diào)工作時,由主節(jié)點完成。
鑒于上文所述主節(jié)點的三大任務(wù),其主控芯片應選用速度高、程序和數(shù)據(jù)存儲器容量大的單片機,以滿足復雜的算法編程和大量的數(shù)據(jù)采集需要,以及快速準確的信息交換。因此,本文中主控芯片采用ST公司STM32系列32位微控制器中的“增強型”系列STM32F103ZET6[4]。
其優(yōu)勢如下:
(1)采用高性能、低成本、低功耗的的ARM Cortex-M3內(nèi)核。
(2)豐富的外設(shè)接口。包括5個USART、USB接口、CAN接口、DMA通道等,其中利用串口可以進行上下位機的通信,利用CAN接口可以組成分布式控制系統(tǒng)等,這些都為后續(xù)系統(tǒng)擴展提供了不可或缺的條件。
(3)強大的定時器功能。STM32多達11個定時器,帶有用于電機控制的PWM輸出,特別適合在電機控制場合的應用,這就為子節(jié)點控制芯片的選取提供了強有力的條件。
(1)上位機和主節(jié)點間通信選用了RS232總線,其設(shè)計簡單,應用廣泛,在短距離通信中是不錯的選擇。
(2)節(jié)點間通信選取了CAN總線。CAN總線是一種多主異步串行總線,與傳統(tǒng)的現(xiàn)場總線相比,其具有優(yōu)良的錯誤處理機制;數(shù)據(jù)通信具有較高的可靠性、實時性和靈活性;通信距離長,速度快;價格低廉等優(yōu)點。
基于CAN總線的應用網(wǎng)絡(luò)中CAN節(jié)點的構(gòu)成可以有多種實現(xiàn)方案,因本設(shè)計中節(jié)點的控制芯片均采用STM32F103ZET6,其內(nèi)部自帶CAN控制器,為縮短開發(fā)周期,選取外加CAN收發(fā)芯片VP230來構(gòu)成CAN接口模塊。
VP230是TI公司推出的3.3VCAN總線收發(fā)器,其工作電壓為3.3V,滿足HBM模式16KV的ESD防護,允許總線上多達120個節(jié)點,符合ISO11898標準要求,具有過熱關(guān)斷保護功能。
子節(jié)點(如圖3所示)的主要功能為在完成通信協(xié)議解析的基礎(chǔ)上,根據(jù)上位機發(fā)送的命令,實現(xiàn)對步進電機的精確控制。主要包括CAN通信接口模塊,子節(jié)點微控制器模塊,電機驅(qū)動模塊。子節(jié)點的控制芯片和CAN接口模塊和主節(jié)點一致,不再贅述。
圖3 子節(jié)點智能電機驅(qū)動模塊簡圖
為實現(xiàn)步進電機的精確控制,本文采用在細分驅(qū)動模式下控制電機的運轉(zhuǎn)。選取北京海華博遠科技發(fā)展有限公司研制的THB7128作為驅(qū)動芯片。THB7128為大功率、高細分兩相混合式步進電機驅(qū)動專用芯片,雙全橋MOSFET驅(qū)動;最高耐壓可達DC40V;輸出電流峰值可達3.3A;多種細分模式可選,最高可達128細分。
智能模塊細分驅(qū)動工作原理:通過采用擬正弦波的繞組驅(qū)動電流實現(xiàn)對步進電機勵磁繞組電流的細分控制,對步進電機步距角進行細分,從而達到更高的步進精度。本設(shè)計中子節(jié)點MCU將細分控制信號發(fā)送給電機驅(qū)動模塊,其內(nèi)部集成的相序產(chǎn)生器將設(shè)定的電流值送入DAC。經(jīng)誤差比較放大環(huán)節(jié)和PWM驅(qū)動調(diào)節(jié)電機繞組中的電流,使其按照給定波形變化,從而獲得所需要的細分精度驅(qū)動步進電機運轉(zhuǎn)[5]。
整個系統(tǒng)的軟件分為上位機軟件和下位機節(jié)點控制軟件。
上位機的軟件通過Labwindows/CVI編寫,包括三大部分:通信模塊,管理模塊,界面設(shè)計。通信模塊主要負責實現(xiàn)CAN接口通信的初始化、數(shù)據(jù)接收和發(fā)送。管理模塊負責各個電機的啟停、運行步數(shù)、速度、轉(zhuǎn)向及細分模式的設(shè)置。界面設(shè)計則為人機交互提供了方便。
下位機軟件由主程序、CAN初始化程序、CAN報文發(fā)送和接收程序、電機控制程序等組成。主程序流程圖如圖4所示。
圖4 下位機主流程圖
本設(shè)計選用型號為42BYGHW208的兩相混合式步進電機進行測試。
本系統(tǒng)采用“針尖對針尖”的實用實驗方法進行驗證,并通過示波器記錄不同細分數(shù)的波形圖,波形圖如圖5所示,實驗測試實物圖如圖6所示。
此型號步進電機步距角為1.8度,經(jīng)計算,步進電機128細分時針尖走過的弧長約為0.0066mm,而針尖的直徑可達微米級,故此種測試方法是有效的。具體實驗方法:設(shè)置不同的細分數(shù),在每種細分數(shù)狀態(tài)下設(shè)定電機轉(zhuǎn)動相同的圈數(shù),觀察電機轉(zhuǎn)動的累積誤差。記錄電機轉(zhuǎn)動無累積誤差時的最大步進頻率。得到數(shù)據(jù)如表1所示。
圖5 八細分取樣電阻兩端波形(理想VS實測)
圖6 整個實驗系統(tǒng)實物圖
表1 實驗測試結(jié)果
根據(jù)表1可以得到如下結(jié)論:
(1)細分驅(qū)動要有頻率上限限制的,且細分數(shù)越高,上限頻率越低。這是因為隨著步進電機細分數(shù)的增加,其步距角越來越小,若頻率過快,則很容易出現(xiàn)振蕩失步等現(xiàn)象,并導致步進電機丟步。
(2)為了快速而又不丟步地進行定位驅(qū)動,建議最好采用整步和細分步相結(jié)合的方式。即首先用整步快速運行到接近預定位置,然后再用較高的細分步數(shù)“細分”驅(qū)動精確地平滑地運行到預定位置。
(3)為了可靠地不丟步的運行,建議所用驅(qū)動時鐘(CLK)頻率不要接近表1的最大限制頻率(fmax)。比如在3/4或1/2 fmax處運行,具體多少為佳需要看步進電機所帶的負載輕重與否,負載輕,頻率就可以高一些;負載重,頻率就要低一些。這樣就可以可靠地準確地驅(qū)動到預定位置。
波形圖測試說明如下:
為測試方便,本次實驗選取測試取樣電阻(圖3中RA, RB)兩端的電流波形。圖5(a)為理想狀態(tài)下8細分時的為200Hz,步進電機A,B兩相繞組取樣電阻兩端的電流波形??梢钥闯鰞陕凡ㄐ尉鶠槿〗^對值后的正余弦波,相位相差90°,圖5(b)為200Hz,步進細分數(shù)為8時的實際測試結(jié)果,可見實測波形與理想波形基本一致,限于篇幅,其他細分數(shù)的波形就不贅述了。圖6為主節(jié)點帶兩個子節(jié)點的整個實驗系統(tǒng)實物照片。上位機界面圖比較繁雜,尺寸大,此略。
基于STM32和CAN總線的智能步進電機驅(qū)動模塊的設(shè)計,很好的解決了傳統(tǒng)并行集中控制模式中存在不足,硬件上減少走線、系統(tǒng)更易于擴展,軟件上通信更加靈活,實時性更好,糾錯能力強,經(jīng)實踐證明,該系統(tǒng)控制靈活,數(shù)據(jù)傳輸可靠,在生命科學儀器中具有較強的通用性和廣泛的應用前景。
[1]張文超. CAN總線技術(shù)研究與基于CAN總線的生命科學儀器硬件系統(tǒng)設(shè)計(上篇)[J]. 醫(yī)療衛(wèi)生設(shè)備. 2005, 26(2):8-10.
[2]張文超. CAN總線技術(shù)研究與基于CAN總線的生命科學儀器硬件系統(tǒng)設(shè)計(下篇)[J]. 醫(yī)療衛(wèi)生設(shè)備. 2005, 26(3):3-5.
[3]魏衡華, 陳根杰, 張玉斌, 等. 基于CAN總線的步進電機控制系統(tǒng)的設(shè)計[J]總線與網(wǎng)絡(luò). 2009, (1):29-32 .
[4]劉威龍, 孫明磊, 王頔, 等. 基于STM32的分布式步進電機控制系統(tǒng)設(shè)計[J]. 數(shù)字技術(shù)與應用. 2012, (3):12-14.
[5]王志超,林巖,李大慶. 兩相混合式步進電機細分驅(qū)動[J]. 信息與電子工程. 2008, 6(6):457-459.