簡析基于單片機的微波輻射計數控單元設計與實現
來源:龍人計算機研究所 作者:站長 時間:2009-10-19 16:50:56
微波輻射計在探測大氣、海洋、植被和土壤等方面有廣泛應用,它是用微波進行遙感,從而對地物進行探測的微波接收機,而數據處理與控制單元作為微波輻射計的重要組成部分,承擔了所有的驅動及控制功能,對時序及精度要求十分嚴格。由于系統(tǒng)對可靠性要求較高,故采用單片機作為220 GHz微波輻射計數控單元的核心,通過精確的時序控制,實現了數據采集、天線控制、狀態(tài)提取、串口通信等功能。同時,該數控單元具有功耗低,采樣精度高,接口簡便等特點。
1 系統(tǒng)結構
微波輻射計結構框圖如圖1所示,由檢波器輸出的模擬信號通過數控單元實現數據采集及傳輸、顯示與數據處理等功能,并對系統(tǒng)時序、上下電等進行控制,在輻射計的設計中處于重要位置。
1.1 數控單元硬件結構
系統(tǒng)由單片機、高速A/D轉換器、程序存儲器ROM、高速靜態(tài)RAM、讀寫控制電路、通信電路等部分組成,如圖2所示。通過鎖存器實現地址總線和數據總線的復用,同時,RAM的讀寫由讀寫控制電路來實現。
數控單元采用Atmel公司的AT89C51單片機作為控制器,具有4 KB閃存ROM,128 B RAM,支持電擦除1 000次,選擇工作頻率為11.059 6 MHz。同時采用AT28C256擴展程序存儲器ROM為256 KB,IDT71256擴展數據存儲器RAM為256 KB,通過鎖存器54HC573進行分時復用。
數據采集部分采用AD公司的16位并行模數轉換器AD976A,采樣速率可達200 KSPS。該高速A/D采用電荷重分布技術進行逐次逼近型模/數轉換,因而不必外加采樣保持器。電壓輸入范圍為-10~+10V,分辨率高,可做到16位不失碼,滿足微波輻射計數控精度要求。
AT89C51串行口輸出為TTL電平。為使其與PC機標準RS 232串口通信,系統(tǒng)選用MAX232電平轉換芯片。
1.2 硬件設計與實現
1.2.1 數據采集
單片機初始化完畢后,通過片選信號選中A/D轉換器,把RAM的控制權交給采集電路。AD976A進行數據采集時,置CS引腳固定為低電平,則轉換時序由 R/C信號的下降沿控制,信號脈沖寬度至少為50 ns。當R/C變?yōu)榈碗娖綍r,BUSY信號也變?yōu)榈碗娖,標志轉換結束,則移位府存器中的數據被更新的二進制補碼替代。設計中,由于256 KB數據存儲器僅需要15位地址A0~A14,則使用A15與RD,WR共同作為控制線,使A/D轉換與數據存儲交替工作。當A15低電平時,選通數據存儲器IDT71256,此時CS為高電平,則AD976A停止工作;當A15為高電平時,通過與非邏輯電路使CS為低電平,選通AD976A,并通過WR 的變化提供R/C下降沿,這樣可以通過軟件延時精確控制采樣率。
1.2.2 總線控制
在數控單元硬件結構中,采用P0口提供數據總線和地址總線,當ALE輸出信號為高電平時,P0口,輸出數據鎖存入總線驅動器中地址的低8位,同時和P2口送出的高8位地址組成完整的16位地址,尋址到外部的256 KB地址空間,由A/D轉換器把采集到的數據存入靜態(tài)RAM中。由于P0口是數據與地址分時復用口,因此引進74HC573作為地址鎖存器。同時,使用 RD作為讀取外部數據內存的控制線;WR作為寫入數據到外部內存的控制線;PSEN作為存取外部程序存儲器的讀取控制線。
1.2.3 電機控制電路
天線驅動控制部分通過上位機發(fā)送電機啟動命令,單片機從串口接收到啟動命令后,向電機驅動器AKS230發(fā)出節(jié)拍脈沖,以帶動天線勻速轉動;通過編程控制P1.0口輸出節(jié)拍脈沖速率,即可控制天線轉速。當上位機發(fā)出停止命令時,通過單片機程序提取天線狀態(tài),保證天線啟停處于同一位置?紤]到單片機輸出電流與電機驅動電流的匹配問題Ⅲ,這里使用總線驅動器74LS245與單片機相連,輸出電流可達20 mA,滿足電機驅動要求。
1.2.4 串口通信電路
串口通信部分通過AT89C51內部的全雙工串行通信接口RXD和TXD進行發(fā)送和接收。AT89C51串行接口有四種工作模式,本設計中,串口工作于方式1,波特率可變,通過定時器T1進行溢出率控制,令T1工作于方式2,由于波特率為(2SMOD/32)·(fOSC/12)·[1/(28- TH1)],則通過計算可得T1裝載值為0xFA,波特率為9 600 b/s。這里選用MAX232完成TTL到EIA的電平轉換。
2 軟件設計
單片機軟件部分采用了模塊化的設計方法,按照功能分為數據采集及存儲、電機運行控制及狀態(tài)提取、串口發(fā)送與接收幾部分,各個模塊之間通過中斷或子程序調用等進行連接,有機地成為一體,整個系統(tǒng)已經使用Medwin 3.O調試并能夠成功運行。
數據采集部分包括初始化、信號采集及存儲,采集速率通過編程進行控制,實現每10 ms采樣一個電壓值,并存人0100H~01C8H的地址空間中,采集100個數據后調用中斷通過串口傳給上位機進行后續(xù)處理。每次系統(tǒng)上電時,采集部分復位并從頭運行,數據采集部分程序流程圖如圖3所示。
電機運行控制部分通過中斷接收串口命令,以實現電機的精確啟動和停止,從而控制天線的掃描狀態(tài),當串口發(fā)送5500h時電機停止;當發(fā)送55ffh時電機啟動。其重點在于精確讀取天線的轉角狀態(tài),保證電機啟動和停止處于同一位置。主要通過軟件計數來實現,由于電機步進角為1.8°且采用32細分,則每轉一圈步數為:360°/(1.8°/32)=6 400步,通過讀取計數值,實現對電機啟動停止位置的控制。電機控制部分程序流程圖如圖4所示。
串口通信部分采用中斷方式,包括串口初始化和串口傳輸兩部分,通過發(fā)送標志TI和接收標志RI判斷中斷類型,若為接收中斷,則接收上位機命令,控制電機啟動和停止;若為發(fā)送中斷,則實現每次間隔1 s向上位機發(fā)送100個電壓值,即200個字節(jié)。其中,串口通信部分流程圖如圖5所示。
3 上位機軟件設計
上位機軟件主要通過C#實現,通過調用串口實現對下位機的控制及數據的后續(xù)處理,并能夠實時顯示采集數據波形并保存。界面如圖6所示。