楊森杰,盧玄興,楊朝火,劉月紅
(桂林理工大學(xué) 信息科學(xué)與工程學(xué)院,廣西桂林,541004)
如今視力防護越來越受到社會的關(guān)注,這不僅是關(guān)系到青少年的未來,也關(guān)系到國家的發(fā)展。眼球的模擬移動在視力養(yǎng)護及眼球知識演示等方面的設(shè)備中至關(guān)重要。本文中基于STM32 的模擬眼球移動裝置,用簡單的二自由度旋轉(zhuǎn)式云臺系統(tǒng),簡單模擬了眼球的移動,具有一定的現(xiàn)實意義和應(yīng)用價值。
本文中基于STM32 的模擬眼球移動裝置系統(tǒng)由單片機、矩陣鍵盤模塊、電機驅(qū)動模塊、OLED 屏幕塊以及紅外激光燈組成,總體結(jié)構(gòu)如圖1 所示。設(shè)計以STM32F103C8T6 為主控板,TB6600 為步進電機驅(qū)動模塊。
圖1 系統(tǒng)總體結(jié)構(gòu)圖
系統(tǒng)可通過上位機平臺進行控制,并實時采集數(shù)據(jù)由42 步進電機上的紅外線模塊發(fā)出紅外線照射到坐標紙上的坐標,從而實現(xiàn)對眼球移動做出簡單模擬。其中的電機驅(qū)動模塊主要接收用戶發(fā)出的指令發(fā)送脈沖控制電機轉(zhuǎn)動;OLED 屏幕模塊用于顯示單片機發(fā)送的光點坐標數(shù)據(jù);紅外激光讓使用者通過光點移動來感受眼球視線的移動。
具體設(shè)計內(nèi)容包括硬件和軟件兩個部分,現(xiàn)分別介紹如下。
系統(tǒng)硬件設(shè)計包括電源模塊、主控模塊、步進電機模塊和顯示模塊四個部分。系統(tǒng)硬件設(shè)計主要電路如圖2 所示。
圖2 系統(tǒng)主要電路
電源模塊提供整個系統(tǒng)的動力,為單片機和步進電機供電,具體電路如圖3 所示。
圖3 電源電路圖
因整個系統(tǒng)的控制需要單片機一直待機工作,且電機驅(qū)動器驅(qū)動需要至少12V 的電壓,為了避免一直連接電源導(dǎo)致使用不便,外接了一個直流可調(diào)壓電源KJS-1509。電源模塊輸出12V 給電機驅(qū)動器TB6600 穩(wěn)定供電,再通過DC-DC 降壓模塊轉(zhuǎn)為3.3V 給單片機和OLED 模塊供電。
單片機是系統(tǒng)的主控部分,我們的模擬眼球系統(tǒng)使用STM32F103C8T6 作為系統(tǒng)的主控芯片。該芯片是一款以ARM 公司旗下研發(fā)的CortexM3 為內(nèi)核的處理器。如圖3所示,處理器支持的外設(shè)豐富。且在內(nèi)部設(shè)計上,數(shù)據(jù)和指令各自走不同的線路,可確保CPU 的運行速度,達到最大化。此特性能讓本設(shè)計的二自由度旋轉(zhuǎn)式云臺系統(tǒng)的實時性需求得到保證。STM32F103C8T6 有37 個I/O 引腳,提供電機驅(qū)動器控制信號所需要的接口;其內(nèi)置I2C 總線接口能夠工作于多主模式或從模式,滿足OLED 屏幕坐標的需求。
主控單片機接線如圖4 所示,串口PA9 和PA10 分別接到OLED 顯示屏的SDA 和SCL 控制顯示部分的工作;PA1 口和PA2 口分別接電機驅(qū)動器的串口DIR 和PUL,用來控制電機的正反轉(zhuǎn)。
圖4 主控芯片和顯示電路
電機模塊是系統(tǒng)的執(zhí)行部件,本設(shè)計中具體包括步進電機及其驅(qū)動器。
2.3.1 電機的選擇
裝置中的執(zhí)行部件選擇了步進電機,它是一種將數(shù)字脈沖量轉(zhuǎn)換為相應(yīng)的角位移或線位移的特殊電機,具有反應(yīng)靈敏、精確步進、無累計誤差等優(yōu)點[1],是很多控制系統(tǒng)的核心組成部件,可以通過外部控制電路實現(xiàn)需求功能的驅(qū)動與控制,在許多領(lǐng)域得到了廣泛應(yīng)用[2]。故采用步進電機能很好地滿足本設(shè)計對電機的轉(zhuǎn)動高精度要求。
2.3.2 電機驅(qū)動器的選擇
整個平臺的控制實際上就是對步進電機的驅(qū)動??刂葡到y(tǒng)的精度和速度都取決于對步進電機的控制。因此要選擇合適的步進電機以及合理的控制方式。
在本設(shè)計中,選取能適合42 型兩相步進電機的TB6600步進電機驅(qū)動器。該驅(qū)動器采用H 橋雙極恒相流驅(qū)動,9~42VDC 供電,并有7 檔細分控制(1、2/A、2/B、4、8、16、32)和8檔電流控制(0.5A、1A、1.5A、2A、2.5A、2.8A、3.0A、3.5A)。最高可有4A 電流輸出。其信號端配有高速光電隔離,防止信號干擾,并支持共陰、共陽兩種信號輸入方式。此外,驅(qū)動器支持脫機保持功能,用戶可在通電狀態(tài)下調(diào)試;內(nèi)置溫度保護和過流保護,適應(yīng)各種復(fù)雜的工作環(huán)境,能較為精準地控制本裝置中的步進電機。TB6600 采用共陰極接法,ENA-、DIR-、PUL-都接地,ENA+接單片機高電平,DIR+接單片機PA1 口控制電機正反轉(zhuǎn),PUL+接單片機PA2 口控制脈沖。B-、B+、A-、A+分別接電機對應(yīng)的相位。具體電路如圖5 所示。
圖5 電機驅(qū)動模塊電路圖
顯示部分是系統(tǒng)人機交換的重要部分,本設(shè)計的顯示部件為OLED 液晶顯示屏。它是LCD 技術(shù)和LED 技術(shù)的升級,沿用LED 自發(fā)光技術(shù),并改變了LCD 的背光發(fā)光技術(shù)。OLED 顯示不僅具有高清晰度分辨率,而且有柔軟的拼接特征。不但能顯示數(shù)字,而且還能顯示字符、漢字等[3]。在本裝置中,能清楚地顯示當前視線(光點坐標)所在位置,更好地實現(xiàn)人機交互。
文中模擬眼球移動裝置使用的編程軟件是KeilμVision5,設(shè)計的主程序中包含了硬件設(shè)計中各個模塊初始化以及各功能借助算法函數(shù)的調(diào)用實現(xiàn)功能。軟件設(shè)計流程圖如圖6 所示。
圖6 軟件設(shè)計流程圖
圖7 逐點比較示意圖
圖8 坐標角度示意圖
程序設(shè)計了兩種模式,分別是畫線模式和畫圓模式。用戶通過上位機串口發(fā)送指令從而選擇模式:發(fā)送坐標,程序執(zhí)行畫線模式實現(xiàn)相應(yīng)畫線運動;發(fā)送圓心和半徑,程序執(zhí)行畫圓模式實現(xiàn)相應(yīng)圓周運動。此外程序還設(shè)計了復(fù)位功能,其功能是將系統(tǒng)復(fù)位,具體作用為將云臺還原到原點位置。OLED 屏幕顯示光點定位坐標。
本系統(tǒng)軟件設(shè)計中直線運動插補與圓弧運動插補采用逐點比較法。其過程是在輸出直線或圓弧的過程中,每走完一步就與理論的直線或圓弧進行比較,確定當前點是在線或弧上,還是在線或弧的一側(cè),然后再決定下一步的走向,這樣一步一步地逼近所畫直線或圓弧。軟件設(shè)計中的算法實現(xiàn),就是寫好一個定點函數(shù),根據(jù)所給坐標更新步進電機的當前對應(yīng)角度。然后在直線與圓弧插補里面不斷調(diào)用定點函數(shù)來進行插補。
若畫直線或弧線OA,起點為O(0,0),終點為A(xa,ya),設(shè)繪圖筆當前的位置為K(xk,yk)。點K 相對于OA 的位置有三種情況:點K 在OA 上方,點K 在OA 上以及點K 在OA 下方。為了判斷點K 與OA 的相對位置,引入偏差函數(shù)Fk:
當K 在OA 上時,F(xiàn)k=0;
K 在OA 上方時,F(xiàn)k>0;
k 在OA 下方時,F(xiàn)k<0;
因此,對第一象限內(nèi)的直線生成規(guī)定如下:
即偏上了向右走;偏下了向上走。設(shè)Δx=1,則當F ≥O 時,繪圖筆從當前位置沿+X 方向走一步,記作+Δx;當F<0 時,繪圖筆從當前位置沿+Y 方向走一步,記作+Δy;在繪圖筆到達新的位置時,應(yīng)計算出新位置的偏差,為判斷繪圖筆下一步走向做準備。
控制x 軸與y 軸的電機轉(zhuǎn)動時,需根據(jù)實際定位的坐標換算成當前相對初始狀態(tài)要轉(zhuǎn)動的角度和脈沖次數(shù),從而電機在脈沖驅(qū)動下按要求轉(zhuǎn)動。
步進電機每收到一個脈沖就步進一個角,方案采用32細分,進角為1.8/32,即0.05625°,則x 軸電機與y 軸電機脈沖個數(shù)=需要轉(zhuǎn)動的角度/0.05625。
本裝置的調(diào)試主要包括輸入輸出和控制部分。通過鍵盤輸入不同的坐標,即通過兩個按鍵來控制橫縱坐標的加減,通過復(fù)位鍵來切換選擇橫縱坐標,坐標會同時在串口助手顯示出修改后的坐標,讓步進電機按照不大于0.3mm 的誤差在光點照射的坐標紙上進行移動,當步進電機轉(zhuǎn)動結(jié)束后,單片機會在OLED 屏幕上顯示坐標。同時,核心板上的key1(加)、key2(減)按鍵控制坐標加減也能控制步進電機的轉(zhuǎn)動。顯示部分的調(diào)試結(jié)果如圖9 所示,調(diào)試數(shù)據(jù)如表1 所示。經(jīng)過三次相同條件下的測試并記錄數(shù)據(jù),通過表1 測試得到的數(shù)據(jù)可見,本裝置實際定點到的坐標和指定的目的坐標存在的誤差控制在0.3mm 內(nèi)。測試畫圓功能時,只需要在串口助手輸入“模式2”,單片機讀取到串口識別的指令后會自動切換成識別圓的坐標,圓心和初試半徑通過串口助手以輸入坐標的形式發(fā)送數(shù)據(jù),而key1(加)、key2(減)按鍵能控制目標圓的半徑大小,同樣經(jīng)過三次相同條件下的測試并記錄數(shù)據(jù),整合到如表2的數(shù)據(jù)所示,通過指定的圓與實際畫的圓的相比,圓心和半徑分別存在的誤差也在0.3mm 以內(nèi),滿足設(shè)計要求。
表1 輸入目的坐標得到對應(yīng)的實際坐標/cm
表2 想要畫的圓與相應(yīng)實際畫出的圓/cm
圖9 調(diào)試圖片
基于STM32 的模擬眼球移動裝置系統(tǒng)組裝后的樣機如圖10 所示。亞克力板通過銅固定云臺,使二軸步進電機能夠穩(wěn)定運行;OLED 屏幕用熱熔膠固定在舵機前方能夠?qū)崟r顯示光點坐標,便于觀察光點坐標移動的位置。
圖10 樣機實物圖
針對目前視力疾病相關(guān)的各種問題,作者將機械結(jié)構(gòu)設(shè)計和軟硬件設(shè)計結(jié)合起來,用 STM32 作為主控芯片,設(shè)計了一款適用性強且符合模擬實驗需求的二自由度旋轉(zhuǎn)式云臺系統(tǒng)。本設(shè)計的二維移動平臺控制器,既包括電機驅(qū)動功能,又含有實時顯示的功能。同時,OLED 屏幕的坐標顯示能準確表示光點模擬眼睛視線的移動。