基于單片機的便攜遠程多路數(shù)據(jù)采集系統(tǒng)
掃描二維碼
隨時隨地手機看文章
引言:
在工業(yè)生產(chǎn)和各種科學(xué)技術(shù)研究過程中,常常要對各種數(shù)據(jù)進行采集和處理,通常用的采集方式是在PC機或者工控機內(nèi)安裝數(shù)據(jù)采集卡,例如 A/D卡及RS-422卡、RS-485卡。采集卡易受機箱內(nèi)環(huán)境的影響,以及計算機插槽數(shù)量和地址、中斷資源的限制,不能掛接很多設(shè)備。尤其是在進行油井壓裂作業(yè)時,因為壓裂工作現(xiàn)場比較危險,而又同時需要對壓裂時的各種數(shù)據(jù)進行采集和處理,以便進行遠程實時監(jiān)控,因此利用工控機進行遠程數(shù)據(jù)采集處理,就難以滿足遠程數(shù)據(jù)傳輸和便攜的要求。本文探討一種基于單片機和手提電腦的遠程數(shù)據(jù)采集系統(tǒng),既可以進行遠程數(shù)據(jù)采集,而且靈活輕便利于攜帶,同時也減低了設(shè)備成本。
1 主要芯片介紹
AT89C52是一個低功耗,高性能CMOS 8位單片機,片內(nèi)含8k Bytes的可反復(fù)擦寫1000次的Flash只讀程序存儲器。器件采用ATMEL公司的高密度、非易失性存儲技術(shù)制造。AT89C52有128 bytes的On-Chip隨機存取數(shù)據(jù)存儲器(RAM),32個外部雙向輸入/輸出(I/O)口,1個6向量兩級中斷結(jié)構(gòu),3個16位可編程定時計數(shù)器,1個全雙工串行通信口,片內(nèi)時鐘振蕩器。此外,AT89C52還設(shè)計和配置了振蕩頻率可為0Hz并可通過軟件設(shè)置的省電模式??臻e模式下,CPU暫停工作,而RAM定時計數(shù)器、串行口、外中斷系統(tǒng)可繼續(xù)工作,掉電模式凍結(jié)振蕩器而保存RAM的數(shù)據(jù),停止芯片其它功能直至外中斷激活或硬件復(fù)位。
AD574是美國模擬數(shù)字公司(Analog)推出的單片高速12位逐次比較型A/D轉(zhuǎn)換器,內(nèi)置雙極性電路構(gòu)成的混合集成轉(zhuǎn)換芯片,具有外接元件少,功耗低,精度高等特點,并且具有自動校零和自動極性轉(zhuǎn)換功能,只需外接少量的阻容件即可構(gòu)成一個完整的A/D轉(zhuǎn)換器,其模擬電壓輸人范圍有四種:0- 10V和0-20V,0±5V和0-±10V,數(shù)據(jù)輸出格式為12位和8位可選,本文采用12位數(shù)據(jù)格式,這樣可以提高數(shù)據(jù)的精度。
MAX485接口芯片是MAXIM公司的一種RS-485芯片,它完成將TTL電平轉(zhuǎn)換為RS-485電平的功能。采用單一電源+5V工作,額定電流為300μA,采用半雙工通訊方式,數(shù)據(jù)傳輸率高達2.5Mbps。在一條RS-485總線上可以掛接最多32個MAX485收發(fā)器。這樣可以通過編程利用一臺手提電腦通過RS-485總線同時對多套該系統(tǒng)進行數(shù)據(jù)采集。
2 系統(tǒng)硬件設(shè)計
整個采集系統(tǒng)分為數(shù)據(jù)采集發(fā)送端和數(shù)據(jù)接收端。數(shù)據(jù)采集發(fā)送端主要由AT89C52單片機、AD574A A/D采樣芯片、MAX354故障保護模擬開關(guān)和MAX485芯片構(gòu)成,完成多路信號的采集和串行數(shù)據(jù)的發(fā)送功能。數(shù)據(jù)接收端由一個RS-485電平轉(zhuǎn) RS-232C電平的電路,以及一臺便攜式手提電腦構(gòu)成。數(shù)據(jù)采集端和發(fā)送端通過一條屏蔽的雙絞線電纜連接。
2.1 數(shù)據(jù)采樣電路
采樣電路由AD574和MAX354組成,在一個采樣周期內(nèi),連續(xù)對8路輸入數(shù)據(jù)按順序進行一輪采樣,采樣電路與單片機的連接如圖1所示。
圖-1 數(shù)據(jù)采樣電路
采用8通道故障保護模擬開關(guān)MAX354對采樣通道進行選擇,這可以通過89C52地址線A0,A1,A2來控制,信號通過模擬開關(guān)后被送到AD574的輸入端。
AD574內(nèi)部具有三態(tài)數(shù)據(jù)鎖存器,可以和89C52單片機的P0數(shù)據(jù)口直接相連,它內(nèi)部具有參考電壓和時鐘電路,因此無需任何元器件即可獨立完成 A/D轉(zhuǎn)換。A/D轉(zhuǎn)換結(jié)束后,AD574向89C52的中斷INT0發(fā)出中斷申請,然后系統(tǒng)對轉(zhuǎn)換后的數(shù)據(jù)進行處理。AD574的12/8端子固定接地,A0端口與89C52的地址線A7相連,這樣在地址線A7的控制下分兩次通過8位數(shù)據(jù)總線來讀取l2位的轉(zhuǎn)換結(jié)果。
2.2 數(shù)據(jù)發(fā)送與接收電路
為了避免在長距離的數(shù)據(jù)傳輸過程中,數(shù)據(jù)受到現(xiàn)場的干擾,該系統(tǒng)采用MAX485芯片將信號電平轉(zhuǎn)換為RS-485電平,采用RS-485接口進行遠程數(shù)據(jù)傳輸。RS-485是美國電氣工業(yè)聯(lián)合會(EIA)制定的利用平衡雙絞線作傳輸線的多點通訊標(biāo)準(zhǔn)。它采用差分信號進行傳輸;最大傳輸距離可以達到 1.2 km;最大可連接32個驅(qū)動器和收發(fā)器;接收器最小靈敏度可達±200 mV;最大傳輸速率可達2.5 Mb/s。同時,RS-485協(xié)議正是針對遠距離、高靈敏度、多點通訊制定的標(biāo)準(zhǔn)。這也為今后該數(shù)據(jù)采集系統(tǒng)進行多點數(shù)據(jù)采集的功能擴展奠定了基礎(chǔ)。
MAX485芯片的結(jié)構(gòu)和引腳都非常簡單,內(nèi)部含有一個驅(qū)動器和接收器。RO和DI端分別為接收器的輸出和驅(qū)動器的輸入端,與單片機連接時只需分別與單片機的RXD和TXD相連即可;/RE和DE端分別為接收和發(fā)送的使能端,當(dāng)/RE為邏輯0時,器件處于接收狀態(tài);當(dāng)DE為邏輯1時,器件處于發(fā)送狀態(tài),因為MAX485工作在半雙工狀態(tài),所以只需用單片機的一個管腳控制這兩個引腳即可;A端和B端分別為接收和發(fā)送的差分信號端,當(dāng)A引腳的電平高于B 時,代表發(fā)送的數(shù)據(jù)為1;當(dāng)A的電平低于B端時,代表發(fā)送的數(shù)據(jù)為0。在與單片機連接時接線非常簡單。只需要一個信號控制MAX485的接收和發(fā)送即可。同時將A和B端之間加匹配電阻,一般可選100Ω的電阻。
圖-2 數(shù)據(jù)發(fā)送電路
圖-3 “看門狗”電路
在數(shù)據(jù)接收端,手提電腦上的串行接口采用的是RS-232C電平,因此還需要將RS-485電平進行轉(zhuǎn)換。由于在數(shù)據(jù)接收端采用的手提電腦需要攜帶方便,因此這里采用的是市面上比較小巧緊固的電平轉(zhuǎn)換接口,這里就不做贅述。
2.3 主要的抗干擾措施
對MAX354的輸入端采用隔離放大器進行信號隔離,采用隔離放大器的變壓器將信號磁耦合 ,隔離了通路的線路連接,從而切斷了干擾源。這樣對壓裂設(shè)備上發(fā)動機的干擾有了一定效果的屏蔽作用。
同時,為了防止單片機受干擾影響而發(fā)生“死機”等現(xiàn)象,系統(tǒng)還利用MAX706芯片設(shè)計了“看門狗”電路,提高了系統(tǒng)的抗干擾能力,如圖-3。 MAX706是一種性能優(yōu)良的低功耗CMOS監(jiān)控電路芯片,其內(nèi)部電路由上電復(fù)位、可重觸發(fā)“看門狗”定時器及電壓比較器等組成。MAX706只要在 1.6秒時間內(nèi)檢測到WCI引腳有高低電平跳變信號,則“看門狗”定時器清零并重新開始計時;若超出1.6秒后,WCI引腳仍無高低電平跳變信號,則“看門狗”定時器溢出,WDO引腳輸出低電平,進而觸發(fā)MR手動復(fù)位引腳,使MAC706復(fù)位,從而使“看門狗”定時器清零并重新開始計時,WDO引腳輸出高電平,MAX706的RST復(fù)位輸出引腳輸出大約200毫秒寬度的低電平脈沖,使單片機控制系統(tǒng)可靠復(fù)位,重新投入正常運行。MAX706的控制只需要利用單片機的P1.5引腳通過簡單編程實現(xiàn)。
3 系統(tǒng)軟件設(shè)計
軟件設(shè)計包括兩方面:筆記本電腦的主機程序和單片機數(shù)據(jù)采集和發(fā)送的固件程序。其中,主機程序的編寫可以利用VB語言編寫,串口通信是通過 Microsoft Visual Basic的通信編程控件MSComm實現(xiàn)的。在讀取完串口數(shù)據(jù)后,需要將每通道10次采集的數(shù)據(jù)進行數(shù)學(xué)平均計算,這樣可以在一定程度上減小干擾數(shù)據(jù)的影響。
89C52的串行通訊采用工作方式1,波特率是9600bit/s,發(fā)送數(shù)據(jù)采用定時查詢方式,可以根據(jù)需要適當(dāng)調(diào)節(jié)發(fā)送數(shù)據(jù)的時間,定時周期性地讀取存儲的采樣數(shù)據(jù),以串行方式通過RS-485接口發(fā)送到上位機。程序采用可讀性較強的C51語言編寫,程序流程圖見固件流程圖-4。在編寫89C52 的程序時,需要對采樣數(shù)據(jù)進行處理。由于采集的油溫、油壓、井口壓力等數(shù)據(jù)與信號電壓是線性關(guān)系,通過給定標(biāo)準(zhǔn)信號電壓測量一個最大值和一個最小值,就能得出各種數(shù)據(jù)的信號電壓與測量數(shù)據(jù)之間的比例關(guān)系。數(shù)據(jù)處理程序是根據(jù)線性比例關(guān)系,先將A/D轉(zhuǎn)換器AD574 采集到的12位二進制數(shù)據(jù)轉(zhuǎn)換成實際測量值,并將此值按照ANSI/IEEE標(biāo)準(zhǔn)754-1985轉(zhuǎn)換成32位浮點數(shù),保存在設(shè)定的存儲區(qū),總共有8組數(shù)據(jù),需要32字節(jié)的空間來存儲采樣數(shù)據(jù)。
一個標(biāo)準(zhǔn)浮點數(shù)占用一個雙字(32位)。最高位(第31位)位浮點數(shù)的符號位,最高位為“0”是為正數(shù),位“1”時為負(fù)數(shù);8位指數(shù)占23-30 位;因為規(guī)定尾數(shù)的正數(shù)部分總是為“1”,只保留的尾數(shù)的小數(shù)部分(0~22位)。浮點數(shù)的優(yōu)點是利用很小的存儲空間(4B)可以表示出精確度很高的非常大和非常小的數(shù),在進行數(shù)據(jù)處理和運算時提高了精確度。
圖-4 單片機固件主程序流程圖
4 結(jié)束語
該套數(shù)據(jù)采集系統(tǒng)在油田壓裂設(shè)備上成功運用。實踐證明,與傳統(tǒng)的數(shù)據(jù)采集系統(tǒng)相比,該采集系統(tǒng)不僅輕便易攜帶,能有效防止現(xiàn)場環(huán)境的干擾,而且利用 RS-485總線進行遠程數(shù)據(jù)采集,將油井壓裂作業(yè)過程中的壓裂車的油溫、油壓、井口壓力、泥漿密度,以及其它數(shù)據(jù)保存到筆記本電腦上,增強了數(shù)據(jù)的實時處理能力,工程技術(shù)人員能夠及時分析數(shù)據(jù)結(jié)果,減少了在油井壓裂作業(yè)過程中的事故率