0 引言
本文介紹的腐蝕儀是為了監(jiān)測(cè)野外輸油管道腐蝕度而設(shè)計(jì)的,,由于輸油管道的腐蝕度影響到石油的生產(chǎn),,會(huì)造成經(jīng)濟(jì)損失和安全事故,故對(duì)其腐蝕度的監(jiān)測(cè)是非常必要的,。本系統(tǒng)中,,可以通過(guò)檢測(cè)管道里的微電流,然后通過(guò)輸入經(jīng)驗(yàn)參數(shù)來(lái)?yè)Q算出管道當(dāng)前的腐蝕度,,并通過(guò)上位機(jī)程序把數(shù)據(jù)存檔,,繪制腐蝕度變化曲線(xiàn)圖,以便操作人員可以直觀的了解輸油管道的腐蝕變化情況,。
1 總體方案設(shè)計(jì)
1.1 設(shè)計(jì)總體構(gòu)成方案
設(shè)計(jì)主要由下位機(jī)和上位機(jī)兩個(gè)部分組成,。下位機(jī)以單片機(jī)為核心,運(yùn)用程序控制來(lái)進(jìn)行電流的采集,、處理,、顯示,并將有關(guān)數(shù)據(jù)存儲(chǔ)到IC卡,。上位機(jī)則是通過(guò)計(jì)算機(jī)與Q系列接觸式IC卡讀寫(xiě)器" title="讀寫(xiě)器">讀寫(xiě)器之間進(jìn)行的串口" title="串口">串口通信,,將IC卡里的數(shù)據(jù)導(dǎo)入計(jì)算機(jī)。
其下位機(jī)系統(tǒng)框圖" title="系統(tǒng)框圖">系統(tǒng)框圖如圖1所示,。
圖1 下位機(jī)系統(tǒng)框圖
其上位機(jī)系統(tǒng)的系統(tǒng)框圖如圖2所示,。
圖2 上位機(jī)系統(tǒng)框圖
1.2 下位機(jī)電路的設(shè)計(jì)
本系統(tǒng)的設(shè)計(jì)過(guò)程中,,主要元件包括12位并行模/數(shù)轉(zhuǎn)換芯片AD1674、擴(kuò)展多功能接口芯片8155,、時(shí)鐘日歷芯片DS12887,、AT89C52單片機(jī)。無(wú)憂(yōu)
放大芯片采用了AD524放大器,??紤]到腐蝕電流的取值范圍為0uA~100uA,故選取固定增益值GAIN=1000,,使放大后的電流量滿(mǎn)足AD1674的輸入端要求,。
模擬電流量通過(guò)AD1674后轉(zhuǎn)換成對(duì)應(yīng)的數(shù)字量。本系統(tǒng)中AD1674與AT89C52的硬件接口電路如圖3:采用+12V,、-12V雙電源供電,,單極輸入方式,模擬量從10VIN輸入,。其中CS接GAL16V8的18號(hào)管腳,它的啟動(dòng)地址為4000H,高八位地址為4002H,低八位地址為4003H,。轉(zhuǎn)換結(jié)束信號(hào)STS接到INT0上,AT89C52的讀寫(xiě)信號(hào)W/R,、RD通過(guò)與非門(mén)接到AD1674的操作使能端CE來(lái)控制AD1674的讀/轉(zhuǎn)換操作,。可用中斷方式,,也可用查詢(xún)方式,。本系統(tǒng)中采用查詢(xún)方式,其流程如圖4所示,。
圖3 AD1674與AT89C52的硬件接口電路
圖4 AD1674轉(zhuǎn)換流程圖
其對(duì)應(yīng)的C51語(yǔ)言程序如下所示:
#define ADSEL XBYTE[0x4000] //AD1674相關(guān)定義
#define HIGH_READ XBYTE[0x4002]
#define LOW_READ XBYTE[0x4003]無(wú)憂(yōu)
unsigned int ad1674()
{ uchar high,low,j=0;
unsigned int ad_value1;
unsigned int ad_value2,ad[20],sum=0;
for(j=0;j<10;j++)
{ ADSEL="0x00"; //啟動(dòng)12位轉(zhuǎn)換
while(STS==1) ; //等待AD轉(zhuǎn)換完畢
high="HIGH"_READ; //讀高八位數(shù)據(jù)
low="LOW"_READ; //讀低四位數(shù)據(jù)
low>>=4;
ad_value1=high*256+low; //合并12位二進(jìn)制數(shù)為十進(jìn)制數(shù)
ad_value2=ad_value1*0.0002442*10;
//1/0XFFF=0.0002442,,這里取單位為mA級(jí)
ad[j]=ad_value2;
}
for(j=0;j<10;j++) sum+=ad[j]; //對(duì)10次采集值求平均值
sum/=10;
return (sum);
}
AT89C52有256B的內(nèi)部RAM,滿(mǎn)足本系統(tǒng)對(duì)數(shù)據(jù)存儲(chǔ)器的需求,;內(nèi)部有8KB的可編程只讀存儲(chǔ)器,,構(gòu)成應(yīng)用系統(tǒng)時(shí),不需要外擴(kuò)程序存儲(chǔ)器[3],。
DS12887的MOT接GND,,即選用Intel工作模式。其讀寫(xiě)允許輸入腳DS/RD,、R/W分別與AT89C52的讀寫(xiě)信號(hào)相接,。它的復(fù)用地址數(shù)據(jù)總線(xiàn)AD0-AD7接AT89C52的P0.0-P0.7,片選輸入CS接GAL16V8的15號(hào)管腳,它的命令寄存器地址為:分-5002H,小時(shí)-5004H,星期-5006H,,日-5007H,,月-5008H,年-5009H,寄存器A-500ah,,B-500bh,,C-500ch,D-500dH,,不掉電數(shù)據(jù)存儲(chǔ)器為:500EH-507FH,。RESET直接接VCC,保證DSI2C887在掉電時(shí),,其內(nèi)部控制寄存器不受影響,。
液晶顯示器NS1602,它能顯示16字符X2行的內(nèi)容,。系統(tǒng)運(yùn)用的是間接訪(fǎng)問(wèn)方式8位數(shù)據(jù)總線(xiàn)接口電路,。其3個(gè)控制信號(hào)RS、R/W,、E分別與AT89C52的P3.3,、P3.4、P3.5口相接,,8位數(shù)據(jù)信號(hào)接8155的PB端口。對(duì)液晶顯示器的操作要嚴(yán)格遵守LCD1602的接口時(shí)序,。其操作分兩類(lèi):寫(xiě)指令代碼,,寫(xiě)顯示數(shù)據(jù)。兩者的區(qū)別取決于RS,,RS=0時(shí)訪(fǎng)問(wèn)命令寄存器,,RS=1時(shí)訪(fǎng)問(wèn)數(shù)據(jù)寄存器[6]。另外,,對(duì)LCD的初始化工作是非常重要的,,包括清屏、數(shù)據(jù)格式設(shè)置,、顯示器特性設(shè)置,、顯示地址設(shè)置等。
鍵盤(pán)輸入采用4*4鍵盤(pán),,其中鍵盤(pán)行線(xiàn)接P1.0-P1.3,,輸出接地信號(hào);鍵盤(pán)列線(xiàn)接P1.4-P1.7,輸入回饋信號(hào),,來(lái)檢測(cè)按鍵是否按下,。鍵盤(pán)是非編碼鍵盤(pán),要通過(guò)軟件編程來(lái)識(shí)別鍵盤(pán),。鍵盤(pán)輸入信息的主要過(guò)程是:判斷是否有鍵按下,,掃描確定按下的是哪一個(gè)鍵;把此鍵代表的信息翻譯成計(jì)算機(jī)所能識(shí)別的代碼,。
由于IO口不夠用,,外加一片擴(kuò)展多功能接口芯片8155,。其片選端接GAL16V8的14號(hào)管腳,IO/M端接地址A8,,8155的命令口地址為2100H,,A口地址為2101H,B口地址為2102H,,C口地址為2103H,。8155的PB口為L(zhǎng)CD的數(shù)據(jù)口。
1.3 上位機(jī)電路的設(shè)計(jì)
利用接觸式IC卡讀寫(xiě)器跟計(jì)算機(jī)之間進(jìn)行串口通信將IC卡里的數(shù)據(jù)導(dǎo)入計(jì)算機(jī),。讀寫(xiě)器提供了性能完善,、可靠的接口函數(shù)庫(kù),在用VB編程時(shí)可直接運(yùn)用這些函數(shù),。
首先要調(diào)用通訊口初始化函數(shù)IC_InitComm(Port)來(lái)檢測(cè)串口,,再設(shè)置卡型,成功后輸入頁(yè)碼就可讀入該頁(yè)的數(shù)據(jù)了,。讀入的數(shù)據(jù)可通過(guò)保存控件保存到指定的路徑下,。程序退出之前要執(zhí)行IC_ExitComm()函數(shù)關(guān)閉串口釋放串口設(shè)備句柄否則再次初始化串口將出錯(cuò)。
2. 數(shù)據(jù)的串行存儲(chǔ)
2.1 I2C總線(xiàn)通信原理
I2C總線(xiàn)是由數(shù)據(jù)線(xiàn)SDA和時(shí)鐘SCL構(gòu)成的串行總線(xiàn),,可發(fā)送和接收數(shù)據(jù),。SDA總線(xiàn)上的數(shù)據(jù)僅在SCL為低電平時(shí)可以改變,每一個(gè)SCL周期表示傳送一位串行碼,。若SCL高電平期間,SDA由高轉(zhuǎn)低,表示“開(kāi)始”狀態(tài),,提示一個(gè)通信進(jìn)程的激活。而SDA由低轉(zhuǎn)高,,表示“停止”狀態(tài),該狀態(tài)終止所有通信,。所有地址和數(shù)據(jù)均以8位串行碼為數(shù)據(jù)單位輸入輸出,總線(xiàn)上任何接收設(shè)備必需在接收到8位串行碼后,,將SDA總線(xiàn)置1位低電平以確認(rèn)它成功地收到一個(gè)字節(jié)數(shù)據(jù),。寫(xiě)操作需在“開(kāi)始”狀態(tài)后, 發(fā)出一個(gè)8位的控制及器件地址碼并得到確認(rèn),再發(fā)出一個(gè)8位或16位數(shù)據(jù)碼地址并在被確認(rèn)后隨時(shí)鐘不斷滾動(dòng)輸出8位數(shù)據(jù)碼,直至“停止”狀態(tài)發(fā)生[2]。
2.2 I2C總線(xiàn)的編程實(shí)現(xiàn)
本系統(tǒng)中是用P3.0和P3.1分別作為SDA和SCL信號(hào),單片機(jī)所用晶體振蕩器的頻率為12MHz,。當(dāng)無(wú)卡插入時(shí)開(kāi)關(guān)閉合,,PC0為低電平,當(dāng)有卡插入時(shí)開(kāi)關(guān)斷開(kāi),,PC0為拉為高電平,。每個(gè)機(jī)器周期為1us,設(shè)計(jì)可根據(jù)I2C總線(xiàn)的工作時(shí)序用軟件模擬I2C總線(xiàn)產(chǎn)生起始位,、停止位以及發(fā)送字節(jié),。
3. 結(jié)束語(yǔ)
現(xiàn)有一塊美國(guó)FANN公司生產(chǎn)的機(jī)械電流測(cè)量表,價(jià)格一萬(wàn)多元人民幣。本文以AT89C52單片機(jī)為核心處理器設(shè)計(jì)的防腐監(jiān)測(cè)儀" title="防腐監(jiān)測(cè)儀">防腐監(jiān)測(cè)儀則只需幾百元的成本,,而且能自動(dòng)定時(shí)將腐蝕相關(guān)數(shù)據(jù)進(jìn)行存儲(chǔ),,與傳統(tǒng)的機(jī)械電流測(cè)量表相比,無(wú)需專(zhuān)門(mén)的工作人員來(lái)記錄相關(guān)數(shù)據(jù),,操作起來(lái)更簡(jiǎn)單方便,。在外形上,本設(shè)計(jì)利用液晶屏顯示,,其體積更小巧,。本設(shè)計(jì)能較好的對(duì)石油管道的腐蝕狀況進(jìn)行監(jiān)測(cè),將對(duì)減少石油管道事故和降低由此帶來(lái)的經(jīng)濟(jì)損失起到良好效果,。
本文作者創(chuàng)新點(diǎn):與國(guó)外的同類(lèi)儀器相比具有價(jià)格上的絕對(duì)優(yōu)勢(shì),,從使用的角度看讀數(shù)精確,攜帶方便,。無(wú)憂(yōu)電子開(kāi)發(fā)網(wǎng)
參考文獻(xiàn)
[1] 楊振江,,蔡德芳.新型集成電路適用指南與經(jīng)典應(yīng)用[M].西安:西安電子科技大學(xué)出版社,1998.10
[2] 楊金巖,,鄭應(yīng)強(qiáng),,張振仁.8051單片機(jī)數(shù)據(jù)傳輸接口擴(kuò)展技術(shù)與應(yīng)用實(shí)例[M].北京:人民郵電出版社,2005.1
[3] 李群芳,張士軍,,黃建.單片微型計(jì)算機(jī)與接口技術(shù)(第二版)[M].北京:電子工業(yè)出版,,2005.1無(wú)憂(yōu)電子開(kāi)發(fā)網(wǎng)
[4] 王述全,孟臣.智能型LED鍵盤(pán)顯示技術(shù)及其在儀器儀表中的應(yīng)用[J].微計(jì)算機(jī)信息,2004,(10).
[5] http://www.analog.com/UploadedFiles/Data_Sheets/346669145AD1674_c. pdf[S].
[6] /upload/eWebUpload/200805/20080524001955393.pdf[S].
[7] The I2C Bus concept and Specification[S]. Philips Semiconductors.1992