劉忠強,張 立,張春曉,孔祥飛,申安安
(沈陽儀表科學研究院有限公司,沈陽 110043)
隨著裝備制造業的發展,自動化生產設備正在逐漸代替人工成為生產過程中的主力軍[1]。自動化設備與人工相比具有精度高、速度快、效率高、抗疲勞的優點。借助于運行平穩、精度高、響應快、使用壽命長的優點,步進電機被廣泛應用在涉及到定位的各個自動化控制場合[2]。為了解決傳統自動化設備需要有較高專業技能人員操作的問題,本設計著力于設計一款擁有人性化交互界面的雙軸步進電機驅動控制系統。
系統方案設計包括基于單片機的主控部分,基于步進電機的執行機構部分,基于限位開關的反饋檢測部分以及基于可觸摸顯示器的人機交互部分。主控部分負責將系統各個模塊之間實現信號連接并使其正常工作。執行機構部分根據接收到的主控傳送的信號來分別對X、Y軸的步進電機進行控制。反饋檢測部分主要使用固定的限位開關實現,在步進電機運動到限位區域時及時向主控部分發出報警信號以防損壞步進電機以及驅動器。人機交互部分是通過觸摸顯示屏和嵌入式GUI界面實現的,借助于電容觸摸屏和嵌入式GUI提供的豐富的控件可以設計出良好的UI界面以此來實現人性化的人機交互。系統方案框圖如圖1所示。

圖1 系統方案框圖Fig.1 System structure diagram
系統硬件電路主要包括電源電路、單片機最小系統電路、LCD接口電路、外擴SRAM電路、按鍵電路、蜂鳴器報警電路、步進驅動接口電路以及限位開關接口電路。系統的硬件電路框圖如圖2所示。

圖2 系統硬件電路框圖Fig.2 System hardware circuit block diagram
電源電路的設計主要分為兩部分完成。第一部分采用MP2359基于開關電源芯片設計的降壓電路,降壓電路把24 V直流電壓變為5 V的直流輸出,可以為步進驅動器的光耦芯片以及LCD液晶的LED背光進行供電。降壓電路如圖3所示。

圖3 降壓電路原理圖Fig.3 Buck circuit schematic diagram
二極管D11是防反接電路,電容C51,C52組成了輸入級的濾波電路,電阻R50,R52為芯片的反饋引腳FB提供反饋電壓,芯片根據反饋電壓可以將輸出電壓穩定在5 V左右;輸出濾波電感L1選用4.7 μH的功率電感;輸出濾波電容C53,C54選用瓷片電容加電解電容的組合;續流二極管D12采用肖特基二極管SS14。輸出級電感L1和輸出級電容C53,C54共同組成輸出級濾波電路,消除輸出電源紋波。
從5 V降壓到3.3 V采用的是線性穩壓芯片AMS1117-3.3。
系統選用STM32F407ZGT6單片機作為核心處理器。STM32F407單片機自帶的定時器、FSMC總線、外部中斷等外設可以有效地服務于系統的硬件電路[3]。
STM32單片機采用低電平復位的方法。最小系統電路中設計了2個晶振電路。第一個是頻率為32.768 kHz的石英晶振Y1,主要功能是為單片機的RTC提供時鐘基準。第二個是頻率為8 MHz的石英晶振Y2,主要功能是為單片機提供外部時鐘,該時鐘源經過鎖相環 (PLL)倍頻后得到系統時鐘(SYSCLK),系統時鐘為單片機運行提供時鐘基準。
LCD液晶采用了模塊化設計,觸摸屏為電容觸摸,分辨率為800×480,顏色深度為16位,采用RGB565的數據格式[4]。本設計選用的單片機可以使用FSMC(可變靜態存儲控制器)總線外設驅動8080總線接口的LCD模塊,LCD模塊的大部分引腳連接到了單片機上擁有FSMC復用功能的引腳上。
步進電機驅動器采用的是成熟設計的大功率驅動器,主控板上留出了與步進驅動器連接的接口。接口使用插拔式接線端子連接,接插方便、不會接反。驅動器內部采用光耦器件與單片機的輸入信號隔離,驅動器內部的光耦器件采用共陽極的連接方式[5-7]。
接口中第一個引腳連接VCC5用于給驅動器的光耦芯片供電,每一個信號引腳輸出低電平時對應驅動器內部的光耦器件導通,當信號輸出高電平時內部光耦器件關閉。圖中DIR信號用于控制步進電機的轉動方向,STEP信號用于控制步進電機轉動的角度。每個輸入脈沖控制步進電機轉動的角度取決于步進電機的步距角以及驅動器的細分設置。

圖4 驅動接口電路圖Fig.4 Drive interface circuit diagram
本設計的單片機軟件程序采用C語言編寫,在單片機上運行了嵌入式實時操作系統UCOSIII。本設計共編寫了7個運行于UCOSIII的用戶任務(Task),這些任務在任務調度器的調度下共同實現本設計的功能。7個用戶任務分別為開始任務、觸摸任務、LED任務、X軸步進電機控制任務、Y軸步進電機控制任務、EMWIN的UI任務以及按鍵掃描任務。
開始任務用于創建其余的6個用戶任務,在創建任務完成后開始任務將自己掛起,釋放堆棧資源,不再運行。觸摸任務用于在一定時間內向EMWIN反饋觸摸坐標的變化,LED任務用于指示燈顯示為不同狀態。X軸步進電機控制任務用于控制X軸的步進電機運動,Y軸步進電機控制任務的流程與X軸步進電機控制任務完全一致。EMWIN的UI任務主要包含整個UI界面內的數據處理。按鍵掃描任務用于檢測按鍵是否按下。
單片機上電之后首先執行的代碼是調整系統運行時鐘,本設計采用的時鐘方案是外部晶振作為時鐘輸入源。初始化時鐘主要包含設置PLL的倍頻參數,設置外部晶振的頻率,經過時鐘初始化之后SYSCLK倍頻到了168 MHz。
接下來初始化液晶屏、觸摸板、按鍵、LED、蜂鳴器以及外部SRAM。液晶用到了FSMC的數據總線,片選信號,讀、寫使能信號等。外部擴展的SRAM內存芯片除了電源引腳以外的所有信號引腳連接到單片機都需要使用FSMC總線外設的復用功能,這也意味著外部擴展的內存主要讀寫、尋址操作可以由單片機的FSMC總線外設完成,降低了程序編寫難度。在配置這些復用到FSMC外設的引腳時不僅需要配置引腳的輸入輸出模式還需要使用引腳功能復用函數GPIO_PinAFConfig()來將其選用的復用功能映射到FSMC外設上去。
對UCOSIII以及EMWIN的初始化主要是運行其提供的API函數,設定用戶自己的參數即可。初始化流程如圖5所示。

圖5 硬件以及UCOS和EMWIN的初始化流程Fig.5 Initialization flow chart of hardware and UCOS and EMWIN
在完成UCOSIII的初始化之后用戶任務在任務調度器的調度下運行,每個任務需要執行的程序主要有代碼段和延時函數,代碼段執行的耗時遠小于延時函數執行的耗時。當前任務處于延時狀態時任務調度器就可以將等待運行的任務激活。單片機執行代碼的速度較高(168 MHz)加上任務調度器的工作速度很快,所以操作系統下運行的任務就像是在并行運行一樣。以下將分別介紹幾個重要的任務流程。
3.2.1 X、Y軸步進電機控制任務流程
本設計使用了2個步進電機分別用于控制X、Y軸絲杠的運動。驅動步進電機轉動需要一路方波信號,信號的頻率越高步進電機的轉速越快。根據這個特點使用2個任務分別控制X、Y軸步進電機的運動,X、Y軸步進電機的控制任務流程基本相同。由于在UCOS系統中使用1 ms以下的延時的時候不可以進行任務調度,驅動步進電機的控制信號的周期延時分別交給單片機的硬件定時器TIM3、TIM4以及2個UCOS的信號量來完成[8]。
步進電機控制任務主要完成限位檢測、手動模式下的步進電機運動控制、自動模式下的步進電機運動控制、開機自動回到坐標原點、計算當前雙軸平臺滑塊的坐標數據等功能。
步進電機控制任務主要實現了開機滑塊自動回原點,手動模式下用按鍵控制步進電機的運動,自動模式下自動運行,觸發限位時手動消除限位的效果。步進電機控制任務流程如圖6所示。
3.2.2 基于EMWIN的UI任務流程

圖6 步進電機控制任務軟件流程Fig.6 Software flow chart of stepping motor control task
基于EMWIN的UI界面的各種操作被放在了EMWIN的UI任務里。UI任務主要包含界面內的各個窗口小控件的初始化,實時更新需要顯示的數據,根據相關小控件的操作更新用于控制步進電機的參數等功能。
在使用該UI界面時可以通過RADIO單選框來選擇雙軸滑臺的工作模式,可以在未運行的自動模式下通過SLIDER小控件設置目標坐標,可以使用SLIDER控件調整液晶的亮度,可以通過BUTTON控件開啟、暫停步進電機的運行狀態。UI任務的軟件流程如圖7所示。

圖7 UI任務軟件流程Fig.7 Software flow chart of UI task
雙軸步進電機驅動控制系統的設計主要包括硬件電路設計優化和軟件編程設計。硬件電路設計主要包括電氣原理圖連接,單片機的IO資源分配,外設的電路設計等工作。軟件編程設計主要包括UCOS的移植,EMIWN的移植,步進電機控制任務的編寫。電路板設計完成之后需要對整個硬件電路進行調試,測試其能否正常工作。軟件編寫完成后需要調試軟件使其達到最穩定的運行狀態。
本設計的軟件編程主要涉及2個方面,一是基于EMWIN實現的人機交互界面,二是步進電機的控制程序。人機交互界面主要關系到顯示到界面上的各個小控件的像素位置。圖8展示了人機交互界面的照片。

圖8 人機交互界面Fig.8 Human machine interface
整個雙軸滑臺的運動控制都集成在了主控板上。主控板上用于輸入信息的方式主要有按鍵和觸摸屏。通過操作按鍵和觸摸屏可以控制雙軸滑臺進行各種各樣的運動控制功能。
雙軸步進電機驅動控制系統以2個單軸的絲杠滑臺作為執行機構,采用TB6600型步進驅動作為平臺上步進電機的驅動器,以單片機為核心構建了一塊驅動控制板,采用UCOS+EMWIN的軟件方案設計了一套用于人機交互的觸摸屏界面。
觸摸屏界面作為主要的交互方式,通過界面內的單選框來選擇當前平臺的工作模式,工作模式分為手動模式和自動模式;通過滑動界面內的滑塊小工具設定用于自動模式下的預期坐標;通過滑動最下方的滑塊調節屏幕亮度以適應不同強度的光線;通過界面內的速度調節按鈕調節步進電機運行的速度;通過運行/停止按鈕控制自動模式下雙軸平臺的運行和暫停。
綜上所述,本文描述的硬件電路設計、軟件方案設計圓滿實現了基于液晶觸摸屏的人機交互功能和步進電機控制功能,雙軸步進電機驅動控制系統的各項指標達到要求。