陳芷琳,溫曉靜,劉 鑫,王 翔,丁肇紅
(上海應用技術大學 電氣與電子工程學院,上海 201418)
自從20世紀80年代末板球系統開始被國內外學者當作研究對象來驗證各種控制算法,板球系統的研究已經經歷了從simulink模型仿真驗證到實物平臺實時控制的過渡[1-2],陸續有各個課題組實驗室以及企業生產制造出各類板球系統實物平臺,其中國內比較常用的是由固高科技公司生產的GPB2001板球系統,其平臺實物和上位機界面如圖1所示。
隨著自動控制技術的進步和深入研究板球系統現在已經成為各高校自動控制原理實驗室的基礎實驗平臺,目前市場所售板球系統未進行技術升級換代,上位機軟件還只能運行在windows xp系統環境下,技術相對來說已經落后,不能滿足當前教學和研究所需。而且板球系統平臺自身即是一個集合機械、電子、自動化以及計算機科學等多學科交叉綜合的系統,因此對研究板球系統平臺設計研究有非常實用的價值和重要意義。本文就板球系統提出了一套完整的設計思路和可執行方案,實現成本較低,而且采用技術手段均為當前最新技術,有較高的推廣價值。
本研究設計的板球系統平臺主要有機械部分、硬件部分(包括硬件和嵌入式軟件)和上位機三大部分組成[3-4]。板球本體利用鋁合金搭建主體機械結構,采用2個0°~180°伺服舵機為動力機構,電阻屏作為小球位置傳感器,以STM32F103單片機為控制核心,通過串口與上位機進行連接通訊,上位機設計采用python為編程語言,PyQt5為GUI框架進行搭建。下面對各個部分詳細展開闡述。
主體機械結構采用鋁合金為主要材質,CNC加工切割成設計好的形狀,舵機臂與平板之間通過鉸鏈結構相連,為了保證平板在2個舵機推動運動過程中維持圍繞中心運動的狀態,采用萬向節將平板的幾何中心與底座固定部分相連。同時底座固定部分設計了4個彈簧減震來減少在運動過程中振動對系統造成的干擾。本設計中舵機采用的是Futaba3010模擬舵機,非常關鍵的是,舵機的選擇非常重要,其性能的好壞直接影響整體系統的使用體驗,本研究方案所選用的舵機參數如表1。
在上述關鍵參數中,舵機的扭矩要與電阻屏質量小球質量等整體系統相匹配,以保證有足夠的動力輸出,舵機的響應速度應盡可能的快,一般情況下舵機的響應也與供電電壓所相關,需要機械和電子共同協調。

表1 Futaba3010舵機參數Tab.1 The parameters of Futaba3010 servo

圖2 板球系統機械結構圖Fig.2 Mechanical structure of Ball&Plate system
由于舵機本身已經構成一個閉環系統,省去了傳統伺服電機需額外加裝編碼器等工作,因此本方案中執行機構選用舵機極大地降低了系統的復雜度同時也降低了系統的成本。
本研究所設計的電路系統主要有單片機控制電路、電源電路、觸摸板電路、OLED顯示屏電路、按鍵電路,串口電路等,整體框架如圖3所示。
3.1.1 電源電路
電源電路為整個系統提供穩定可靠的電能,是整個系統最基本的組成部分[5],系統設計外接供電為直流12 V供電。舵機是系統中的大功率用電設備,結合舵機參數本文采用的是5 V舵機供電。單片機觸摸板顯示屏等其余用外設模塊供電電壓均為3.3 V。由于2種電壓的存在,為了兼顧效率和性能,采用開關穩壓和線性穩壓相結合的方案。12 V轉5 V通過開關DC-DC的方案實現,由于3.3 V采用的是線性穩壓,為了減小其功耗降低線性DC-DC的壓差[6],3.3 V輸入由開關穩壓所產生的5 V提供,電源部分電路圖見圖4。

圖3 板球系統硬件框架圖Fig.3 Hardware framework of Ball&Plate system

圖4 電源電路Fig.4 Power circuit

圖5 單片機主控電路Fig.5 MCU control circuit
3.1.2 主控電路
如圖5單片機引腳圖所示,主控電路選擇的芯片是STM32F103單片機,該款單片機采用ARM的Cortex-M3內核架構,兼備高性能、低成本、低功耗、存儲速度快等優勢[7]。結合本研究方案需求,該款單片機所具備的外設端口以及運行速度等均可達到要求,而且作為一款在民用領域有著廣泛地應用的單片機,供貨穩定,成本較低。
主控電路定義了單片機各個引腳的功能和設計制作了與單片機引腳相連的電路,包括了與單片機引腳直接相連的復位電路、時鐘電路、電源電路、下載電路等;外圍電路還包括了OLED顯示屏電路、電阻屏驅動電路、串口通信電路等[8]。
3.1.3 電阻屏電路
電阻屏作為本研究設計方案中的小球位置傳感器是整個系統中較為關鍵的部分,設計采用的是一個 0.304 8 m(12 in)的電阻觸摸屏,其電路圖如圖6所示,驅動電路采用2對PNP-NPN三極管來分時控制其通斷狀態利用單片機的ADC功能來讀取觸點的位置。
3.1.4 串口電路
串口電路如圖7所示,單片機串口與上位機USB之間的通信轉換由此電路來完成,同時該電路具備給單片機一鍵下載程序的功能,為系統后續通過上位機升級程序提供了可能。

圖6 電阻屏電路Fig.6 Resistance screen circuit

圖7 串口轉USB電路Fig.7 Serial to USB circuit
3.1.5 顯示屏電路
考慮到人機交互的便捷性,設計方案在硬件設計中加入了顯示屏按鍵等人機交互方式,下位機采用的是一塊2.88 cm的OLED屏幕,可以顯示基本運行狀態和參數等。該顯示屏支持多種協議,本次采用的I2C通信協議完成單片機對顯示屏的控制,其電路圖如圖8所示。

圖8 OLED顯示屏電路Fig.8 OLED driver circuit
板球系統的功能較為復雜,從運行模式上區分,分為離線模式和在線模式,離線模式即下位機自己根據內置算法進行控制[8-9],在線模式為與上位機連接,控制指令來自上位機,下位機負責執行。此外還有一些輔助模式,比如儀器校準模式。程序設計流程圖如圖9所示。

圖9 嵌入式軟件主程序流程圖Fig.9 Main program flow chart of embedded software
在嵌入式軟件設計還充分利用了定時器和中斷這2個單片機資源作為后端運行程序,定時器用來控制程序運行節奏,中斷用來接收外部輸入,比如按鍵串口接收數據,電阻屏小球讀取等。前后端結合的方式有效地提高了程序的運行效率[10-11]。
上位機作為一種非常便捷的調試手段和下位機監控手段在實際應用中是非常常用的,本文采用python為編程語言,PyQt5為GUI框架為板球系統下位機設計了相配套對應的上位機軟件,其框架如圖10所示。

圖10 板球系統上位機框架圖Fig.10 Host computer frame of Ball&Plate system
下位機與上位機可進行通信連接的關鍵是數據協議,即收發雙方互相可以正確解析所接收的消息,板球系統與上位機之間交互的信息比較單一,數據量適中,本次方案采用的是字符串數據協議,每一條字符串消息幀的字段與字段之間采用逗號分隔,數據協議格式如下:
〈起始符〉,〈消息類型〉,〈數據包〉,〈數據校驗〉
其中數據包所包含的內容根據消息類型來對應解析。在本研究中所設計的消息類型有:心跳包、下位機硬件消息、系統狀態消息、小球實時狀態消息、小球參數消息、控制指令消息以及設置指令消息等
本研究中上位機編程采用的是python語言,上位機作為一個人-機交互,機-機通信的一個終端,更多的是處理交互邏輯,其本身不具備運算密集型的特點,對編程語言運算性能要求并不高,python語言具備高效簡潔等特點,而且python是一種很好的“膠水語言”,可以將各種編程語言進行很容易地結合,因此選用python語言來做上位機既可滿足系統業務邏輯編程所需,也可提高上位機開發效率和降低后期維護成本,其“膠水語言”特性為二次開發留了很大的空間。
綜上,在上位機的程序設計充分利用python語言的高效性,遵循面向對象編程的思想將整體程序分為多個模塊逐個解耦設計對象,在上位機界面控件渲染顯示中利用了PyQt中信號和槽機制的手段,進一步降低程序的耦合度。本研究的上位機程序設計中分為了串口程序設計、人機交互程序設計、圖像繪制程序設計、數據記錄程序設計以及算法導入程序設計。
采用多線程的方式,提高了上位機的使用體驗,特別在圖像繪制和串口數據處理上[12]。在小球控制算法導入中,不管何種算法最終都是輸出在2個舵機上進而控制小球,利用這一特點結合python對象方法的重寫實現了算法導入功能,只要遵循相應的代碼構造方法即可實現不同控制算法的導入。
本次方案設計驗證上位機所運行的硬件環境為普通筆記本(Intel三代i5處理器),Windows10操作系統,4GB內存,由于上位機編程所采用的是有著跨平臺特性的python和pyqt,因此在其他操作系統的電腦上也是可以運行的,最終完成的上位機界面如圖11所示。

圖11 板球系統上位機界面圖Fig.11 Host computer interface of Ball&Plate system

圖12 板球系統聯調界面圖Fig.12 Interface diagram of combined debugging of Ball&Plate system
最后下位機與上位機進行聯調測試,進行了上位機監測板球系統運行狀態,參數調整,控制指令驗證,基本PID實時控制等測試[13],實驗過程如圖12所示,實驗結果表明,下位機滿足板球系統的功能,上位機可實時監測顯示板球系統的狀態,并可以完成一些人機交互,對現有的板球系統是一個很好替代,但本研究的不足之處是沒有將matlab中的simulink硬件在環仿真所聯系起來,在算法調試有一定的局限,但通過后續的開發,該部分功能可以實現。
由于本系統上位機開發采用的是python編程語言,采用的PyQt的GUI框架,兩者均有著非常好的跨平臺表現,即相同的程序可運行在windows、linux、mac等主流操作系統環境下,這將給相關科研工作帶來了極大的便利,可以非常容易的實現與其他項目進行銜接。
下面以固高GPB2001為對比對象,從5個方面進行對比分析。
(1) 在機械結構上:GPB2001與本方案大體相同,不同的是GPB2001平板為圓形盤面,本方案為矩形盤面。
(2) 在驅動機構方面:GPB2001采用伺服電機,需要安裝編碼器等,機械結構復雜,控制復雜。本次方案采用的舵機自身已是一個閉環系統。
(3) 在傳感器方面:GPB2001采用攝像頭采集小球位置,攝像頭造價高昂,程序復雜,且在運行過程中收光線干擾嚴重,本研究方案采用的電阻屏成本低廉,使用簡單可靠。
(4) 在數據協議方面:GPB2001出于商業考量數據協議為私有協議,在二次開發上有很大的局限性,本研究方案數據協議采用常用的消息幀結構協議,解碼簡單,方便二次開發接入其他系統。
(5) 在上位機軟件方面:GPB2001上位機軟件運行系統環境為windows xp,而且沒有linux以及mac等系統下的軟件。本研究方案上位機軟件由于編程語言和框架所決定有良好的跨平臺性能。
最后對本方案所設計整體系統物料成本進行統計分析,BOM表如表2所示,總價千元以內即可實現一個滿足大部分需求的板球系統平臺,由于本次設計驗證是按照制作一個樣機來采購物料的,部分零件如電容電阻螺絲螺母等有數量起售限制,實際成本要比BOM中所列出低,如果量產,成本還可以進一步降低。另外由于上位機等軟件所采用的語言為開源語言,所用的IDE等均免費,因此在軟件方面可以進一步控制成本。

表2 板球系統物料表Tab.2 Ball&Plate bill of materials
綜上分析,在吸取了同類產品方案優點的基礎上結合當前較前沿的技術使得本研究方案更加有技術優勢和創新性。而且在成本控制上有著更親民的價格,使其在自動控制實驗室或其他領域有著更好的推廣價值。
針對現有板球系統平臺技術迭代升級較慢的問題,自行研究設計了一整套的完整的板球系統平臺,并驗證了方案的可行性,通過實驗驗證本研究所提方案達到了課題的設計預期,證明了本課題的可行性和實用性,實現成本較低,而且提供了二次開發的接口,比傳統板球系統更加靈活,也為其他儀器開發設計提供了整套系統的解決思路,有較高的推廣價值和實用意義。