韓俊奇,徐建華,李杭嘉,吳春江
(1.中國科學院大學,北京100049;2.中科院微電子研究所,北京100029;3.杭州中科微電子有限公司,杭州310053)
步進電動機是一種把電脈沖信號變成直線位移或角位移的控制電機[1]。通過控制電機的交變電流的頻率,從而控制步進電動機的轉速。而傳統的步進電動機控制方法是由觸發器產生控制脈沖進行控制的,控制方式單一且難以實現人機交互,當步進電動機的參數發生變化時,需要重新進行控制器的設計[2]。目前在一些電機的應用領域,要求電機具有精確的轉動速度和角度,直流電動機往往無法滿足這一要求。基于此,本文設計了一款基于ARM的步進電動機控制系統,并且開發了上位機軟件,利用上位機軟件,直接對步進電動機進行控制。而且,可以通過變換步進模式、設置步數來達到特定轉動角度的精確要求。本系統操作模式簡單,人機交互界面直觀,程序執行速度快,可在一系列特定的電機自動化領域起到廣泛的應用。
電機控制系統包括硬件系統、軟件系統以及通信系統三部分。硬件系統主要包括電路設計;軟件系統主要包括軟件設計、下位機程序設計;通信系統主要包括通信協議以及串口收發功能。點擊上位機軟件相應的按鈕,通過USB 發送相應的控制命令信號,MCU 接收到控制命令并且分析,作出相應的判斷處理,然后向驅動芯片發送相應的命令,從而達到控制電機的正轉、反轉、步進模式等一系列控制。根據以上系統結構,本文分成三個模塊進行設計。系統架構圖如圖1 所示。

圖1 系統架構
硬件電路把ARM 控制板和電機驅動板分開設計,通過排陣方式連接,這樣可以保證ARM 板兼容其他的驅動控制板,從而擴大ARM 板的應用范圍。
ARM 板的設計主要負責與上位機間進行命令交互、向驅動板供電、向驅動板發送控制命令等功能。因此ARM 板主要包括ARM 芯片、USB 與UART 轉換芯片、電平轉換芯片。
本系統選擇NXP 公司的LPC11A14 作為控制板的MCU。LPC11A14 是基于ARM Cortex -M0 內核的MCU,它支持可嵌套中斷向量控制NVIC 和串行調試接口SWD,它內置有最高32 kB 的片內閃存程序存儲器、最高4 kB 的EEPROM 數據存儲器、最高8 kB 的SRAM 數據存儲器以及16 kB 的BOOT ROM。它支持USART 通信、包含4 個計數器。它的通用I/O 口最多可達28 個,支持多功能復用,可以根據需要配置成不同的功能。
上位機與控制板采用USB 通信,由于MCU 接收的是UART 串行信號,上位機發送的是USB 信號,因此需要USB 轉UART 轉換芯片。本設計采用了FTDI 公司生產的FT232R 芯片。FT232R 內置有1 024 bit EEPROM 可通過CBUS I/O 口來對芯片進行編程實現芯片的不同功能。FT232R 內部含有高達256 字節的接收緩沖和128 字節的發送緩沖,可實現快速數據發送和接收。FT232R 內置12 MHz的晶體振蕩器,且外圍電路簡單。
LPC11A14 需要3.3 V 供電,FT232R 采用5 V 供電,因此需要電平轉換芯片。本設計選取了較為簡單的LM1117 電平轉換芯片,方便5 V 轉換3.3 V。
部分設計電路如圖2 所示,其他外圍電路略。

圖2 ARM 板電路圖
驅動板主要是為電機提供驅動電壓和信號。驅動板由ARM 提供電壓,且選用Allegro 公司的A4985 作為驅動芯片。A4985 是一款簡單實用的步進電動機驅動芯片,包含全步、1/2、1/4、1/8 四種步進模式。A4985 的信號輸入端接入MCU,OUT 輸出端連接步進電動機。選擇好模式后,A4985 驅動芯片內部的DAC 和鎖環控制電路產生對應模式的N階近似階梯電流,斬波電路通過CMOS 管的打開和關閉,使得電流維持在一個特定階梯上,OUT1 和OUT2 端階梯電流產生特定磁場合力,使得電機定子有N 個新的平衡位置(N 個步矩角)。當MCU 控制驅動芯片的Step 輸入頻率改變時,階梯波形產生頻率相應改變,OUT 端的輸出交變電流頻率相應改變,從而電機的轉動頻率相應改變。每經過一個Step 信號周期,兩個OUT 端輸出就會階躍一個臺階,電機就會達到一個新的位置,當輸入特定數目的頻率時,可以控制步進電動機轉過特定的角度,從而精確控制步進角。
A4985 的四種步進模式,可以達到精確角度的控制要求。全步模式下,單步轉動角度為1.8°;1/2模式下,單步進角度為0.9°;1/4 模式下,單步進角位0.45°;1/8 模式下,單步進角度為0.23°。通過控制步數,從而達到精確的角度控制要求。
驅動板的原理圖如圖3 所示。

圖3 驅動板電路圖
軟件系統主要包括PC 機界面的編寫以及ARM內核程序的編寫。軟件系統是整個電機控制系統的核心,實現與電機交互的操作。軟件界面根據驅動芯片上的控制引腳設置基本的控制功能鍵,ARM 內核程序用以處理數據、發送命令。
PC 機軟件是用戶直接控制電機轉動可視化界面,通過點擊軟件上的相應按鈕,實現相應的控制功能。本軟件設計是基于Windows 平臺利用下利用QtCreater 設計的。QtCreater 是一款面向對象的基于C+ +的界面編程工具,它支持信號和槽機制,方便控件之間的通信。它內嵌的Qt Designer 可用來設計軟件界面以及界面布局,并支持UI 到C + +類的轉換,可以在生成UI 類的基礎上進一步開發,根據需要編輯特定的功能。Qt 包含了強大的C + +庫,方便用戶直接調用,降低開發難度。
PC 機軟件設計步驟可以分為:界面設計、串口類設計、控件命令的實現。PC 機界面包含基本的功能操作項,串口連接的界面以及收發界面,利用Qt Designer 完成相應的界面設計和布局。通過自定義Qserial 類作為與下位機通信的接口。控件的功能實現是利用Qt 的信號和槽機制,完成相應功能函數。
本軟件把操作界面分為四部分:串口選擇、基本功能部分、頻率控制部分、串口收發部分。
ARM 內核程序主要用到了ARM 的向量中斷機制。通過不同的中斷執行不同的中斷函數,從而控制電機的轉動狀態。首先利用NXP 公司提供的例程函數對LPC11A14 進行系統配置,主要是系統時鐘和初始化的配置。其次配置GPIO、UART 和Timer,最后撰寫main 函數。UART 的中斷函數用來接收PC 機信號并作出判斷,Timer 中斷處理函數利用它的計數器功能來控制電機驅動芯片的輸入頻率,計數器可以精確到1/48 μs。
主程序設計的核心是UART 準確接受命令,解析后,啟動Timer 的精確計時,向驅動芯片發送準確的脈沖數,控制步進電動機轉過準確角度。
ARM 內核程序流程圖4 所示。

圖4 程序流程圖
LPC11A14 作為系統的MCU,與PC 機通信采用同步串行方式通信,需設置成相同波特率,上位機可供 選擇的波特率有1200、2400、4800、9600、19 200、38 400、57 600、115 200。為了盡量減少發送延時,采用115 200 的波特率。PC 端和MCU 的UART 端設置成8bit 數據位、1bit 停止位、無奇偶校驗位。
PC 端向MCU 通過串口發送命令,MCU 接收到命令后,并反饋回PC 端,同時還要對相應的命令進行解析,以指定電機特定的動作。這種命令之間的交互,需要制定一定的協議,來保證命令的讀取和解析。因此制定通信協議顯得非常重要。根據對驅動芯片的控制引腳的描述,主要有nENABLE、DISABLE、DIR、MS1、MS2、nSLEEP、STEP、nRESET 這幾種控制動作,針對這幾種動作制定相應的協議,同時根據精確步進和精確角度的要求,還要設置速度和步進數的協議。為了提高執行速度,本協議采用二進制形式發送和解析。該協議分為幀頭、數據幀和幀尾。數據幀包含控制模塊選擇、功能選擇以及功能的參數。詳細協議內容如表1 所示。

表1 通信協議格式
當驅動芯片輸入頻率改變時,輸出端的交變電流頻率隨之改變。當MCU 端產生特定頻率,使得電機維持特定的速度轉動;MCU 產生一定數目的脈沖,電機轉過特定的角度。上位機軟件通過改變頻率值或者輸入特定數目頻率,達到精確控制電機轉動速度和轉動角度。上位機軟件還可以實現電機的使能、停止、睡眠模式、步進模式等一系列功能,整個控制流程快捷清晰,軟件和硬件相互配合,完成電機的控制。
當本設計完成了一整套從上位機到下位機的電機控制系統,從底層硬件電路設計,到上位機軟件編寫,再到MCU 程序編寫,最后制定通信協議,分步驟的完成各個模塊功能。經過反復調試,最終調試成功。通過軟件精確控制步進電動機的速度和步進角度。實物如圖5 所示。本電機控制系統可以廣泛應用于工廠自動化、家庭自動化等領域,具有較強的實用性。

圖5 實物圖
[1] 敬嵐,朱海君,張碩成,等.步進電機控制系統的設計及其應用[J].核技術,2005,28(6):479 -481.
[2] 史敬灼. 步進電動機伺服控制技術[M]. 北京:科學出版社,2006.