關(guān)鍵詞: 電羅經(jīng); 單片機(jī); 轉(zhuǎn)換器; NMEA0183
我國(guó)是造船大國(guó),造船的總噸位數(shù)名列世界前三位。然而,我國(guó)并不是造船強(qiáng)國(guó),許多高附加值的船舶電子設(shè)備依賴進(jìn)口。因此大力發(fā)展我國(guó)船舶電子技術(shù)已經(jīng)成為行業(yè)共識(shí)和國(guó)家的行業(yè)指導(dǎo)政策[1]。電羅經(jīng)是重要的導(dǎo)航設(shè)備,其輸出信號(hào)可用于航向指示、航向控制和VDR(船舶黑匣子)記錄等。電羅經(jīng)的輸出一般為模擬電氣信號(hào),用于驅(qū)動(dòng)交流同步電機(jī)或者步進(jìn)電機(jī)進(jìn)行指針式航向復(fù)示。數(shù)字化是船舶電子的發(fā)展方向。當(dāng)電羅經(jīng)用于數(shù)字控制、數(shù)字顯示和數(shù)據(jù)記錄時(shí)需要將其模擬電氣信號(hào)轉(zhuǎn)換為數(shù)字信號(hào),數(shù)字信號(hào)的格式一般采用船用通信標(biāo)準(zhǔn)NMEA0183。本文研制了用于電羅經(jīng)數(shù)字化的轉(zhuǎn)換器。
1 電羅經(jīng)轉(zhuǎn)換器的技術(shù)要求和總體設(shè)計(jì)
模擬電羅經(jīng)的輸出信號(hào)為具有一定傳向比的交流同步電機(jī)或者步進(jìn)電機(jī)驅(qū)動(dòng)信號(hào),通過(guò)驅(qū)動(dòng)外接帶有指針和齒輪的自整角機(jī)或者步進(jìn)電機(jī)來(lái)指示航向。電羅經(jīng)數(shù)字化轉(zhuǎn)換器就是要把電羅經(jīng)輸出的電機(jī)驅(qū)動(dòng)信號(hào)轉(zhuǎn)換為符合船用標(biāo)準(zhǔn)NMEA0183的數(shù)字通信信號(hào),其技術(shù)指標(biāo)主要有: (1)交流同步羅經(jīng)輸出的勵(lì)磁電壓為交流50~120 V,相電壓為交流20~90 V,頻率為50/60/400 Hz;步進(jìn)羅經(jīng)輸出的相電壓為24~100 V,連接方式有共正型和共負(fù)型。(2)傳向比可以為360、180、90、45、36之一。(3)輸出數(shù)字通信信號(hào)符合NMEA0183的HDT語(yǔ)句,波特率為4 800 b/s(低速)或者38 400 b/s(高速)。
根據(jù)電羅經(jīng)數(shù)字化轉(zhuǎn)換器的技術(shù)要求,可以設(shè)計(jì)其總體框圖如圖1所示。圖1由電源電路、RS422通信電路、解調(diào)電路、MCU模塊和人機(jī)界面電路組成。電源電路從電羅經(jīng)輸出電氣信號(hào)中獲取電能,轉(zhuǎn)換為+5 V和+3.3 V直流電源;解調(diào)電路把電羅經(jīng)信號(hào)轉(zhuǎn)換為T(mén)TL電平的脈沖編碼信號(hào),送入MCU中,MCU軟件計(jì)算出船舶的航向方位;MCU軟件把航向方位數(shù)據(jù)打包成NMEA0183格式后,通過(guò)連接MCU的UART接口的RS422電路輸出;人機(jī)界面電路包括4位8段數(shù)碼管、4個(gè)面板按鍵和1個(gè)外接電位器,用于設(shè)定工作參數(shù)和顯示航向數(shù)據(jù)。
2 轉(zhuǎn)換器的硬件設(shè)計(jì)
從圖1可以看出,其硬件設(shè)計(jì)的關(guān)鍵就是選擇好MCU和簡(jiǎn)化外圍電路。本設(shè)計(jì)選擇AVR單片機(jī)ATmega48為控制芯片,選擇SP490為RS422通信芯片;選擇2片CAT4016為數(shù)碼管驅(qū)動(dòng)芯片,每片驅(qū)動(dòng)2位,串連后驅(qū)動(dòng)4位數(shù)碼管。由于CAT4016采用了均流驅(qū)動(dòng)技術(shù),數(shù)碼管中每段驅(qū)動(dòng)電流相等,可以保證1英寸以上大型數(shù)碼管掛墻時(shí)亮度均勻。這樣可以把ATmega48的I/O和外設(shè)按表1所示分配。
從圖1和表1可以看出,RS422通信電路和人機(jī)界面電路比較成熟,可以分別參考文獻(xiàn)[3]和[4]。下面主要介紹解碼電路和電源電路。
2.1 轉(zhuǎn)換器的解調(diào)電路設(shè)計(jì)
轉(zhuǎn)換器的解調(diào)電路把一定傳向比的電羅經(jīng)高壓電氣信號(hào)轉(zhuǎn)換為T(mén)TL電平的編碼信號(hào),設(shè)計(jì)電路如圖2所示。圖中,S1、S2、S3為交流同步電機(jī)或者步進(jìn)電機(jī)驅(qū)動(dòng)信號(hào);Com為步進(jìn)電機(jī)的公共端;I1和I2為交流同步電機(jī)的勵(lì)磁信號(hào)。由于S1、S2和S3的轉(zhuǎn)換電路一樣,為了減小篇幅,圖2中只畫(huà)出了一組轉(zhuǎn)換電路。
圖2中,S1、S2和S3信號(hào)經(jīng)過(guò)π型RC濾波和限流后驅(qū)動(dòng)光耦,經(jīng)過(guò)光電隔離和施密特反相器后得到S1P、S2P、S3P、S1N、S2N和S3N共6個(gè)信號(hào),分別代表交流S1、S2和S3信號(hào)的正負(fù)半周的相位狀態(tài),這6個(gè)信號(hào)的組合就表示航向方位在原有基礎(chǔ)上的改變量,相當(dāng)于步進(jìn)電機(jī)在3相脈沖驅(qū)動(dòng)下的正轉(zhuǎn)或者反轉(zhuǎn)拍數(shù),單片機(jī)的解碼程序根據(jù)這6個(gè)信號(hào)的變化、傳向比和變比前的航向方位就可以計(jì)算出目前的航向方位。交流同步電機(jī)勵(lì)磁信號(hào)I1和I2經(jīng)過(guò)類(lèi)似變換后得到具有TTL電平的I信號(hào),單片機(jī)據(jù)此判斷外接電羅經(jīng)的類(lèi)型。圖2中的LED兼有工作指示和反向保護(hù)的作用。
2.2 轉(zhuǎn)換器的電源電路設(shè)計(jì)
從上述轉(zhuǎn)換器的工作原理和器件選擇可以看出,該轉(zhuǎn)換器的總功耗在3 W以內(nèi),因此可以從其輸入的電羅經(jīng)信號(hào)獲得電能,不需另外接電源,這將給轉(zhuǎn)換器的現(xiàn)場(chǎng)應(yīng)用帶來(lái)方便。綜合考慮交流同步電羅經(jīng)和步進(jìn)電羅經(jīng)的輸出信號(hào)范圍可知,整流后的電壓范圍約為直流22~170 V,這比一般的開(kāi)關(guān)電源的輸入電壓范圍要寬許多,需要特殊設(shè)計(jì)。
圖3是設(shè)計(jì)的轉(zhuǎn)換器的電源電路,該電路采用了第3代TinySwitch-Ш系列開(kāi)關(guān)電源專(zhuān)用芯片TNY280PN,并在整流后的直流電壓端設(shè)計(jì)了充電電路使該芯片在22 V的低輸入電壓時(shí)也能良好工作。該電路采用六相整流電路結(jié)構(gòu),兼容不同的交流同步羅經(jīng)、共正型和共負(fù)型的步進(jìn)羅經(jīng)信號(hào)輸入。整流后的直流脈動(dòng)信號(hào)經(jīng)過(guò)π型LC濾波后變?yōu)楸容^平穩(wěn)的直流電壓信號(hào),再經(jīng)過(guò)以TNY280PN為控制器的開(kāi)關(guān)電源,得到+5 V的系統(tǒng)工作電壓,該電壓經(jīng)過(guò)LDO穩(wěn)壓器SPX1117-3.3變?yōu)閷?zhuān)供ATmega48所用的+3.3 V電壓。該電路采用了由三極管Q1和Q2、穩(wěn)壓管VR2和電阻R4和R5組成的恒流充電電路,保證開(kāi)關(guān)電源在所要求的寬電壓輸入范圍內(nèi)能正常工作,輸出電流達(dá)600 mA以上。該電路的反饋通道采用了光耦PC817A進(jìn)行隔離和反饋信號(hào)傳輸,具有較強(qiáng)的抗干擾能力。
3 轉(zhuǎn)換器的軟件設(shè)計(jì)
從系統(tǒng)功能的角度看,該轉(zhuǎn)換器的功能可簡(jiǎn)單理解為:(1)解碼電羅經(jīng)信號(hào)得到航向數(shù)據(jù);(2)按規(guī)定格式顯示和發(fā)送航向數(shù)據(jù); (3)對(duì)上述功能的工作方式進(jìn)行用戶配置。因此,認(rèn)真分析該轉(zhuǎn)換器的數(shù)據(jù)流后,結(jié)合ATmega48內(nèi)部提供的資源,就可以編寫(xiě)出高質(zhì)量的程序。
3.1 轉(zhuǎn)換器的數(shù)據(jù)流分析
轉(zhuǎn)換器的數(shù)據(jù)流圖如圖4所示,在單片機(jī)的RAM中分配4個(gè)數(shù)據(jù)結(jié)構(gòu)變量,分別放置工作狀態(tài)、工作參數(shù)、實(shí)時(shí)時(shí)鐘和航向數(shù)據(jù)。工作參數(shù)還在單片機(jī)的EEPROM中備份,用于系統(tǒng)掉電重啟后自動(dòng)恢復(fù)上次設(shè)定的工作參數(shù)。工作狀態(tài)包括參數(shù)設(shè)定狀態(tài)和航向顯示狀態(tài),無(wú)論處于哪種狀態(tài),轉(zhuǎn)換器都按照現(xiàn)有工作參數(shù)不斷地獲得航向數(shù)據(jù)和發(fā)送航向數(shù)據(jù)。用戶通過(guò)按“設(shè)置”按鍵進(jìn)入?yún)?shù)設(shè)定狀態(tài),當(dāng)5 s無(wú)鍵按下之后,自動(dòng)退出參數(shù)設(shè)定狀態(tài),進(jìn)入航向顯示狀態(tài)。當(dāng)系統(tǒng)處于參數(shù)設(shè)定狀態(tài)時(shí),可設(shè)定的參數(shù)有每秒發(fā)送串行數(shù)據(jù)次數(shù)、串行通信波特率(4 800 b/s或38 400 b/s)、亮度、電羅經(jīng)類(lèi)型(交流同步羅經(jīng)、共正型步進(jìn)羅經(jīng)、共負(fù)型步進(jìn)羅經(jīng))、傳向比(360、180、90、45、36)。
解碼模塊把解調(diào)電路輸出的TTL電平信號(hào)解碼為航向的相對(duì)偏移量,與上次航向數(shù)據(jù)疊加后變?yōu)楸敬魏较驍?shù)據(jù),用戶可通過(guò)按鍵輸入初始航向數(shù)據(jù)。串行通信模塊按照用戶設(shè)定的時(shí)間間隔從航向?qū)崟r(shí)數(shù)據(jù)區(qū)中取出當(dāng)前航向數(shù)據(jù),打包成NMEA0183標(biāo)準(zhǔn)規(guī)定的格式后,從單片機(jī)的UART串口輸出。系統(tǒng)處于航向顯示狀態(tài)時(shí),通過(guò)按鍵“增加”和“減少”來(lái)改變數(shù)碼管顯示亮度,也可以通過(guò)電位器調(diào)節(jié)顯示亮度。電位器用于電羅經(jīng)轉(zhuǎn)換器掛墻時(shí)用延長(zhǎng)線來(lái)設(shè)定亮度,因此電位器亮度調(diào)節(jié)優(yōu)先。其他工作參數(shù)都需通過(guò)按鍵進(jìn)行修改。實(shí)時(shí)時(shí)鐘模塊通過(guò)MCU的計(jì)時(shí)器產(chǎn)生系統(tǒng)所需要的相對(duì)時(shí)鐘,單位為ms,采用無(wú)符號(hào)整數(shù)類(lèi)型,范圍為(0~65 535 ms),可以滿足系統(tǒng)程序模塊運(yùn)行時(shí)作為時(shí)間間隔定時(shí)之用。顯示模塊根據(jù)系統(tǒng)工作狀態(tài)顯示當(dāng)前航向數(shù)據(jù)或者正在修改的工作參數(shù),用戶通過(guò)操作“設(shè)置”、“增加”、“減少”和“確認(rèn)”按鍵來(lái)進(jìn)行修改。
3.2 轉(zhuǎn)換器的程序設(shè)計(jì)
圖4轉(zhuǎn)換器的數(shù)據(jù)流圖實(shí)際上也給出了轉(zhuǎn)換器模塊化的軟件體系結(jié)構(gòu),模塊之間通過(guò)內(nèi)存數(shù)據(jù)變量進(jìn)行交互,各程序模塊可以獨(dú)立進(jìn)行程序設(shè)計(jì),然后由主程序和單片機(jī)的中斷系統(tǒng)進(jìn)行調(diào)用。實(shí)時(shí)時(shí)鐘模塊、解碼模塊采用中斷方式實(shí)現(xiàn);鍵盤(pán)輸入模塊、電位器輸入模塊和顯示模塊由主程序通過(guò)定時(shí)掃描方式實(shí)現(xiàn);串行通信模塊采用在主程序中打包并啟動(dòng)發(fā)送,之后由其中斷服務(wù)程序完成剩余數(shù)據(jù)的發(fā)送。中斷程序的設(shè)計(jì)比較成熟,可以參考文獻(xiàn)[3]。程序主流程圖如圖5所示。
圖5的主程序上電啟動(dòng)后,首先進(jìn)行硬件初始化(包括時(shí)鐘中斷、I/O中斷和串口發(fā)送中斷的初始化),之后進(jìn)入航向顯示狀態(tài),并根據(jù)單片機(jī)ATmega48內(nèi)部的EEPROM中的工作參數(shù)的有效性,初始化系統(tǒng)工作參數(shù)為EEPROM中的參數(shù)值或者缺省參數(shù)值。至此完成單片機(jī)的初始化工作,進(jìn)入主循環(huán)。主程序中的時(shí)鐘值及航向數(shù)據(jù)在時(shí)鐘中斷程序和I/O中斷程序中更新。主程序通過(guò)檢測(cè)及響應(yīng)按鍵來(lái)進(jìn)入工作參數(shù)設(shè)定狀態(tài)和修改工作參數(shù);通過(guò)讀電位器ADC的值來(lái)設(shè)定亮度。當(dāng)轉(zhuǎn)換器安裝在船舶操作臺(tái)時(shí),不接電位器,電位器開(kāi)路,其ADC的值很大,據(jù)此判斷ADC值是否有效。由于讀電位器ADC的值在鍵盤(pán)處理之后,電位器設(shè)定的有效亮度值將覆蓋鍵盤(pán)設(shè)定的亮度值,實(shí)現(xiàn)了電位器設(shè)定值優(yōu)先。主程序根據(jù)系統(tǒng)處于設(shè)定工作參數(shù)狀態(tài)和航向顯示狀態(tài)分別顯示工作參數(shù)和航向數(shù)據(jù)。最后,主程序完成亮度調(diào)節(jié)、航向數(shù)據(jù)打包和啟動(dòng)串口發(fā)送數(shù)據(jù)、在EEPROM中保存工作參數(shù)等任務(wù)。發(fā)送航向數(shù)據(jù)的HDT語(yǔ)句為“$HEHDT,nnn.nn,T*hh<CR><CF>”(雙引號(hào)不在發(fā)送范圍),其中$表示句子開(kāi)始;HE和HDT分別表示發(fā)送數(shù)據(jù)者為電羅經(jīng)和發(fā)送數(shù)據(jù)為航向數(shù)據(jù);nnn.nn表示航向方位角,在0.0°~359.9°之間,前后用逗號(hào)隔開(kāi);T表示True;*表示后續(xù)2個(gè)數(shù)為校驗(yàn)和;hh表示校驗(yàn)和,為從$到*符號(hào)之間但不包括這2個(gè)字符本身的“異或”值的ASCII碼;<CR>和<CF>為回車(chē)和換行字符,表示句子的結(jié)束。HDT語(yǔ)句可以由航向數(shù)據(jù)通過(guò)數(shù)值與字符轉(zhuǎn)換、“異或”運(yùn)算和ASCII碼變換等操作來(lái)實(shí)現(xiàn)。
本文介紹了電羅經(jīng)數(shù)字化轉(zhuǎn)換器的設(shè)計(jì)思想和關(guān)鍵技術(shù),給出關(guān)鍵硬件電路和程序結(jié)構(gòu)。該電羅經(jīng)轉(zhuǎn)換器目前運(yùn)行良好,設(shè)計(jì)方案具有很高的性價(jià)比,達(dá)到了預(yù)期的效果,對(duì)磁羅經(jīng)等其他船舶電子設(shè)備的設(shè)計(jì)和基于單片機(jī)的嵌入式系統(tǒng)應(yīng)用具有一定的參考價(jià)值。
參考文獻(xiàn)
[1] 張世格.基于單神經(jīng)元和專(zhuān)家PID的船舶自動(dòng)舵控 制 策略[D]. 廣州:華南理工大學(xué),2008.
[2] ATmega48/V 88/V 168/V preliminary complete, datasheet. atmel.com/literature">http://www.atmel.com/literature
[3] 吳雙力,崔劍,王伯嶺.AVR-GCC與AVR單片機(jī)C語(yǔ)言開(kāi)發(fā)[M]. 北京:北京航空航天大學(xué)出版社,2004.
[4] Application note36:demonstration/evaluation tool for CAT4016 16-channel constant current LED driver. http://www.catsemi.com
[5] TNY274-280 tiny switch-Ⅲ Family, datasheet. www. powerint.com.
[6] NMEA-0183 protocol description, version 2.20. http://www.remember.ro, 2004-1.