基于MSP430的莫爾斯報訓練裝置設計
莫爾斯電報自問世以來,已廣泛應用于通信領域之中。目前基于通用計算機平臺的報務終端已能夠實現莫爾斯報的自動收發,但傳統的人工拍發和收報方式以其便攜性和頑存性仍然無法被完全替代。針對以往報,務人員的莫爾斯報訓練裝置存在著依賴電腦使用不便,用鍵盤模擬手電鍵缺乏真實感,算法適應性差,識別率低等問題,采用以TI公司的MSP430低功耗16位單片機為核心,設計了一種莫爾斯報訓練裝置,具有單獨使用和連接電腦兩種方式,使用標準報務手電鍵和耳機,能夠完成發報和收報兩種訓練,提高了模擬訓練的真實性和訓練水平。
1 整體設計方案
??? 莫爾斯碼的原理是以長短信號及間隔的不同組合代表數字、字母等字符。訓練器以MSP430單片機為核心處理攜帶此信息的電鍵信號,如圖1所示。
??? 訓練器設計了兩種訓練方式:發報訓練和收報訓練。
l.1 發報訓練
??? 發報訓練是指報務人員根據指示的一組報文拍發,手電鍵敲擊的信號由訓練器采集、處理并識別出莫爾斯碼,在數碼管上顯示或通過TUSB3410芯片提供的USB接口傳至電腦上位機軟件。
??? 在發報訓練時,分別使用高、低電平表示間隔和點劃。這樣拍發出的電鍵信號實際上就是一組時長不等的高、低電平組合,如圖2所示。
??? 圖2中td,th,tm,tz分別表示點碼、劃碼、碼間隔、字間隔信號的時長。
??? 用單片機的I/O口對整形后的電鍵信號進行不間斷采樣,根據高、低電平持續時間,通過識別算法解析出碼符號。同時,在電鍵信號的控制下給出頻率為500 Hz的方波作為發報監聽音送往耳機。
1.2 收報訓練
??? 收報訓練是指訓練器在電腦的控制下發出莫爾斯碼對應的電鍵音,報務人員通過耳機或喇叭監聽并同時記錄報文。
??? 在收報訓練時,將TUSB3410傳來的報碼實時翻譯為點、劃和間隔碼,并在此信號的控制下發出500 Hz單音。
2 電鍵信號預處理電路
??? 電鍵信號的預處理電路如圖3所示。
??? 設計中,用一個上拉電阻將電鍵開關跳線J4的一腳拉至高電平,另一腳接地。這樣,在發報訓練中,當電鍵抬起時,輸出高電平,表示間隔信號;當電鍵被按下時,輸出低電平,表示點劃信號。為了消除高低電平交替過程中可能出現的毛刺,消除抖動,用CD4011芯片中的兩級與非門(U6A和U6B)對此信號進行整形處理,此時來自MSP430 P3.1腳的KEY_CTL控制信號為應高電平。在4腳輸出的信號連接到MSP430的P3.0腳,利用定時器A進行周期為1 ms的查詢,以獲取各信號的時長,再通過譯碼算法譯出字符。電鍵信號的拍發過程中還需要提供電鍵音反饋給操作者。同樣利用定時器在每次查詢的同時對P3.2腳取反,能夠得到500 Hz的方波,提供給CD4011的8腳。利用經過U6A一次取反后的電鍵信號(3腳)作為輸出使能,控制與非門U6C的開啟和關閉,保證只有在按下電鍵開關時才輸出電鍵音。電鍵音通過LM386芯片放大后,由耳機或喇叭輸出。
??? 收報訓練時,電鍵是一直抬起的,而KEY_CTL信號受MSP430的控制。當MSP430解析出點劃或間隔信號時,使KEY_CTL相應的拉低或拉高,從而使KEY_SND電鍵音同步輸出或斷開。
3 碼識別算法的設計
3.1 算法難點分析
??? 莫爾斯碼中,點碼時長td、劃碼時長th之比一般為1:3,碼間隔tm、字間隔tz、詞間隔tc之比通常為1:3:5。人工拍發的摩爾斯碼信號,由于報務人員熟練程度和使用習慣的不同,碼速和各信號實際時長都相差很大,比例也不可能非常標準,在拍發過程中還會不斷變化,因此,算法對信號時長閾值的選取要因人而異,在運行中自動調整適應。以往的算法要么采取固定時長閾值的方法,犧牲了適應性,如絕對比較法;要么采取固定修正因子的方法犧牲了初期的識別率,如岡瑟算法,難以取得識別速度、識別準確度和適應性之間的平衡。
3.2 判定閾值基準值的選取
??? 電鍵剛開始拍發時程序不知曉報務人員的情況,因此必須選取合適的判定閾值基準值,以保證此時識別的準確性。按照一般的拍發速度和規定,選擇點碼時長基準值td=50 ms,劃碼時長基準值th=3td=150 ms,點劃碼的判定閾值Tdh=(td+th)/2=2td=100 ms,碼間隔時長基準值tm=50 ms,字間隔時長基準值tz=3tm=150 ms,碼、字間隔的判定閾值Tmz=(tm+tz)/2=2tm=100 ms。
3.3 碼識別方法
??? 莫爾斯碼中的字符由一系列點、劃信號的組合惟一表示。算法中采用改進的查表法來進行莫爾斯碼的譯碼。設計一個定長表,將莫爾斯碼放入表項值中。由于莫爾斯碼中長碼、短碼的長度不一,為了方便比較為每項預留16 b,用10表示點碼,用11表示劃碼,剩余用OO補齊,如圖4所示。
??? 算法采取等距離判定法區分點碼與劃碼、碼間隔與字間隔,即取點、劃碼時長的平均值作為它們之間的判定閾值,取碼、字間隔時長的平均值作為其判定閾值。識別的完整流程如圖5所示。
??? 采樣電平翻轉時,記錄上一個狀態的持續時間t。對于碼信號,當t>Tdh時,表示解出劃碼,在碼值中存入11,反之則存入10;對于間隔信號,當t>Tmz時,代表解出字間隔,將碼值用00補足16 b后進行順序法查表,查出的位置值經過換算就能得到對應的莫爾斯碼符號。
3.4 判定閾值的修正方法
??? 為了實時跟蹤報務人員的擊鍵狀態,算法需要根據最新的輸入碼時長不斷對判定閾值做出修正,采用加權平均的方法可以實現判定閾值的平滑變化。最近一次判定為點碼的修正流程如圖6所示。其他時長的修正方法與此類似。
??? (1)判斷最近一次點碼時長是否符合篩選要求。因為碼文中總有一些出錯的或時長相差較大的,如果將這些時長也用來修正閾值會對其準確性產生較大的影響。t′d表示最近一次的點碼時長,t′d表示上一次的點碼時長,a為篩選因子。a取的越大則閾值起伏越大,此處取為O.5。滿足篩選要求的數據進入步驟(2),否則放棄本次修正。
??? (2)對點碼時長求加權平均。t′d表示修正后的點碼時長,β為修正因子。β越接近于1,對閾值的平滑作用越強,但跟蹤能力越差。開始階段為了迅速適應報務人員的習慣,取β為0.5,隨著拍發的進行,為了保證閾值的平穩變化,將β盧逐步減小到0.2。?
??? (3)根據最近一次點碼時長更新點劃碼判定閾值。其中t′d表示上次的劃碼時長。
??? (4)對點劃判定閾值做平滑修正。T"db表示點劃碼判定閾值的最新值,t′dh表示上一次的點劃碼判定閾值。
4 結 語
??? 采用上述設計的莫爾斯報裝置可在不接駁電腦的情況下使用,識別結果直接在LED上滾動顯示,也可連接電腦,在上位機軟件中進行成績評定,使用方便靈活。經過改進的算法識別速度快,錯碼率低,在算法跟蹤速度和識別準確度間取得了良好的平衡。該裝置經報務人員大規模使用,60~140碼/分條件下誤識別率小于10-5,效果良好。
評論
查看更多