摘要:本文介紹了基于RS-485現(xiàn)場總線設(shè)計(jì)的數(shù)據(jù)采集系統(tǒng),以STC89C52RC單片機(jī)為核心芯片,將傳感器模塊采集的信號通過TTL轉(zhuǎn)RS485模塊把信號傳遞到RS485集線器中,再通過串口模塊把數(shù)據(jù)傳輸?shù)缴衔粰C(jī)中去,能夠利用C#編寫的上位機(jī)系統(tǒng)對多處場地的溫濕度、可燃?xì)怏w等信號進(jìn)行采集和顯示,從而達(dá)到對不同場地的環(huán)境監(jiān)測。
關(guān)鍵詞:單片機(jī) 傳感器 數(shù)據(jù)采集
中圖分類號:TP274.2 文獻(xiàn)標(biāo)識碼:A 文章編號:1007-9416(2016)10-0151-02
引言
隨著科技的快速發(fā)展,日常生活中的瓜果蔬菜種植基本上不受季節(jié)的影響,溫室大棚為人們的提供了各種便利。為了更好的觀測溫室大棚里的瓜果蔬菜的成長,可以利用信息技術(shù)手段實(shí)時監(jiān)測溫室大棚的生產(chǎn)條件。在此基礎(chǔ)上,基于現(xiàn)場總線的溫室多點(diǎn)監(jiān)測系統(tǒng)應(yīng)運(yùn)而生,本文主要介紹了基于STC89C52RC單片機(jī)對多點(diǎn)位置下的溫濕度和氣體數(shù)據(jù)的采集、傳輸?shù)脑O(shè)計(jì)與實(shí)現(xiàn),改設(shè)計(jì)實(shí)用性比較強(qiáng),性價比高,能夠廣泛的被應(yīng)用到日常生活中去。
1 系統(tǒng)總體設(shè)計(jì)
本系統(tǒng)可以對現(xiàn)場多點(diǎn)數(shù)據(jù)進(jìn)行采集,采集到的數(shù)據(jù)通過485總線遠(yuǎn)程傳輸?shù)綌?shù)據(jù)匯總控制板,再通過串口將數(shù)據(jù)傳輸?shù)缴衔粰C(jī)。本系統(tǒng)主要由以下幾個部分組成:數(shù)據(jù)采集板、RS485集線器、主控電路板、上位機(jī)組成。數(shù)據(jù)采集板采用的是STC89C52RC單片機(jī)作為主控制芯片,該單片機(jī)是多點(diǎn)數(shù)據(jù)采集的核心部分,而且抗干擾能力強(qiáng),采集數(shù)據(jù)以后通過TTL轉(zhuǎn)485功能模塊把數(shù)據(jù)傳輸?shù)缴蠈又骺啬K中去;主控模塊的顯示屏上通過按鍵選擇顯示多個數(shù)據(jù)采集板傳送過來的數(shù)據(jù),同時通過串口把數(shù)據(jù)信息傳送到上位機(jī)系統(tǒng)中去,上位機(jī)用于系統(tǒng)聯(lián)網(wǎng),同時監(jiān)測下位機(jī)各個數(shù)據(jù)點(diǎn)采集的數(shù)據(jù),從而實(shí)現(xiàn)了遠(yuǎn)程對多點(diǎn)實(shí)時數(shù)據(jù)采集和監(jiān)測。
系統(tǒng)框圖如下圖1所示。
2 系統(tǒng)硬件電路設(shè)計(jì)
整個系統(tǒng)的核心電路就是數(shù)據(jù)采集電路和數(shù)據(jù)匯總電路,兩塊板子采用相同的硬件電路。
本設(shè)計(jì)采用了STC89C52RC單片機(jī)作為主控制芯片,氣體檢測模塊采用了DHT11溫濕度傳感器采集各個點(diǎn)的溫濕度數(shù)據(jù)信號;溫濕度檢測模塊采用了MQ-9氣體傳感器采集各個點(diǎn)的氣體數(shù)據(jù)信號;按鍵模塊采用了四個開關(guān)鍵控制,便于用戶手動控制模塊;液晶模塊采用了LCD1602液晶顯示模塊來顯示所采集的數(shù)據(jù)信號;報(bào)警電路采用了蜂鳴器當(dāng)報(bào)警設(shè)備,當(dāng)監(jiān)測到的數(shù)據(jù)信號超過所設(shè)定的閾值后將進(jìn)行報(bào)警;電源模塊為設(shè)備運(yùn)行提供電源;串口模塊采用TTL轉(zhuǎn)RS485模塊進(jìn)行數(shù)據(jù)轉(zhuǎn)換和向下一個模塊傳送數(shù)據(jù)。
而各個數(shù)據(jù)采集點(diǎn)之間用NLK-C2000485集線器進(jìn)行數(shù)據(jù)的傳輸,從而在主板的液晶顯示器上顯示,同時利用ISP和上位機(jī)進(jìn)行串口數(shù)據(jù)傳輸,從而在上位機(jī)上顯示各個點(diǎn)的數(shù)據(jù),實(shí)現(xiàn)了多個監(jiān)測點(diǎn)與上位機(jī)之間的遠(yuǎn)距離通信功能。
框圖如圖2所示。
3 系統(tǒng)軟件設(shè)計(jì)
本設(shè)計(jì)主要是能夠?qū)崿F(xiàn)多點(diǎn)的溫濕度和可燃?xì)怏w濃度的實(shí)時監(jiān)測,圖3是各監(jiān)測支點(diǎn)的設(shè)計(jì)流程,模塊通電以后,系統(tǒng)進(jìn)行初始化后進(jìn)行溫濕度和可燃?xì)怏w濃度檢測,如果所測數(shù)值超出預(yù)設(shè)的閾值后將進(jìn)行報(bào)警提示,如果數(shù)據(jù)沒有超出閾值就被傳送到液晶顯示模塊進(jìn)行數(shù)據(jù)顯示。
4 上位機(jī)設(shè)計(jì)
上位機(jī)的設(shè)計(jì)采用C#語言編寫,主要實(shí)現(xiàn)數(shù)據(jù)的識別與提取、以及顯示、報(bào)警這4個功能。上位機(jī)軟件從從串口緩存中讀取一個字節(jié)的數(shù)據(jù)并強(qiáng)制轉(zhuǎn)換成8位無符號數(shù)據(jù),并且進(jìn)行數(shù)據(jù)校驗(yàn),若數(shù)據(jù)正確則將接收到的數(shù)據(jù)存入二維數(shù)組的指定位置,在系統(tǒng)正常運(yùn)行之后,采用定時清除二維數(shù)據(jù)的方法,清除掉線節(jié)點(diǎn)的數(shù)據(jù)緩存,避免了數(shù)據(jù)顯示錯誤。關(guān)鍵的串口數(shù)據(jù)接收代碼如下:
private void serialPort1_DataReceived(object sender, SerialDataReceivedEventArgs e)
{
byte data;
for (byte i = 0; i < 8; i++)
{
//
data = (byte)serialPort1.ReadByte();
rxtemp[i] = data;
}
UInt16 rx4 = rxtemp[4];
rx4 = (byte)~rx4;
UInt16 rx5 = rxtemp[5];
rx5 = (byte)~rx5;
UInt16 rx6 = rxtemp[6];
rx6 = (byte)~rx6;
if ( rxtemp[0] > 0 && rxtemp[0] < 5 && rxtemp[0] == rx4 &&
rxtemp[1] == rx5 && rxtemp[2] == rx6 && rxtemp[7] == 0xff)
{
for (byte i = 0; i < 8; i++)
{
rxdat[rxtemp[0] - 1, i] = rxtemp[i];
}
}
}
5 運(yùn)行調(diào)試
系統(tǒng)硬件電路和軟件電路設(shè)計(jì)成功以后進(jìn)行聯(lián)合調(diào)試,通過現(xiàn)場總線RS485總線能夠?qū)崿F(xiàn)遠(yuǎn)程多點(diǎn)數(shù)據(jù)檢測和傳輸,能夠滿足實(shí)時檢測不同位置的溫濕度和可燃?xì)怏w濃度。
上位機(jī)程序經(jīng)調(diào)試無誤,運(yùn)行結(jié)果如圖4所示。
6 結(jié)語
該系統(tǒng)設(shè)計(jì)成熟以后,能夠?qū)崟r監(jiān)測各個點(diǎn)的溫濕度、可燃?xì)鉂舛茸兓惹闆r,從而可以廣泛的應(yīng)用于日常生活中,從而提供便利,解放勞動力。
收稿日期:2016-09-28
作者簡介:王樹梅(1981—),女,江蘇宿遷人,實(shí)驗(yàn)師,碩士,研究方向:電子信息工程類。