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