摘 要: 以ATmega128單片機在鋼水液位監控系統的信號處理子系統為例,詳細介紹了系統對模擬量、數字量以及開關量的采集與處理過程,用LCD顯示模塊顯示數據和狀態的方法說明了一些為節省單片機引腳資源而采取的設計技巧,通過軟件與硬件的結合,使信號的處理效果達到設計要求。
關鍵詞: ATmega128;單片機;信號處理
在鋼鐵冶金的連鑄生產過程中,維持結晶器中鋼水液位的基本穩定對產品質量有著舉足輕重的作用。鋼水液位高度的波動太大會使結晶器中的保護渣等夾雜物帶入鋼水中,不僅影響鑄坯的質量,嚴重時甚至會導致鋼水溢出等重大生產事故的發生。為了提高鋼坯的產品質量,避免生產事故,降低操作工人的勞動強度,提高生產自動化水平,就必須有一套高精度的鋼水液位控制系統,使結晶器中鋼水液位高度波動范圍控制在5 mm以內。
結晶器的鋼水液位控制系統由三個子系統構成:(1)信號檢測與放大子系統;(2)信號處理子系統;(3)PLC及執行機構控制子系統。其中(1)、(3)兩個子系統的功能相對單一。信號檢測與放大子系統的主要功能是通過電渦流傳感器及其高精度放大器把鋼水液位高度轉換成相應的電壓信號,通過溫度傳感器將溫度轉換成相應的電流信號;PLC及執行機構控制子系統的主要功能是與信號處理子系統通信,發出開澆命令,接收其應答信號,在開澆過程中根據信號處理子系統的輸出電流大小,通過PLC和執行機構控制中間包的塞棒開啟度,從而控制注入結晶器的鋼水流量,使結晶器的液位高度波動范圍小于5 mm。
系統的核心部分是信號處理子系統,其結構框圖如圖1所示。
1 信號處理子系統的硬件設計
信號處理子系統是以ATmega128單片機為核心的嵌入式系統。系統中的輸入/輸出信號包括:用來實現開澆聯絡的1對開關量——開澆與應答;2路通過A/D轉換實現的模擬量輸入——液位電壓和溫度電流;3路通過D/A轉換實現的模擬量(圖1中只畫出2路)輸出——液位電流、溫度電流及mV補償。輸入/輸出設備包括:1個帶觸摸屏、分辨率為320×240的LCD顯示模塊;4個按鍵的鍵盤;4個用來指示狀態的發光二級管;還有1個用來發音報警的蜂鳴器。其主要模塊設計方案介紹如下。
1.1 單片機
單片機采用Atmel公司生產的8 bit、增強型AVR單片機ATmega128L,其引腳數為64個,I/O端口有53個,片內有128 KB的Flash、4 KB的SRAM和4 KB的E2PROM,還有兩個8 bit的定時器和兩個16 bit的計時器;具有8路10 bit A/D轉換器。片內資源比較豐富,性能可滿足本子系統使用要求。
1.2 鍵盤
為了節省引腳資源,本系統沒有采用獨立按鍵方式,而是利用一路片內A/D轉換來實現4個按鍵的識別。通過不同按鍵按下后串聯接到+5 V的使分壓電阻輸出電壓的不同來識別不同的按鍵。4個按鍵的操作分別對應為運行(Run)、調整(Adj)、線性化(Line)、設置(Set)4個功能。其中,“運行”是指系統的正常運行;“調整”是指在開澆之前,把系統調整到一個初始狀態,具體操作是在液位高度為150 mm時,通過對前級放大子系統及信號處理子系統的mV補償,使液位電壓值為4.96 V;“線性化”是在0~150 mm的范圍內,通過傳感器配合設定16組不同液位與電壓的數據;“設置”是對線性化數據輸入的確認。
1.3 模數轉換(A/D)
雖然單片機片內有10 bit的A/D轉換器,但由于現場對模塊量的采集精度要求較高,所以本系統采用了12 bit A/D轉換器LTC1291來實現液位模擬量的采集[1]。這是一種具有兩個通道的12 bit串位ADC芯片,由于輸入的液位電壓范圍是0~6 V,所以供電電壓設為6 V。轉換后的數值量以串行方式提供給單片機,作為毫伏補償輸入和相應液位電流輸出的依據。
1.4 數模轉換(D/A)
本系統的D/A有3路,一路是為了調整初值而對前級放大輸出的毫伏補償,另兩路是為了輸出與液位高度(0~150 mm)、傳感器溫度(0~100 ℃)對應的電流4 mA~20 mA。
(1)毫伏補償
輸出毫伏補償電路如圖2所示,其目的是在開澆前,通過補償將液位高度與對應的輸出電壓調整到一個確定的對應值,比如在液位高度為150 mm時,使前級放大板的輸出電壓為4.96 V,若高于此值,則進行負補償,低于此值,則進行正補償,所以補償的毫伏值是可正可負的,D/A轉換器采用雙12 bit分辨率的LTC1446[2],輸出運算放大器LT1077的供電電壓為±5 V。補償是有限制的,其輸入數值范圍為0~±150,每個數值對應的輸出模擬量大小可通過電位器RS1調整。
(2)液位電流輸出
實現將液位高度轉換成4 mA~20 mA電流輸出的電路先由12 bit D/A轉換器LTC1451[3]將液位高度的數值量轉換成模擬量電壓,然后由AD694輸出相應的電流。LTC1451是一種12 bit分辨率串行D/A轉換器,從Din輸入的數字量是A/D轉換器采集的液位電壓,從Vout端輸出的是相應的模擬電壓,通過電流輸出模塊AD694轉換成模擬量電流4 mA~20 mA,從其Iout端輸出。
1.5 LCD顯示屏
LCD顯示屏采用的是分辨率為320×240、帶觸摸屏的LCD模塊,顯示的主要內容為系統運行界面、工作調整界面、補償界面和線性化界面及相關參數。
(1)系統運行界面
系統起動或按“Run”按鍵進入系統運行界面,如圖3所示。顯示內容包括3個部分:其一是輸入量、輸出量和狀態量的顯示;其中輸入量有:液位、電壓和溫度;輸出量有:液位電流、溫度電流和補償值;狀態值有:超溫(沒有超溫不顯示)、開澆/停澆、正常/異常。其二是以20像素/s的速度動態繪制反映液位波動情況的實時曲線。其三是通過觸摸屏實現6個按鍵,其功能如下:
①縮放:分別用放大倍數為1、2、4的比例,對液位高度的坐標進行縮放。放大倍數為1時,液位高度全程范圍是0~125 mm;放大倍數為2時,液位高度全程范圍是0~150 mm;放大倍數為4時,液位高度全程范圍是0~200 mm。
②下移:下移液位曲線窗口至適當的坐標范圍。
③上移:上移液位曲線窗口至適當的坐標范圍。
④翻頁:在顯示歷史曲線狀態時,可翻看滾動儲存的五個頁面之一的液位曲線。
⑤實時:從顯示歷史曲線切換到顯示實時曲線的狀態。
⑥歷史:從顯示實時曲線切換到顯示歷史曲線的狀態。
(2)工作調整界面
工作調整界面通過面板上的“Adj”按鍵進入,其主要作用是在開澆前對前級放大板進行調整,調整過程中顯示液位高度和對應的電壓值。
(3)自動補償界面
自動補償界面可以在工作調整結束返回系統運行界面時,由系統執行自動補償時顯示,也可以在開澆指令下達后執行自動補償時顯示,目的是為了避免工作調整時,因人工調整的精度不夠準確而造成的誤差。
若補償成功,則返回系統運行界面,并在其中顯示相應的補償值;補償失敗,則顯示異常,并用蜂鳴器報警。
(4)線性化界面
線性化界面示意圖如圖4所示,目的是為了設置不同液位高度所對應的液位電壓。由于傳感器參數不一定完全相同,所以一旦更換了前級信號檢測子系統中的傳感器,就必須做一次線性化處理。具體操作是在0~150 mm范圍內設置16組數據,通過人工調整檢測鋼板和傳感器之間的距離來模擬液位高度,設置每個點的液位高度和相應的電壓。其中,序號值分別為0~15,高度為液位高度的毫米值,原值為本次修改前該液位高度對應的電壓值,現值是對當前液位高度設置的液位電壓值。設置好的數據保存在單片機片內的E2PROM中。
線性化界面可通過面板上的“Line”按鍵進入,顯示線性化界面后,再按“Line”按鍵可在16個柱形圖中循環切換具體位置(柱形圖由空芯變為實芯顯示),再通過調整鋼板與傳感器的間距,在需要設定時按下面板上的“Set”按鍵即可確認設置,設置確認后即在線性化界面上顯示出參數及相應的矩形圖。
2 信號處理子系統的軟件設計
軟件設計是用C語言編程實現的,通過ICCAVR編譯生成目標代碼,再通過軟件AVR Studio 4和仿真器JTAG下載到ATmega128單片機中。
整個程序在主控模塊的大循環控制下運行,在運行過程中,根據系統的當前運行狀態以及面板按鍵和LCD觸摸屏按鍵的監控結果調用相應的子程序完成具體功能。
2.1 主控模塊結構
主控模塊在完成對系統進行的初始化工作后,即顯示系統運行界面,然后進入主循環。在主循環中根據運行狀態和采集到的用戶對面板按鍵和系統運行界面中的觸摸屏按鍵的操作,對當前流程和狀態進行相應的顯示和處理,其結構框圖如圖5所示。
2.2 模數轉換(A/D)子程序
A/D轉換采用的轉換器是LTC1291,這是一種串行接口的12 bit ADC,其操作步驟描述如下:
(1)發送低電平的片選信號到ADC的CS引腳;
(2)發送正脈沖到ADC的DIN引腳;
(3)發送4 bit的控制信號,明確通道號和數據格式;
(4)采用串行方式逐位將轉換的結果從DOUT引腳讀出;
(5)轉換結束,片選信號上升為高電平。
需要注意的是:串行數據每個bit的I/O都是在CLK引腳的脈沖配合下完成的。
2.3 數摸轉換(D/A)子程序
D/A轉換用來實現根據當前液位高度輸出相應電流給PLC及執行機構,D/A轉換芯片用的是LTC1451,這是一種串行接口12 bit的DAC,其DIN數據輸入將12 bit二進制數據通過CLK時鐘脈沖逐位地輸入到LTC1451的寄存器中[3],供LTC1451進行D/A轉換,并將轉換后的模擬信號,由DOUT引腳輸出給AD694芯片,再經AD694將此模擬信號轉換成4 mA~20 mA的直流電流信號給PLC控制子系統。
2.4 LCD顯示子程序
系統根據需要組織了24×24和16×16兩種漢字庫,還組織了8×16和8×13兩種字符點庫,所有點陣庫存放在ATmega128單片機的程序存儲器中,在顯示界面時,通過相應子程序來實現。實現顯示功能的子程序是通過分區方式直接寫入顯示存儲器的不同區域來完成的,主要子程序按功能可分三類:
(1)基本操作子程序。主要包括寫命令、寫數據、在指定坐標處讀/寫入數據等。
(2)字符及圖形顯示子程序。主要包括漢字和圖形的繪制子程序。
(3)觸摸屏處理子程序。主要包括SPI讀/寫數據及響應觸摸、確定鍵位等子程序。
3 實際系統運行情況
本系統已投入實際,穩定運行后,液位波動范圍可控制在3 mm以內,完全達到了設計要求。
本系統成功地解決了冶金企業連鑄生產過程中對鋼水液位監控的信號處理問題,其設計思想與實現方法可推廣應用到其他系統中。
參考文獻
[1] Linear Technology Inc.LTC1291 single chip 12-bit data acquisition system[EB/OL].[2011-03-02].http://cds.linear.com/docs/Datasheet/1291fa.pdf.
[2] Linear Technology Inc.LTC1446/LTC1446L dual 12-bit rail-to-rail micropower DACs in SO-8[EB/OL].[2011-03-02].http://cds.linear.com/docs/Datasheet/1446fa.pdf.
[3] Linear Technology Inc.LTC1451/LTC1452/LTC1453 12-bit rail-to-rail micropower DACs in SO-8[EB/OL].[2011-03-02].http://cds.linear.com/docs/Datasheet/145123fs.pdf.