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