賀鵬程
(海軍裝備部駐重慶地區(qū)軍事代表局,重慶 400042)
儀表顯示是模擬器中重要的一部分,常見的模擬儀表可分為力矩自整角機(jī)式儀表、伺服系統(tǒng)式儀表、步進(jìn)電機(jī)式儀表、電子式儀表等。其中由于步進(jìn)電動機(jī)工作時的步數(shù)或轉(zhuǎn)速不受電壓波動和負(fù)載變化的影響(在允許負(fù)載范圍內(nèi)),也不受環(huán)境條件(溫度,壓力、沖擊和振動等)變化的影響,只與控制脈沖同步;同時,它又能按照儀表控制的要求,快速起動、停止、反轉(zhuǎn)及可在較廣的范圍內(nèi)通過改變脈沖頻率來調(diào)節(jié)轉(zhuǎn)速。因此,步進(jìn)電動機(jī)[1]在飛行模擬器中得到了廣泛的應(yīng)用。
以RCM5700[2]為控制核心且具有以太網(wǎng)[3]傳輸功能的儀表是一種新穎的自動化儀表。與傳統(tǒng)的微控制器相比較,RCM5700在功耗、處理速度以及性價比方面都具有更大優(yōu)勢,大大提高了儀器的性能;同時具備快速以太網(wǎng)開發(fā)模塊,可以利用以太網(wǎng)開放性好、通信速率高等特點來克服以往數(shù)據(jù)傳輸接口繁瑣、統(tǒng)一性差的缺點,十分適合模擬器的環(huán)境。
系統(tǒng)工作原理及組成如圖1所示。首先系統(tǒng)打開電源后,儀表上電后根據(jù)MCU的A/D采樣數(shù)據(jù)自動清零,即指示到表盤刻度的零點,然后嘗試網(wǎng)絡(luò)連接,在網(wǎng)絡(luò)通信正常以后上位機(jī)通過網(wǎng)絡(luò)向儀表發(fā)送顯示數(shù)據(jù),儀表進(jìn)行指示。
圖1 系統(tǒng)結(jié)構(gòu)圖Fig.1 Overall block diagram of instrument system
RCM5700是由Digi公司推出的一種針對以太網(wǎng)應(yīng)用的高性能微處理器模塊,其特點有尺寸??;核心處理器為工作頻率可達(dá)50.0 MHz Rabbit5000;多達(dá)35條通用輸入/輸出線,每條最多可被配置為4種其他功能;具有128 kB的靜態(tài)隨機(jī)內(nèi)存和1 MB的內(nèi)存;外部輸入/輸出總線可作為8條數(shù)據(jù)線,8條地址線(與并行輸入/輸出線共享)及輸入/輸出讀/寫進(jìn)行配置;具有備用電池實時時鐘和看門狗監(jiān)控程序。
RCM5700已配有閃存、雙時鐘(主振蕩器和實時時鐘)以及一個復(fù)位和管理Rabbit5000所必需的電路,因此只需要對RCM5700的I/O端口進(jìn)行分配即可。
儀表中的步進(jìn)電機(jī)選用北京斯達(dá)微步控制技術(shù)有限公司的20H23H-0204B型兩相混合式步進(jìn)電機(jī)??紤]到步進(jìn)電機(jī)低速轉(zhuǎn)動時存在振動和噪聲大的固有缺點,系統(tǒng)采用了帶有細(xì)分功能的驅(qū)動器A3979作為步進(jìn)電機(jī)驅(qū)動芯片。
A3979[4]可用于兩相電機(jī)整步、半步、1/4步和1/16步模式驅(qū)動,輸出驅(qū)動電壓可達(dá)35 V、電流達(dá)2.5 A,內(nèi)置的電流調(diào)節(jié)器能夠細(xì)分和平滑電流變化,可以有效降低電機(jī)噪聲,增強電機(jī)步進(jìn)的準(zhǔn)確性;同時具有寬滯回供電模式和欠壓鎖定(UVLO)、交叉電流保護(hù)和過熱保護(hù)等功能。A3979最大的特點是具有衰減模式(decay mode):能夠按照片內(nèi)DAC輸出的不同,自動進(jìn)行衰減模式的選擇,通過延緩電機(jī)的驅(qū)動電動勢變化來減少電流波形的失真,以此提高步進(jìn)電機(jī)轉(zhuǎn)動的精度。
為了有效減弱步進(jìn)電機(jī)的低頻振動,同時提高電機(jī)運轉(zhuǎn)精度,A3979的驅(qū)動模式采用1/16步模式,故將A3979的引腳MS1和MS2接為高電平。其電路原理如圖2所示。
圖2 電機(jī)驅(qū)動電路原理圖Fig.2 Schematic of motor drive
考慮到A3979對輸入信號的電壓和電流均有要求,因此需要設(shè)計MCU與驅(qū)動器的接口電路。該接口電路采用ADUM1200作為核心芯片。
ADUM1200是一種基于磁隔離技術(shù)的雙通道數(shù)字隔離器,不需要外接限流電阻;同時磁耦合的輸入輸出引腳內(nèi)部含有施密特整形濾波電路,能夠與ARM、DSP等高速設(shè)備直接相連,且不需要驅(qū)動元件。在電路中,ADUM1200將MCU的輸出信號(電機(jī)方向信號和脈沖信號)從3.3 V高電平轉(zhuǎn)換為驅(qū)動器要求的5 V,同時增強其驅(qū)動能力。
在步進(jìn)電機(jī)儀表中,實現(xiàn)儀表數(shù)據(jù)指示的基礎(chǔ)是參考零點,即表盤刻度為0的位置。由于所有轉(zhuǎn)角都是相對于該零點的,因此步進(jìn)電機(jī)在轉(zhuǎn)動之前必須進(jìn)行零點標(biāo)定。零點標(biāo)定的方法主要有專用芯片法和傳感器法兩種。
1)專用芯片法
這種歸零方法需要專用的電機(jī)驅(qū)動芯片支持,驅(qū)動芯片具有步進(jìn)電機(jī)停轉(zhuǎn)檢測器SSD(stepper stall detector),如飛思卡爾的MC33991、MC9S12HZ等。通過在零點位置安裝停擋板,步進(jìn)電機(jī)在歸零的過程中與停擋板發(fā)生碰撞,SSD可以立即檢測到電機(jī)的停轉(zhuǎn),從而實現(xiàn)了歸零的目的[5]。
這種方法穩(wěn)定可靠,但需要專用芯片支持,對電機(jī)的整體驅(qū)動時序也有一定的要求,通用性較差。
2)傳感器法
傳感器法是在零點處安裝位置檢測傳感器,如霍爾開關(guān)、零位光柵等,當(dāng)步進(jìn)電機(jī)回到零點位置的時候,傳感器給出檢測信號,經(jīng)過MCU判斷,使電機(jī)停轉(zhuǎn),到達(dá)零點位置。
這種歸零方法較為可靠,但電路設(shè)計較為復(fù)雜,安裝的工藝也有相應(yīng)的要求,即傳感器的安裝和指針零點的位置需要較為固定。
考慮到專用芯片法比較昂貴的價格,并且不利于電機(jī)的控制,系統(tǒng)使用了傳感器法,設(shè)計采用傳感器法,通過在零點處安裝零位光柵作為檢測傳感器,當(dāng)步進(jìn)電機(jī)回到零位時,傳感器給出檢測信號,經(jīng)過放大器后,通過MCU的A/D采樣判斷轉(zhuǎn)盤是否旋轉(zhuǎn)到缺口位置,再根據(jù)表盤零點位置與缺口位置的固定角度,令電機(jī)指針停在零點位置。通過儀表實際檢測,該方法歸零可靠,精確度較高。
光電耦合器OPTOISO1由發(fā)光二極管和光敏三極管組成。儀表電機(jī)的轉(zhuǎn)軸安裝了帶有缺口銅轉(zhuǎn)盤,可以對發(fā)光二極管發(fā)射的光進(jìn)行反射,當(dāng)缺口對準(zhǔn)OPTOISO1時,由于缺口反射光線很少,所以光敏器件的電氣特性會有很大變化。通過MCU的A/D采樣通道得到三極管集電極電壓,判斷轉(zhuǎn)盤缺口位置是否到達(dá)正對OPTOISO1的位置。如果到達(dá)了這個位置,再根據(jù)刻度盤零點與OPTOISO1之間固定的角度差,調(diào)整指針回到刻度零點。
清零電路原理如圖3所示。
圖3 清零電路原理圖Fig.3 Schematic of return-zero
儀表系統(tǒng)需要完成的功能如圖4所示。
圖4 軟件功能框圖Fig.4 Block diagram of software
初始化的對象包括MCU、看門狗和TCP/IP協(xié)議棧和電機(jī)控制電路等。MCU需要設(shè)置中斷類型、中斷優(yōu)先級??撮T狗需要設(shè)置看門狗定時溢出時間和數(shù)據(jù)保護(hù)。電機(jī)驅(qū)動電路需要設(shè)置電機(jī)驅(qū)動方向和電機(jī)起始速度。在完成初始化后,MCU進(jìn)入工作狀態(tài),等待接收來自數(shù)據(jù)采集計算機(jī)的控制指令,以調(diào)整電機(jī)轉(zhuǎn)動,進(jìn)行儀表指示。
為了保持系統(tǒng)運行的穩(wěn)定性,設(shè)置了看門狗監(jiān)視程序。Dynamic C[6]提供了方便的軟件看門狗函數(shù),說明如下:
wd=VdGetFreeWd(count)//對一個空閑的虛擬看門狗進(jìn)行初始化
VdHitWd(wd)//對看門狗計數(shù)器復(fù)位
VdReleaseWd(wd)//釋放一個虛擬看門狗
其中count的取值范圍為0~255,相對應(yīng)的時間為0~16 s。設(shè)計將看門狗的定時器溢出時間設(shè)定為2 s。因此,程序必須在此期間內(nèi)觸發(fā)看門狗,將其清零,否則系統(tǒng)將復(fù)位。
根據(jù)所選步進(jìn)電機(jī)的參數(shù),首先需要設(shè)定轉(zhuǎn)動角度與轉(zhuǎn)動步數(shù)的關(guān)系。設(shè)計所用的電機(jī)為二相步進(jìn)電機(jī),步距角0.9°/1.8°。為提高電機(jī)定位精度,采用1/16步運行模式,即電機(jī)采用二相64拍工作方式,步距角為1.8°/16??傻贸鲭姍C(jī)轉(zhuǎn)動一圈,需要360×16/1.8=3 200個脈沖。但是,儀表指針的定位還需要根據(jù)表盤刻度分布,進(jìn)行步進(jìn)值與刻度值的轉(zhuǎn)換。
失步和過沖現(xiàn)象分別出現(xiàn)在步進(jìn)電機(jī)啟動和停止的時候。一般情況下,電機(jī)的極限啟動頻率比較低,而儀表要求的運行速度比較高。如果電機(jī)以要求的運行速度直接啟動,因而該速度超過極限啟動頻率而不能正常啟動,輕則可能失步,重則根本不能啟動,產(chǎn)生堵轉(zhuǎn)。電機(jī)運行起來以后,如果達(dá)到終點時立即停止發(fā)送脈沖串以令其立即停止,則由于系統(tǒng)慣性作用,會使電機(jī)轉(zhuǎn)子轉(zhuǎn)到接近終點平衡位置的下一個平衡位置,并在該位置停下,產(chǎn)生過沖現(xiàn)象。因此在步進(jìn)電機(jī)啟動或停止時就需要進(jìn)行加、減速控制從而精確控制電機(jī)運轉(zhuǎn)。設(shè)計時采用恒加速度算法,其原理如圖5所示。
圖5 步進(jìn)電機(jī)加減速時脈沖頻率變化圖Fig.5 Frequency chart of stepper motor acceleration and deceleration
程序采用定時器中斷方式控制電機(jī)變速即通過不斷改變定時器裝載值的大小來改變脈沖頻率。定時器的溢出頻率應(yīng)為2倍的控制脈沖頻率。
根據(jù)儀表清零電路的設(shè)計,儀表系統(tǒng)選用MCU中的A/D轉(zhuǎn)換模塊,進(jìn)行轉(zhuǎn)盤位置的判斷,從而實現(xiàn)儀表清零。
儀表清零的處理流程如圖6所示。
圖6 儀表清零流程圖Fig.6 Flow chart of instrument clear
由于A/D采樣存在一定的誤差,設(shè)計采用平均值法進(jìn)行采樣,即每次電機(jī)位置采樣時,循環(huán)A/D采樣10次取平均值。
儀表分系統(tǒng)采用μC/OS-Ⅱ多任務(wù)實時內(nèi)核,在程序?qū)崿F(xiàn)上同樣采取模塊化的思想,每個儀表的程序流程、模塊劃分和任務(wù)劃分都是一樣的,不同之處在于控制步進(jìn)電機(jī)的個數(shù)有多有少,但控制方法是一樣的。儀表分系統(tǒng)的程序模塊劃分如圖7所示。
每個任務(wù)的主要功能及流程說明如下:
1)主任務(wù)線程Main_Task
圖7 系統(tǒng)程序模塊Fig.7 System software modules
主任務(wù)線程為μC/OS-Ⅱ運行的主任務(wù),負(fù)責(zé)建立UDP通信任務(wù)線程和電機(jī)控制任務(wù)線程,主要完成儀表的清零、創(chuàng)建子任務(wù)、初始化硬件層、ARP初始化和UDP初始化。其中儀表的清零采用AD采樣來判斷電機(jī)是否轉(zhuǎn)動到OPTOISO1的位置,然后再轉(zhuǎn)動固定的步進(jìn)值使得指針指向刻度盤的零位置。
2)UDP通信任務(wù)UDP_Task
該子任務(wù)負(fù)責(zé)完成UDP數(shù)據(jù)包的接收、處理、提取網(wǎng)絡(luò)數(shù)據(jù),并進(jìn)行數(shù)據(jù)格式的判斷和轉(zhuǎn)換。首先該模塊根據(jù)RecUdpQFlag判斷消息隊列,如果接收到UDP數(shù)據(jù),對數(shù)據(jù)進(jìn)行提取和轉(zhuǎn)換。
3)電機(jī)控制任務(wù)Steel_Task
該任務(wù)主要完成步進(jìn)電機(jī)的驅(qū)動控制。根據(jù)所選步進(jìn)電機(jī)的參數(shù)和表盤刻度分布,設(shè)定轉(zhuǎn)動角度與轉(zhuǎn)動步數(shù)的關(guān)系。根據(jù)接收到的網(wǎng)絡(luò)數(shù)據(jù)以及當(dāng)前的指示值,計算出步進(jìn)電機(jī)需要轉(zhuǎn)動的步數(shù),然后由電機(jī)驅(qū)動模塊控制電機(jī)轉(zhuǎn)動到指示值。該任務(wù)的控制流程如圖8所示。
圖8 Steel_Task任務(wù)流程圖Fig.8 Flow chart of Steel_Task
對于真實儀表存在指針擾動、抖動的現(xiàn)象,在儀表控制時,設(shè)計采用上位機(jī)發(fā)送抖動數(shù)據(jù)來實現(xiàn)。
以RCM5700作為儀表控制核心構(gòu)建的儀表平臺,簡化了硬件開發(fā)和開發(fā)環(huán)境,優(yōu)化了軟件編程。采取廣泛應(yīng)用的以太網(wǎng)作為數(shù)據(jù)傳輸網(wǎng)絡(luò),簡化了數(shù)據(jù)傳輸接口。通過上位機(jī)發(fā)送UDP數(shù)據(jù)測試,儀表運行良好,指示精確。
同時,設(shè)計存在一定的不足。考慮到儀表中電機(jī)負(fù)載較輕,雖然步進(jìn)電機(jī)為開環(huán)控制,但指示仍然較為準(zhǔn)確;對于某些負(fù)載較重并且對電機(jī)轉(zhuǎn)動準(zhǔn)確度要求高的系統(tǒng),可以引入光電編碼器等組成電機(jī)的閉環(huán)控制系統(tǒng),以保證電機(jī)步進(jìn)的精確度。
[1]花同.步進(jìn)電機(jī)控制系統(tǒng)設(shè)計[J].電子設(shè)計工程,2011(15):13-15.HUA Tong.Design of stepping motor control system[J].Electronic Design Engineering,2011(15):13-15.
[2]Digi International Inc.MiniCore RCM5700用戶手冊[EB/OL].(2008-12-01)[2010-04-01].http://www.rabbit.com/documentation/docs/manuals/RCM5700/RCM5700UM-SCH.pdf.
[3]申曉燕,胡炳樑.基于FPGA的以太網(wǎng)光譜數(shù)據(jù)傳輸系統(tǒng)[J].電子設(shè)計工程,2011(15):163-166.SHEN Xiao-yan,HU Bing-liang.The spectral data transmission system Ethernet based on FPGA [J].Electronic Design Engineering,2011(15):163-166.
[4]Allegro Microsystems Inc.A3979 Microsoft DMOS Driver with Translator[EB/OL].(2009-11-15)[2010-10-12].http://pdf.qooic.com/A39/A3979.pdf.
[5]朱維杰.儀表用小型步進(jìn)電機(jī)零點標(biāo)定方法 [J].電機(jī)技術(shù),2009(4):33-40.ZHUWei-jie.Zeropositionidentificationmethodsforinstrument stepper motor[J].Electrical Machinery Technology,2009(4):38-40.
[6]Digi International Inc.Dynamic C User Manual[EB/OL].(2005-11-18)[2010-09-10].http://www.physics.utoronto.ca/~astummer/pub/mirror/Docs/Engineering/Rabbit/Dynamic%20C%20Users%20Manual.pdf.