杜維康 王景存
摘 要: 實現了一種基于FPGA和LMD18200的步進電機閉環控制系統,給出控制步進電機的設計方法,結合MCU,FPGA和增量型編碼器構成了一個完整的運動控制平臺。該系統由總線接口單元、閉環控制單元、PWM脈寬調制單元和LMD18200驅動單元組成。實踐表明,利用LMD18200驅動邏輯能夠使步進電機高效穩定地運行,有效降低了電機運行中的噪音和啟動、停止時的震動,使用效果好于大部分常規步進電機驅動方法。
關鍵詞: FPGA; 步進電機; LMD18200; 閉環控制; 編碼器; 驅動控制
中圖分類號: TN876?34; TP274 文獻標識碼: A 文章編號: 1004?373X(2018)13?0142?05
Abstract: An FPGA and LMD18200 based closed?loop control system of stepping motor was implemented in this paper. The design method to control the stepping motor is given. The MCU, FPGA and incremental encoder are combined to form a whole motion control platform. The system is composed of bus interface unit, closed?loop control unit, pulse width modulation (PWM) unit and LMD18200 driving unit. The experimental results show that the driving logic of LMD18200 can make the stepper motor run stably and efficiently, effectively reduce the noise during the motor operation and vibration during start and stop, and the control effect of the method is better than that of most conventional stepping motor′s driving methods.
Keywords: FPGA; stepper motor; LMD18200; closed?loop control; encoder; driving control
步進電機是一種數字脈沖信號驅動的電機。通過改變步進電機輸入的脈沖總數、頻率以及各相繞組的通電順序,可以得到不同的運行特性[1?2]。本文討論了一種以FPGA控制為核心、結合專用H橋直流電機驅動芯片LMD18200,實現對步進電機全數字化驅動控制的一種方法。
本設計采用MCU+FPGA的軟硬件協同控制方式。MCU用于人機交互、接收上位機命令并解析后交給FPGA,FPGA接收指令的同時處理步進電機驅動信號復雜的時序以及完成位置閉環控制。MCU為STM32F103ZET6,FPGA采用Cyclone Ⅲ系列的EP3C25Q240C8芯片。系統結構框圖如圖1所示。本文主要介紹FPGA內部的閉環控制單元和PWM脈寬調制單元的設計方法。
FPGA主要由MCU總線接口單元、位置檢測模塊、閉環控制單元以及PWM脈寬調制單元組成。
MCU通過APB總線接口能夠實現對總線接口單元中的寄存器進行讀寫操作,APB(Advanced Peripheral Bus)總線協議是ARM公司提出的AMBA總線結構之一,其控制信號簡單,操作靈活[3?4]。
STM32寫入的參數包括目標距離、加/減速距離、最大勻速速度、尖峰速度、編碼器計數復位信號、方向和啟動信號等信息。FPGA反饋的狀態值包括編碼器的實時計數值、實時速度值、限位開關量、電機閑忙信號等。表1~表3給出了接口單元中各寄存器的功能。基地址為0x65000000。
表2中,start:控制電機啟動信號;dir:控制電機方向信號;mode:00=閉環模式,01=勻速模式,10=停止;reset:編碼器值清零信號;enable:控制電機使能信號;con_speed:勻速模式下的速度等效值。
表3中,busy:電機閑忙標志信號;zeropoint:零點限位開關信號;limitpoint:終點限位開關信號;error:電機錯誤編碼,如電機過熱、過流、長時間沒達到目標位置等;speed:電機實時速度等效值。
本文的步進電機采用的是兩相雙四拍工作方式,即每次兩鄰繞組同時通電,四拍一循環,流程如圖2所示。
LMD18200是美國國家半導體公司設計的專用于驅動電機的芯片。額定運行參數為:額定電流為3 A,峰值電流為6 A;電源電壓可達55 V;功率晶體管導通電阻很小為0.3 Ω;輸入信號兼容TTL和CMOS;內置過流報警和過熱報警以及自動關斷[5]。LMD18200內部電路框圖如圖3所示。

LMD18200一般用于驅動直流電機,內部只有一個H橋。因此,兩相步進電機需要兩片LMD18200驅動。系統的PWM脈寬調制單元輸出信號鏈接LMD18200的方向控制端;LMD18200的PWM端保持暢通,使之電流最大。調整方向控制端PWM輸入的占空比可以控制步進電機的電流,從而達到對電機轉動方向以及輸出轉矩的控制。當方向控制端的占空比均為50%時,H橋輸出平均電流為0,電機停止;當某一相占空比大于50%時,即為正轉;反之為反轉[6]。因此,PWM脈寬調制單元輸出電流為[AB?AB?AB?AB]。
如果目標精度要求超過了步進電機的步距角,就需要對電機進行細分控制。下面以雙四拍工作方式為例說明。電機非細分工作時,繞組通電狀態轉換表為AB,[AB],[AB],[AB],AB,…。當細分數設置為4時,狀態之間的切換就不能一步完成,需要將勵磁電流進行分化,即將每相繞組的勵磁電流分為4份,依次遞增,呈臺階狀,這樣每個臺階的磁通勢即為原來的[14]。圖4表明每相的勵磁電流在細分時的狀態,勵磁電流呈臺階狀依次增加或減少,使得電機狀態轉換不再是4次轉變就完成,而是經過16次轉變,從而實現細分。
綜上可知,調整PWM脈寬調制單元輸出信號的占空比可以實現步進電機的細分控制。因此,得到FPGA中PWM脈寬調制單元輸出正弦波中一個周期內輸出控制點的多少即可實現不同的細分。
根據設計電路的需求以及功能,最主要的兩個控制邏輯為閉環控制單元和PWM脈寬調制單元,下面分別進行詳細介紹。
3.1 閉環控制單元
為了實現電機平穩加減速,合理的速度曲線設計是非常重要的。常見的步進電機速度曲線有:梯形曲線、拋物線曲線和S型曲線[7?8],梯形曲線經過適當優化也可以實現S型曲線的效果。本設計將對梯形速度曲線算法進行研究并實現。
常用的梯形控制曲線如圖5所示。x軸是時間T,y軸是速度V。步進電機啟動速度為VD1,以恒定加速度[a0]運動,[a]步后達到最大速度[VC],并以此速度勻速運行[b]步后,以恒定加速度[a1]作減速運動,到[c]步后速度減小為[VD2]。根據[VD1,VC,VD2,a,b,c]等已知參數,需分別計算出加速度[a0]和[a1]。
系統可以預先判斷目標距離值,從而選擇適合的加減速曲線。當目標距離適當時,電機經過加速、勻速、減速、校準步驟后停止,電機勻速轉動時的速度是參數MAX_SPEED的值;當目標距離較小時,不足以使電機完成加速階段進入勻速階段,此時選擇三角加減速度曲線[9],因此電機運行過程中存在一個尖峰速度,由參數PEAK_SPEED決定。圖6為目標距離對應的速度曲線,當目標距離小于10時,采用的是三角加減速度曲線;大于10時,采用的是梯形加速曲線。
為了使步進電機按照梯形速度曲線平穩加減速,且能夠在編碼器的精度范圍內實現閉環控制,這里采用兩段式的狀態機來實現。
狀態機總共劃分為四種狀態:IDLE(空閑狀態),ACC(加速狀態),CON(勻速狀態),DEC(減速狀態)。詳細的狀態跳轉框圖如圖7所示。
在IDLE狀態,程序會持續監測起始信號上升沿start_pos是否有效,如果有效則進入加速狀態ACC;當編碼器值達到加速目標距離即ACC_PRO時,加速完成信號acc_finish有效,電機進入勻速階段CON;該階段電機的速度是加速階段的最大速度,是由上位機傳遞過來的參數MAX_SPEED決定的,當編碼器值達到目標值與減速距離的差值時,進入減速狀態DEC;在減速狀態,電機速度由最大值曲線平滑下降,當編碼器值達到目標距離goal,減速結束信號dec_finish有效,進入IDLE狀態,等待上位機的下次任務。
3.2 PWM脈寬調制單元
PWM脈寬調制單元將閉環速度控制模塊輸出的速度信號調制為兩相四拍的PWM信號,由A,B相分別輸出到LMD18200的方向控制端,如圖8所示。圖中PLL模塊產生的2 kHz和10.24 MHz的時鐘供后續模塊使用,方向信號direction作為加減計數器的控制信號對速度值進行自加或自減運算。兩相雙拍四相脈沖分配表存放的是相位相差90°的正弦波量化值,高八位作為A相的正弦幅值,低八位作為B相的正弦幅值。
為了提高電機步距的分辨率,采用32細分方案,量化值存放在FPGA內部ROM1表中,因此ROM1表的深度決定了驅動器的最大細分。尋址地址由加減計數器輸出的speed_out決定。比例系數表ROM2中存放的是與速度值匹配的電流強度系數值,該系數決定了電機的驅動強度,但考慮到FPGA無法直接處理小于1的比例系數,代碼中在比例系數ROM表中存放的是乘以256以后的值,在完成后續運算后右移8位即可。然后通過比例壓縮模塊將正弦波平移到中點128處,鋸齒波計數器在脈寬時鐘作用下遞增計數,同時將產生階梯型上升的周期性鋸齒波與處理后的A,B相數據比較后輸出。
LMD18200通過24 V電源供電。DIR為方向信號連接脈寬調制單元的PWM輸出,MT為過熱保護信號,當芯片過熱時該信號有效并反饋至MCU。芯片的剎車輸入端BRAKE和PWM輸入端由同一個信號控制。當MCU檢測到芯片過熱信號MT有效后,可以通過STOP信號控制BRAKE和PWM使其停止工作。另一方面,電流檢測輸出接1個對地電阻[R1],用于產生過流檢測信號,該檢測信號經過[U3](LM339比較器)與參考電壓[VREF]([R2]和[R3]的分壓)比較;當小于[VREF]時,電路按照控制流程控制電機;當大于[VREF]時,自動控制BRAKE信號和PWM信號,使電機停止工作,起到電機過流自動保護的作用,如圖9所示。
由于實際應用過程中有7個步進電機要同時控制。因此FPGA內部要有7套并行的閉環控制和脈寬調制單元邏輯。FPGA選用的是ALTERA公司的Cyclone Ⅲ系列EP3C25Q240C8,硬件上完全能夠滿足設計需要。利用Quartus 12.1平臺進行FPGA邏輯功能模塊的設計,測試過程中系統占用主要的邏輯資源情況如表4所示。
圖10為步進電機加速過程中兩相繞組驅動曲線圖,其中紅色為A相,藍色為B相,當A/B相的占空比均為50%時,輸出電流為0,電機停止。正弦波的幅值決定了輸出的電流以及輸出的扭矩大小。正弦波輸出采樣點數表明了細分的程度以及轉速的大小(輸出采樣頻率固定)。
圖11為加速、勻速、減速過程中編碼器實際采樣圖。圖12為仿真工具ModelSim進行仿真得到的32細分的仿真圖。圖中rom的地址addr_rom由加減計數器模塊的輸出結果截位得到,深度為256。ROM表中存放了周期為2π、相位差為[π4]的正弦值,每次從ROM中讀到的16 bit數據分配到A,B相的A_data,B_data上,作為后續與鋸齒波運算的調制信號。從圖12中可以看出,addr_rom的值在255后變為0,表示一個正弦波周期結束。以此作為分界點,前半部分波形對應的節拍為[AB],后半部分波形對應的節拍為AB。
LMD18200芯片通常作為直流電機的驅動芯片。本文對其控制步進電機進行了有益的嘗試。給出基于FPGA和LMD18200對步進電機控制系統的設計方法。實踐表明,盡管控制邏輯比較復雜,但利用LMD18200驅動邏輯能夠使步進電機高效穩定的運行,有效降低了電機啟動和停止時的震動和噪音,使用效果明顯好于常規步進電機驅動方法。
[1] 陳興文,劉燕.基于FPGA實現步進電機脈沖信號控制器設計[J].機械設計與制造,2006(2):86?87.
CHEN Xingwen, LIU Yan. Design of pulse signal controller for stepping motor based on FPGA [J]. Mechanical design and manufacturing, 2006(2): 86?87.
[2] 歐海平,周硯江,張華葉,等.基于SOPC的步進電機加減速PWM控制器IP核設計[J].機電工程,2011,28(6):708?711.
OU Haiping, ZHOU Yanjiang, ZHANG Huaye, et al. The IP core design of PWM controller based on SOPC′s stepping motor and deceleration [J]. Electromechanical engineering, 2011, 28(6): 708 ?711.
[3] 劉軍,郭立,段勃,等.AMBA 2.0總線IP核的設計與實現[J].微電子學與計算機,2005,22(6):145?148.
LIU Jun, GUO Li, DUAN Bo, et al. Design and implementa?tion of AMBA 2.0 bus IP core [J]. Microelectronics and computer, 2005, 22(6): 145?148.
[4] 時晨,張偉功.基于AMBA總線UART IP核的設計與實現[J].計算機應用,2003,23(z1):36?38.
SHI Chen, ZHANG Weigong. The design and implementation of UART IP core based on AMBA bus [J]. Computer applica?tions, 2003, 23(S1): 36?38.
[5] 張軍,葛悅,劉超,等.一種高效的兩相步進電機控制技術[J].計算機測量與控制,2012,20(8):2130?2132.
ZHANG Jun, GE Yue, LIU Chao, et al. An efficient two?phase stepping motor control technology [J]. Computer measurement and control, 2012, 20(8): 2130?2132.
[6] 王磊,艾曉庸,朱齊丹,等.基于LMD18200組件的直流電機驅動器的設計[J].自動化與儀表,2004,19(1):26?27.
WANG Lei, AI Xiaoyong, ZHU Qidan, et al. Design of DC motor drive based on LMD18200 components [J]. Automation and instrumentation, 2004, 19(1): 26?27.
[7] 王邦繼,劉慶想,周磊,等.步進電機速度曲線的設計與FPGA實現[J].微電機,2012,45(8):67?71.
WANG Bangji, LIU Qingxiang, ZHOU Lei, et al. Design of stepper motor speed curve and FPGA implementation [J]. Micromotors, 2012, 45(8): 67?71.
[8] 楊超,張冬泉.基于S曲線的步進電機加減速的控制[J].機電工程,2011,28(7):813?817.
YANG Chao, ZHANG Dongquan. Control of acceleration and deceleration of stepper motor based on S curve [J]. Electromechanical engineering, 2011, 28(7): 813?817.
[9] 霍建偉,馬海濤,王麗秋,等.全自動生化分析儀用分光光度計[J].光學精密工程,2003,11(5):457?460.
HUO Jianwei, MA Haitao, WANG Liqiu, et al. Automatic biochemical analyzer spectrophotometer [J]. Optical precision engineering, 2003, 11(5): 457?460.
[10] 周明安,朱光忠,宋曉華,等.步進電機驅動技術發展及現狀[J].機電工程技術,2005,34(2):16?17.
ZHOU Mingan, ZHU Guangzhong, SONG Xiaohua, et al. Development and status of stepper motor driven technology [J]. Electromechanical engineering technology, 2005, 34(2): 16?17.