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