李 真, 彭輝麗, 余善恩, 孫偉華, 陳張平(杭州電子科技大學 . 自動化學院; . 理學院, 杭州 310018)
運動控制實驗是高校的一門綜合性實驗課程,它把電機學、自動控制理論等多門課程融合在一起。在以往運動控制相關的實驗教學中,學生們往往被要求按照設計好的方法來實現某種功能,這既不利于學生發揮想象力與創造力,也不利于學生真正掌握實驗內容的精髓。針對這種情況,本課題設計了一種能讓學生充分發揮創造力的懸掛式定位實驗系統。該懸掛式定位實驗系統能控制被控物體在一定的區域內完成各種精確的運動,即通過兩個步進電動機控制一個質量不小于100g的物體在傾斜的木板上完成規定運動。通過這個實驗系統的教學,可以讓學生掌握步進電動機的控制方法、鞏固和加強C語言基礎以及發掘學生的創造力[1]。
整個系統由主控芯片、步進電動機及其驅動、觸摸屏、循跡傳感器等4部分組成。如圖1所示,當實驗操作者通過觸摸屏選擇運動模式并輸入坐標后,控制器便控制左右兩邊的步進電動機作出相應的動作,直到完成該運動。若是選擇了循跡運動模式,則控制器還會根據循跡傳感器反饋回來的信息來作出相應的命令。當完成每種運動時,會有相應的燈光提示[2-3]。

圖1 懸掛式定位實驗系統原理框圖
本實驗系統需要用到的硬件資源有單片機最小系統、TFTLCD模塊、步進電動機及其驅動器、循跡傳感器電路和電源。單片機最小系統用于對外設的控制和數據運算;LCD模塊提供人機交互的功能;步進電動機及其驅動器實現對物體的運動控制;循跡傳感器電路用于物體探測黑線;電源則為所有設備供電。下面對每個模塊的方案進行詳細地介紹[4]:
(1) 控制器的選擇。STM32單片機是意法半導體公司專為嵌入式應用所設計,基于ARM Cortex-M3內核的32位高性能單片機。其中的STM32F103系列則是屬于“增強型”系列,其時鐘頻率高達72MHz,是“基本型”STM32F101系列時鐘頻率的兩倍。本設計選用STM32F103的優勢體現在:價格實惠,其價格與市場上的8位機相當;它的性能自然也能夠滿足本設計的需求;在網上也有許多相關資料及應用案例,為使用者帶來了很大的方便[5-6]。
(2) 電動機方案的選擇。從設計要求出發,所選擇的電動機應該具備以下特點:可以準確控制電動機轉過的圈數,比如轉過1/4圈,1/2圈,1圈等;力矩不能太小,且轉速不能太快,否則在調試時會很不方便;可以工作在頻繁的換向、啟停條件下。
通過比較,本設計采用步進電動機,雖然步進電動機是開環控制,但通常情況下其精度非常高,能滿足伺服系統的精度要求。步進電動機的轉速與給定脈沖的頻率有關,而給定脈沖的數量則決定了步進電動機的停止位置。例如輸入脈沖頻率為1 kHz時,電動機轉速為n1,當輸入脈沖頻率為2 kHz時,電動機轉速就會增加到n2。再比如一個每轉需3 600脈沖的步進電動機,在沒有細分和失步的情況下,當給定900個脈沖,電動機就會精確地轉過1/4圈。簡而言之,輸入一個脈沖,電動機就會轉過一個步距角。不同電動機的步距角不一樣,通常有1.8°,0.9°等類型。
(3) 循跡傳感器。本設計采用反射式光電傳感器ST188尋跡。ST188的示意圖如圖2所示。傳感器上集成了紅外發射管和紅外接收管,其中C、E是接收管的引腳,A、K是發射管的引腳。當傳感器探測到黑線時輸出低電平,反之輸出高電平。在畫筆的四周按規律安裝若干個該傳感器,根據傳感器狀態就能判斷出黑線相對于畫筆的位置,從而做出相應的運動[7]。
本設計最終采用3個這樣的傳感器,以畫筆為中心,每個間隔120°均勻地分布在畫筆四周,示意圖如圖3所示。3個傳感器可以表示8種不同的位置,真值表見表1。為每種狀態編寫相應的控制程序,即可實現循跡運動。例如0,1,1這種狀態,說明黑線此時處于畫筆的正上方,那么就應該控制電動機使物體向上運動,以此類推。

圖2 ST188示意圖 圖3 傳感器安裝示意圖

表1 傳感器真值表
(4) 人機交互方案的設計。本設計采用的是可視化圖形界面+2.8寸電阻觸摸屏來完成人機交互。采用ucGUI技術制作圖形界面,效果圖如圖4、5所示。ucGUI是一種嵌入式應用中的圖形支持系統,它能夠為任意型號的LCD顯示器提供有效的圖形用戶接口,且這種接口與處理器和LCD控制器的型號無關,也就是說它是獨立的[8-9]。

圖4 主界面 圖5 畫圓運動界面
用ucGUI設計出上圖所示的界面后,再配合觸摸屏功能,就可以帶來非常便捷人性的操作。比如實驗員現在想實現畫圓運動,那么只需在主界面窗口點擊“Draw Circle”按鈕,再在彈出來的畫圓運動界面窗口的編輯框內輸入圓心坐標,最后點擊“START”按鈕,就可以觀察實驗現象了[10]。
(5) 電動機驅動器設計。最后介紹電動機驅動器TB6600模塊。TB6600是一款步進電動機驅動IC,它可以控制兩相步進電動機的正轉和反轉,并且有6種細分模式可供選擇(1,2,4,8,16,32細分)。這6種細分模式可以通過模塊上的3位撥碼開關來選擇。此模塊還能實現8檔的電流控制,這是用另外3位撥碼開關來選擇的。驅動器允許的最大輸出電流是5 A,最大輸入電壓為40 V。這個模塊與單片機的接法為共陽極接法或共陰極接法。共陽極接法是指將模塊的PUL+、DIR+和EN+都接高電平,而PUL-接單片機的脈沖輸出信號,DIR-單片機的方向控制引腳,EN-接單片機的使能引腳;共陰接法是指PUL+、DIR+和EN+都接地。兩種接法的示意圖如圖6、7所示[11]。

圖6 共陽極接法

圖7 共陰極接法
一般而言,控制器與外設進行通信需要3類總線:地址總線、數據總線和控制總線。單片機和TFTLCD之間的通信也是如此。本系統所使用的顯示屏與單片機通過16 bit并行口傳輸數據,用一個片選引腳來選中顯示屏,而控制總線共有5根,分別是LCD_WR、LCD_RD、RST、LCD_RS和LCD_BL。LCD_WR是顯示的寫信號;LCD_RD是讀信號;RST是復位信號;LCD_RS是命令/數據選擇引腳(為0時代表讀寫命令字,為1時代表讀寫數據);LCD_BL控制顯示屏的背光。如果要用到觸摸屏功能,則還需要用到另外5根信號線(見圖8中標號為T開頭的幾個腳)。利用這些信息就可以畫出LCD與單片機連接的電路圖(見圖8)。

圖8 TFTLCD原理圖
為了實現這一目的,需要對系統進行數學建模。由圖9可見,物體在任意位置時都與兩個定滑輪構成兩個直角三角形。設物體的坐標為(x,y),物體到左滑輪的繩長為a,到右滑輪的繩長為b,那么由圖9所示的兩個勾股關系可以列出:
a2=(x+15)2+(115-y)2
(1)
b2=(95-x)2+(115-y)2
(2)
當物體從原點出發,要求到達指定坐標時,相當于上式中的x、y已知,代入式中就可以求點目標點對應的a1、b1。而物體處于原點時的左右繩長a0、b0是固定且已知的,因此由a1-a0,b1-b0就可以得到左右兩邊電動機應該放出或者收回的繩長。再將繩長除以套在電動機軸上的繞線裝置的周長,便可計算出左右電動機需要轉過的圈數。這樣就實現了物體從原點到指定位置的運動[12]。

圖9 系統示意圖
這一問題的答案實際是上一個問題的逆運算。物體由原點出發向目標點運動的過程中,a、b的值是已知的,因此將a、b代入式(1)、(2)中即可解出:
眾所周知,當一段圓弧的弧長足夠小時,可以用一段線段來替代這段圓弧。同理,為了畫出軌跡光滑的圓,可以將這個圓劃分成無窮多等分,每一段圓弧都用一段線段來替代。實際上雖然不可能做到無窮等分,但只要等分數足夠大,就可以畫出足夠光滑的圓。在調試時,可以將直徑(50 cm)等分成30 000份,相當于將圓周細分成60 000份(不是均勻的)。那么物體每次運動橫坐標的變化量Δx=50/30 000。再根據每個象限的圓的標準方程,就可以得到下一次運動的縱坐標。
假設每次畫圓運動都是從圖10中三角形位置開始逆時針運動,那么由圓的標準方程(x-a)2+(y-b)2=R2可以得到4個象限中每次運行的縱坐標方程(其中a、b是圓心坐標)。
第4象限:
(3)
第1象限:
(4)
第2象限:
(5)
第3象限:
(6)
式中,n都是從0變化到15 000。這樣就得到了每次運動的坐標x和y。

圖10 畫圓運動示意
要建立類似圖4和圖5的窗口,必須要用到視窗管理器(The Window Manager,WM)。視窗管理器能幫助設計者方便地建立、修改、刪除、移動窗口或其他操作,這是因為WM封裝了一系列的相關函數。表2列出了所有的WM API函數。

表2 WM API函數列表
采用上表中的函數,就可以用ucGUI實現類似圖4和圖5的界面了。從圖4可以看出,主界面一共有4個按鈕控件和5個文本控件,可以將這些控件的信息全都封裝在一個結構體數組my1_aDialogCreate[]里,這些信息包括文本內容、文本字體、文本位置、窗口大小等。根據設計要求,這幾個按鈕控件必須支持點擊事件,即通過觸摸屏點擊按鈕時可以觸發事件從而實現某種功能(ucGUI定義了若干種事件,詳細內容請參考用戶手冊),因此在回調函數void my1_cbCallback()中必須要有這幾個按鈕按下后所對應消息的處理程序。因為每一個控件都有一個獨一無二的ID,所以可以用switch語句來判斷是哪個按鈕被按下,并且在相應的case里編寫處理程序[13]。
要實現設計要求中的各種任務,關鍵是設計出一種對步進電動機的控制算法。例如要控制物體向上作直線運動,那么左右兩個步進電動機應該同時收回相同的繩長。下面逐一分析實現各種運動程序[14]。
首先是定點運動。前文3.1小節已經分析了如何計算某一點坐標所對應的物體到左右滑輪的繩長a和b,因此這里只給出代碼實現:
a=sqart((x+15)·(x+15)+(115-y)·(115-y))
b=sqart((95-x)·(95-x)+(115-y)·(115-y))
這段程序計算出了繩長的絕對值,將a,b分別減去物體處于原點時的左右繩長a0、b0,就得到了兩邊的電動機該收放的繩長。如果相減的值是正數,代表電動機應放出繩子,如果相減的值是負數,則代表應收回繩子??梢杂靡粋€if語句來實現這個功能:
if((a-a0)〉0) dir_l=0; //相減為正,左電動機順時針轉放出繩子
else dir_l=1; //否則逆時針轉收回繩子
dir_l代表左邊電動機的方向控制引腳?,F在已經算出兩邊電動機要收放多少繩長,那么如何轉換成給定脈沖數呢?首先需要知道電動機轉一圈需要給多少個脈沖,本文使用的步進電動機步進角為1.8°,驅動器設定成32細分,轉一圈要給3 200個脈沖。本設計在電動機軸上還套了一個繞線裝置(一個柱狀物體),其周長為7.7 cm。因此繩長(length)與脈沖數(pulse)滿足下列關系:
pulse=length/7.7×3 200
有了脈沖數和旋轉方向,就可以控制步進電動機轉動了??梢跃帉懸粋€函數來實現這個功能,函數的參數應包括脈沖頻率、轉動方向、給定的脈沖數等。本設計編寫的函數原型如下:
void control(pinlv,u16 dir_l,u16 dir_r,u32 pulse_l,u32 pulse_r);
其中:pinlv表示脈沖的頻率;dir_l,dir_r分別代表左、右步進電動機的旋轉方向;pulse_l,pulse_r分別代表給左右電動機的脈沖數。
至于畫圓運動和循跡運動在前文已經詳細介紹過原理,對電動機的控制程序也和上面的類似,只要調用control()函數就能實現[15]。
在實現所有的設計要求后還需對整體功能進行測試和優化,測試過程如下:
(1) 測試能否設定目標位置。 這一功能比較容易實現,而且因為是用觸摸屏來輸入目標位置,所以基本不會出現問題。事實也證明了這一點,在上百次的調試過程中,只要觸碰準確,都能成功地選擇運動模式及輸入目標位置的坐標。
(2) 測試物體是否能在一定時間內到達任意設定的坐標。為了測試這一功能,對實驗系統進行了20次試驗,實現最復雜的路徑用時均在50 s以內,符合預期。
(3) 測試到達目標位置時偏差是否小于2 cm。由于物體處于原點時距離左右滑輪的繩長、繞線裝置的周長等數據都是手工測量,存在測量誤差,因此在一開始測試時發現偏差較大,遠不止2 cm。后來通過多次測量取平均值的方法,增加了數據的準確性。得到最終的偏差在2 cm以內。
(4) 測試物體是否能準確的在任意位置畫出直徑為50 cm的圓。為了保證在任意位置都能實現這個功能,在木板上不同坐標位置均勻地取了9個點作為圓心,觀察結果發現,物體在這些點都能畫出光滑且準確的圓。準確率是非常高的。
(5) 測試是否能夠準確沿黑線運動。測試方法是在木板上用黑膠帶隨機地貼出幾段黑線,看物體能否沿這些黑線運動。對此也試驗了10次,有1次因為曲線轉彎角度過大而脫離黑線,剩余9次都成功完成,所以成功率大致為90%。
綜上,本系統較好地完成了設計目標。圖11和12所示是整個系統的實物圖。

圖11 系統整體實物

圖12 硬件系統細節圖
本懸掛式定位實驗系統采用STM32單片機作為主控芯片實現各種數據運算以及對物體運動軌跡的控制;采用TB6600步進電動機驅動器模塊驅動兩個步進電動機,以實現對步進電動機的細分、啟停等控制;采用紅外光電傳感器ST188作為循跡傳感器來實現循跡運動;采用基于ucGUI制作的觸摸屏界面來實現人機交互。該實驗系統更加貼合實際的應用技術,讓學生在掌握步進電動機控制方法的同時,也可以通過程序設定不同的運動軌跡,鞏固和加強C語言等相關知識,發掘了學生的創造力。該實驗系統已廣泛應用于教學,反應良好。
參考文獻(References):
[1] 朱藝鋒, 鄭 征, 余發山,等. 專業課程“運動控制系統”的課堂教學方法探析[J]. 實驗室研究與探索, 2013,32(11):374-376.
[2] 武 林. 三維懸掛物體運動控制系統[J]. 浙江師范大學學報(自然科學版), 2007, 30(2):171-175.
[3] 吳秀清.微型計算機原理 [M].北京:中國科學技術大學出版社,2002:7.
[4] 劉 軍.例說STM32[M].北京:北京航空航天大學出版社,2011.4
[5] 朱向慶, 胡均萬, 陳宏華,等. 多功能單片機實驗系統的研制[J]. 實驗室研究與探索, 2012, 31(4):41-44.
[6] 余善恩, 李真, 陳張平,等. 基于校園一卡通的開放實驗室節能系統研究[J]. 實驗技術與管理, 2016, 33(12):263-265.
[7] 陳 杰.傳感器與檢測技術[M].北京:高等教育出版社,2002:2.
[8] 王永虹.STM32系列ARM Cortex-M3微控制器原理與實踐[M].北京:北京航空航天大學出版社,2008.
[9] 王蘭英. 基于STM32嵌入式系統的uCGUI移植與實現[J]. 四川理工學院學報(自科版), 2012, 25(1):56-58.
[10] 隆 玲,徐海賢,黃彬武.UCGUI在STM32F107上的移植[J].工業控制計算機,2015(8):133-134.
[11] 朱曉明, 李 欣, 張淑芝,等. 運動控制中電動機速度跟蹤曲線教學系統設計[J]. 實驗技術與管理, 2013(11):111-114.
[12] 史成城, 謝麗蓉, 張 丹. 運動控制系統實驗軟件開發平臺[J]. 實驗技術與管理, 2013, 30(1):119-121.
[13] 孫 佳, 許少倫, 姜建民. 運動控制系統創新實踐平臺的設計與實現[J]. 實驗室研究與探索, 2013, 32(2):77-80.
[14] 潘海鴻, 黃炳瓊, 秦鋼年,等. 具有重組功能模塊化的機電一體化綜合實驗平臺研制[J]. 實驗室研究與探索, 2008, 27(9):50-52.
[15] Ahaiwe J. Digital image processing:An overview of computational time requirement[J]. International Journal of Engineering Sciences & Research Technology, 2013, 2(8):2148-2152.