a一级爱做片免费观看欧美,久久国产一区二区,日本一二三区免费,久草视频手机在线观看

新聞中心

EEPW首頁 > 測試測量 > 海氣通量自動測量系統設計*

海氣通量自動測量系統設計*

——
作者:國家海洋技術中心 門雅彬 徐俊臣 劉佳佳 中國海洋大學 劉金濤 時間:2007-02-04 來源:電子產品世界 收藏

摘要: 本文介紹了以為控制核心的船載海氣通量自動系統的設計,給出了數據采集設計,對的一些編程細節也做了詳盡的敘述。

關鍵詞: 海氣通量;  ;  ; 

在相互制約和作用的大氣海洋系統中,大氣對海洋的作用主要是動力的,稱為動量通量;海洋對大氣的作用主要是熱力的,稱熱通量。動量通量和熱通量通稱為海氣通量,它是氣候形成和變化的重要機制之一。

國家十五“863”計劃項目——“船載海氣通量自動系統”,要求使用直接協方差法來分三個層次測量海氣界面的動量通量,該方法是利用快速響應風傳感器測量風速值的脈動,由獲取的脈動資料的時間序列進行統計相關平均,獲得海氣界面動量通量。

測量原理及傳感器組成

理論上,直接協方差法測量海氣動量通量只需要快響應三維超聲風傳感器來測量出風速度矢量,并以此來計算風應力矢量。海氣動量通量τ定義為[1]:

由于是船載系統,要得到真實的三維風速值必須剔除船體運動的影響。這些影響來源于以下三個方面:(1)船體的前后顛簸、左右搖擺和航向引起的風傳感器即時傾斜;(2)船體的搖擺而帶動風傳感器相對于船體參考系角速度的變化;(3)船體相對于地面的移動速度。使用緊耦合系統消除上述因素引起的誤差,真實的海面風速Vtrue可以表示為[1]:

其中Vobs為三維風速計相對于船體測得的風速矢量,T為由測量坐標系到真實風速坐標系的變換矩陣;Ω為船體相對于自己重心旋轉、俯仰和搖擺的三維轉動角速度矢量;Vmot是風速計重心相對于海面的移動速度矢量,R是三維風速計相對于船體的位置矢量。

因此,系統所需的傳感器除了測量三維風速值的三個超聲風傳感器外,還需要測量船體運動姿態的姿態傳感器、測量船體運動方向的電子羅盤、測量船體位置和運動速度的GPS。其中,姿態傳感器與羅盤構成運動測量單元,每秒采集一次船體運動姿態,包括三維線加速度、三維角速度、橫滾角、俯仰角和航向。以上各傳感器的數據輸出形式均為RS-232。

海氣通量數據采集

數據采集部分是船載系統的核心部分,主要完成數據的采集、處理、傳輸和過程控制。該部分結合總體設計要求,根據當前嵌入式技術的發展,以模塊化、高可靠的設計思想來研制。

方案選擇

數據采集部分所要完成的主要功能是:單片機按固定時序和頻率采集各傳感器的輸出數據,經過運算和處理后,按照預定通信協議以RS-232方式實時地將數據以4~20Hz的頻率通過單片機的串行口傳送給PC機,上位PC機進行數據存儲和動量通量的計算。

由于海氣通量數據采集系統需要與三個超聲風傳感器、電子羅盤、姿態傳感器、GPS和PC機進行異步串行通信,而一般的單片機至多只有2個串口,因此至少需要擴充5個串口。擴充串口的方法很多,如采用軟件模擬法成本低、易于實現,但其采樣頻率低,軟件開銷大、難以保證數據的實時性、正確性,而且一般不能模擬過高的波特率。利用串行口擴展串行口,控制簡單,但在多通道模式下,所有子串口工作波特率只能設置成統一值,不適用于各從機波特率不一致、又要求同時工作的系統。并行口擴展串口方法的功能強大,能提供MODEM控制信號、通訊速度高,實時性好,可以滿足多個串口同時工作的要求。在本系統中,GPS和電子羅盤的輸出速率是1Hz,三維超聲風速計和姿態傳感器的數據輸出速率可達20Hz,具有數據通訊量大、輸出速率高、數據輸出格式多、數據爆發性強的特點,因此優選并行口擴展的方法。

模塊開關電源輸出5V和12V兩種電壓,12V電壓給測量傳感器供電,5V電源使用電源管理芯片變換成3.3V電源,給GPS模塊、單片機、外部存儲器和串口芯片供電。

系統硬件框圖如圖1所示。

圖1  系統框圖

主控單元設計

系統的主控部分采取了如下的設計方案:單片機采用了Silicon Laboratories公司的高性能微控制器作為數據采集和控制的核心。它具有與8051完全兼容的CIP-51微控制器內核,采用高速流水線結構(25 MIPS),大多數指令執行時間為1~2 時鐘周期;具有64 KB可在系統編程FLASH 和大容量內部SRAM,具有外部存儲器接口;最多可達22個中斷源,這對實時多任務系統的實現是很重要的。

雖然C8051F020內部有4KB的SRAM,但是對于整個系統數據流量來說還是不夠的,因此使用高位端口P5~P7外擴32KB的外部存儲器,采用地址/數據線非復用方式。它占用的I/O空間地址范圍是0x0000~0x7FFF。注意與其他8051不同的是C8051F020內部有兩個SFR(EMI0CF和EMI0TC)控制SRAM的讀寫時序,在對SRAM進行操作之前,應根據芯片數據手冊配置好這兩個寄存器,否則可能會出現讀寫不正常的現象。

C8051F020的UART0用于PC機通訊,UART1用于GPS通訊。

串行口擴展設計

如上所述,系統共需要與6個串行設備通信。而C8051F020只具有兩個串行UART,無法滿足系統的需求。設計共采用了兩片擴充8個串行口,其中5個串行口分別連接三個三維超聲風傳感器、電子羅盤和姿態傳感器,剩余3個串行口備用。

ST16C554是EXAR公司生產的帶有FIFO的通用四串口(UART)器件,具有集成度高、使用方便、兼容性強的優點。它主要具有兩項功能,一是把從外部設備接收進來的串行數據轉換成并行數據;二是把CPU的并行數據轉換成串行數據以利于發送。一片ST16C554可以提供4個標準UART端口。

ST16C554的功能特點如下:

*各帶有16個字節的發送/接收FIFO增強型UART??梢源蟠鬁p少對CPU的中斷次數,減少對UART的中斷服務時間。
*可以在24MHz的晶體或外部時鐘輸入下使用1.5Mbps發送和接收速率。在14.7464MHz晶體下,用戶最高可選擇921.6Kbps的數據傳輸速率。
*每個通道具有獨立的發送、接收、線路狀態和設置中斷功能。
*用戶可編程的波特率發生器和標準的調制解調器接口。
*四種可選擇的FIFO接收中斷觸發。

ST16C554與C8051F020的接口如圖2所示。D0~D7連接單片機的數據總線,A0~A1用來選擇ST16C554的內部寄存器地址,RD、WR分別接單片機的讀寫信號,總線模式引腳接VCC選擇Intel方式。C8051F020的A12~A14經74HC138譯碼后,輸出CS0~CS7所代表的地址范圍分別是:8000~8FFFH,9000~9FFFH,A000~AFFFH,B000~BFFFH,C000~CFFFH,D000~DFFFH,E000~EFFFH,F000~FFFFH。IT0~IT7是U5、U6各路UART的中斷輸出。可以發生中斷的條件有:接收錯誤、緩沖區數據有效、發送緩沖區空等。

圖2 ST16C554與C8051F020的接口

ST16C554中斷引腳輸出IT0~IT7分別接單片機的P1.0~P1.7,且連接到CD4002的兩個四輸入或非門(U15A和U15B)的輸入端,CD4002的兩個輸出分別連接至C8051F020的兩個外部中斷輸入端INT0和INT1,這樣CPU就可在相應的中斷服務程序中查詢P1.0~P1.7的狀態,以確定是哪個UART是中斷源。該部分設計利用兩個四輸入或非門連接至單片機的外部中斷,解決了單片機中斷資源有限的問題,降低了系統成本。ST16C554工作在FIFO模式,采用中斷方式收發數據并設置8字節的硬件收發送緩沖區,降低了CPU的開銷。

在本部分的設計中,還需要有電平轉換電路。這是由于C8051F020和經ST16C554擴充的UART均是TTL電平,而各傳感器的通訊方式是均是RS-232。因此,必須進行它們之間的電平轉換。傳統的方法使用MC1488與MC1489進行電平轉換,使用這兩種芯片時,除了系統的+5V電源外,還需要+12V和-12V電源,很不方便而且功耗比較大。為此這里選用5片MAX3232來完成這項工作,連線方式使用簡單三線方式即TXD、RXD、GND。MAX3232是單電源低功耗的電荷泵式RS-232電平轉換芯片,在電源電壓3.0~5.0V之間均能正常工作,它的工作電流僅為300mA。

值得一提的是,系統還設計了比較完善的串口保護電路。具體實現方法是在MAX3232的RS-232一側加保護芯片MAX367。MAX367是MAXIM公司的ESD保護芯片,它有兩個限制電壓輸入端V+和V-,當信號的電平超過V+或者低于V-時,可自動切斷該路的連接,待故障解除后,又可自動恢復連接。V+和V-分別是+15V和-15V。在傳感器信號的RS-232信號端還串接了50mA自恢復保險和雙向TVS管,有效地抑制了瞬變電壓和電流給系統造成的破壞。

ST16C554編程要點

ST16C554的控制比較復雜,使用前應充分了解各個寄存器的功能和設置要點。事實上控制它并不難,關鍵是準確把握各控制寄存器的含義,熟悉其控制流程。

ST16C554具有4個完全相同的端口,各組控制寄存器均是相互獨立的。系統上電后需先對ST 16C554 進行初始化,包括設置波特率、傳輸數據的幀格式、中斷允許位、對FIFO的控制等。對MCU來說,ST16C554相當于MCU的外部數據存儲器。它的寄存器中有一個寄存器(Scratchpad Register),在初始化之前,可以先讀寫這個寄存器,如果結果一致,證明單片機與ST16C554接口電路無誤。若不一致,則應檢查硬件接口電路或者芯片本身是否損壞。初始化代碼如下:
XBYTE[BASE_ADDR+LCR] = 0x80;       //向
 LCR寄存器寫0x80,使能波特率設置XBYTE[BASE_ADDR +DIVLSB] =BAUD_L  ;
 //寫波特率低字節
XBYTE[BASE_ADDR +DIVMSB] = BAUD_H;
 //寫波特率高字    XBYTE[BASE_ADDR +LCR] = 0x00;       //禁止波特率設置
XBYTE[BASE_ADDR +LCR] = lcr_byte;   
 //設置數據位,停止位,奇偶校驗位
XBYTE[BASE_ADDR +FCR]=0x87;      
 //使用并清除8字節FIFO,
XBYTE[BASE_ADDR +IER]=0x03;      
 //使能發送和接收中斷

編程時最好啟用FIFO功能,以減輕CPU中斷系統的負擔。FIFO的接收中斷字節最好設置在8 字節左右,不要設置成16字節。否則如果CPU在FIFO滿的情況下產生中斷,系統來不及響應,會產生接收數據溢出的危險。

ST16C554發生中斷時,CPU轉向外部中斷0(或1)服務程序。在中斷服務程序中,CPU應逐個輪詢P1.0~P1.3(或者P1.4~P1.7)的狀態,如果有任何一個引腳是高電平,則進入相應端口的中斷處理程序,處理完畢后,應繼續查詢有無其它端口發生中斷,以防止端口中斷的遺漏。以外部中斷0服務程序為例,示例代碼如下:
IntSource =P1&0x0f;  //讀取中斷源
while(IntSource!=0)  //ST16C554(U5)有中
   斷發生
{
     if(P1^0) //串口A有中斷產生
    IntUart1() ;   //判斷串口A中斷源子
   程序
     if(P1^1)         //串口B有中斷產生
        IntUart2();  //判斷串口B中斷源子
   程序
        if(P1^2)        /串口C有中斷產生
             IntUart3(); //判斷串口C中斷源
   子程序
           if(P1^3)       //串口D有中斷產生
            IntUart4();   //判斷串口D中斷源
   子程序
          IntSource = P1&0x0f; //繼續讀取中
        斷源,直至無串口中斷產生
    }

結語

“船載海氣通量自動測量系統”試制成功后,經過在西北太平洋近兩個月的海上實驗,取得了大量寶貴海氣通量實驗數據,實踐證明該數據采集系統的設計是可靠,穩定的,該項目已經于2005年11月通過863專家組的驗收。

參考文獻
1.J.B.EDSON,etc. Direct Covariance Flux Estimates from Mobile Platforms at Sea. Journal of Atmospheric and Oceanic Technology.Vol 15,1998.
2. Silicon Laboratories.C8051F020/1 Datasheets. 2001.
3. EXAR Corporation. ST16C554 Datasheets REV.3.10. 1994

加速度計相關文章:加速度計原理


評論


相關推薦

技術專區

關閉