毛敏
(陜西國防工業(yè)職業(yè)技術(shù)學(xué)院,陜西 西安 710300)
工業(yè)迅速發(fā)展,石油、天然氣等作為重要的能源或者化工原料普遍地應(yīng)用到我們生活當(dāng)中,在為我們帶來生活便利的同時,也給我們帶來一些潛在的危險[1-2]。
本文設(shè)計了一種可燃?xì)怏w遠(yuǎn)程實時監(jiān)測系統(tǒng),可以測量空氣中可燃?xì)怏w濃度,可以做到在事故發(fā)生前采取有效措施,從而避免事故的發(fā)生,保護(hù)人民的人身和財產(chǎn)安全。
Arduino是一塊基于開放源代碼的硬件平臺,包括一塊具有簡單I/O功能的電路板及一套程序開發(fā)軟件,目前可支持Windows、UNIX、Linux、Mac OS等操作系統(tǒng)[3]5。
虛擬儀器LabVIEW有常規(guī)儀器的控制面板,采用可視化的圖形編程語言和平臺,在計算機(jī)屏幕上建立圖形化的軟面板來替代常規(guī)的傳統(tǒng)儀器面板,LabVIEW為Arduino開發(fā)了專門的接口工具包,把這個工具包和Arduino軟件結(jié)合起來,通過LabVIEW軟件可實現(xiàn)對Arduino控制板的控制或交換數(shù)據(jù)[4]。
在整個系統(tǒng)中,LabVIEW編寫的軟件作為上位機(jī),負(fù)責(zé)讀取由Arduino Uno微處理器發(fā)送的可燃?xì)怏w濃度并進(jìn)行顯示,根據(jù)設(shè)置的可燃?xì)怏w濃度上限發(fā)出警報,并通過網(wǎng)絡(luò)模塊W5100[3]238向下位機(jī)Arduino Uno微處理器發(fā)送指定電器的狀態(tài)切換命令。
圖1 系統(tǒng)框圖
Arduino Uno微處理器作為下位機(jī),負(fù)責(zé)讀取和傳輸氣體傳感器MQ-2檢測到的可燃?xì)怏w濃度值,可燃?xì)怏w濃度數(shù)據(jù)通過網(wǎng)絡(luò)模塊W5100上傳至LabVIEW上位機(jī)軟件進(jìn)行顯示;Arduino Uno微處理器通過網(wǎng)絡(luò)模塊W5100讀取上位機(jī)的命令,進(jìn)而控制固態(tài)繼電器的閉合和斷開,實現(xiàn)指定電器的打開或關(guān)閉[5]。系統(tǒng)框圖如圖1所示。
通過網(wǎng)絡(luò)模塊W5100,實現(xiàn)Arduino Uno 微處理器與LabVIEW的無線連接,氣體傳感器MQ-2[6]與Arduino Uno 微處理器構(gòu)成硬件平臺,氣體傳感器MQ-2輸出的濃度值經(jīng)Arduino Uno 微處理器處理后,通過網(wǎng)絡(luò)模塊W5100傳送到上位機(jī),LabVIEW 軟件編寫VI函數(shù),在LabVIEW前面板實時顯示濃度值, 并設(shè)置濃度上限,當(dāng)可燃?xì)怏w濃度過高則發(fā)出報警,并通過網(wǎng)絡(luò)模塊W5100向下位機(jī)發(fā)出命令,控制固態(tài)繼電器的閉合和斷開,完成指定電器的打開或關(guān)閉,實現(xiàn)LabVIEW 軟件與Arduino控制板遠(yuǎn)程交互式通信。
1.1.1氣體傳感器MQ-2
MQ-2是一種氣體電阻控制型氣敏器件,所使用的氣敏材料是在清潔空氣中電導(dǎo)率較低的二氧化錫(SnO2)。當(dāng)傳感器所處環(huán)境中存在可燃?xì)怏w時,傳感器的電導(dǎo)率隨空氣中可燃?xì)怏w濃度的增加而增大。MQ-2氣體傳感器對液化氣、丙烷、氫氣的靈敏度高,對天然氣和其它可燃蒸汽的檢測也很理想。
1.1.2ArduinoUno微處理器
Arduino Uno 微處理器系統(tǒng)是一個基于開放原始代碼的軟硬件平臺,體積小巧,功能強(qiáng)大,適用于讀取溫濕度傳感器信號,可與上位機(jī)通訊,制作交互式產(chǎn)品,該系統(tǒng)包括硬件(Arduino電子板) 和軟件(Arduino IDE)兩部分。
1.1.3硬件連接
網(wǎng)絡(luò)模塊W5100與Arduino Uno控制板連接,W5100配置一個網(wǎng)絡(luò)地址:192.168.1.177,通過網(wǎng)線與計算機(jī)網(wǎng)卡連接,將計算機(jī)的網(wǎng)卡地址配置成192.168.1.175,W5100與計算機(jī)組成一個小的局域網(wǎng),用于網(wǎng)絡(luò)數(shù)據(jù)的發(fā)送與接收。
MQ-2的信號線接入Arduino Uno板的A0端口,電源線接入Arduino Uno板上的+5 V電壓端口,地線接入Arduino Uno板上的GND端口。
將固態(tài)繼電器的控制端接至Arduino Uno控制板上的Digital 3端口,固態(tài)繼電器的另一端在接需要控制電器的開關(guān)上。
1.2.1LabVIEW程序設(shè)計
LabVIEW編寫的軟件[7]負(fù)責(zé)讀取Arduino Uno發(fā)送的濃度值并進(jìn)行顯示,根據(jù)設(shè)置的濃度上限發(fā)出警報,通過網(wǎng)絡(luò)模塊W5100向下位機(jī)Arduino Uno微處理器發(fā)送指定電器的狀態(tài)切換命令。
圖2 前面板
(1)前面板設(shè)計
LabVIEW前面板包含可燃?xì)怏w濃度顯示,濃度警戒線設(shè)置,停止按鈕用于整個程序的終止。前面板如圖2所示。mA
(2)程序框圖設(shè)計
采用事件結(jié)構(gòu)+超時結(jié)構(gòu)來實現(xiàn)測量和控制兩部分,在測量中使用條件結(jié)構(gòu)+枚舉的狀態(tài)機(jī)來實現(xiàn)可燃?xì)怏w濃度數(shù)據(jù)的讀取。程序框圖如圖3所示。
圖3 程序框圖
1.2.2Arduino程序設(shè)計
Arduino Uno程序讀取MQ-2傳感器的濃度數(shù)據(jù),并處理成字節(jié)數(shù)據(jù),通過網(wǎng)絡(luò)模塊W5100上傳給上位機(jī);Arduino Uno程序通過網(wǎng)絡(luò)模塊W5100讀取上位機(jī)的命令,進(jìn)而控制固態(tài)繼電器的閉合和斷開,實現(xiàn)指定電器的打開或關(guān)閉。程序如下:
#include
#defineDHTTYPE DHT11
#definegas_Command 0x81
#definehumidity_Command 0x83
#definetemp_Command 0x82
#defineSW1_ON_Command 0x11
#defineSW1_OFF_Command 0x10
#include
#include
bytemac[] = { 0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED };
IPAddress ip(192,168,1,177);
EthernetServer server(8000);
DHT dht(2, DHTTYPE);
bytecomdata[3]={0};
voidtest_do_data(void);
int SW1=3;
floathif ;
int st;
void setup()
{
Ethernet.begin(mac, ip);
server.begin();
pinMode(SW1, OUTPUT);
}
void loop()
{
int i ;
EthernetClient client = server.available();
if (client) {
while (client.connected()) {
if (client.available()) {
for(i=0;i<3;i++)
{
comdata[i] =client.read();
delay(2);
}
test_do_data();
}
}
client.stop();
}
}
voidtest_do_data()
{
if(comdata[0] == 0x55)
{
if(comdata[1] == 0xAA)
{
switch (comdata[2])
{
casetemp_Command:
hif=dht.readTemperature();
server.print(hif,2);
break;
casehumidity_Command:
hif=dht.readHumidity();
server.print(hif,2);
break;
caseSW1_ON_Command:
digitalWrite(SW1, HIGH);
break;
caseSW1_OFF_Command:
digitalWrite(SW1, LOW);
break;
}
}
}
}
Arduino UNO的TXD、RXD指示燈不斷閃爍, 連續(xù)采集可燃?xì)怏w濃度數(shù)據(jù),測試結(jié)果由前面板圖2顯示,當(dāng)前濃度值顯示為515。
為了驗證系統(tǒng)的實時性, 開啟可燃?xì)怏w設(shè)備,前面板可燃?xì)怏w濃度數(shù)值持續(xù)增大,從前面板可以看到: 濃度值已升高至702,程序設(shè)計中濃度大于600時會閃爍報警指示燈提醒用戶注意,并通過網(wǎng)絡(luò)模塊W5100向下位機(jī)Arduino UNO發(fā)送指定電器的狀態(tài)切換命令控制固態(tài)繼電器的閉合和斷開,實現(xiàn)指定電器的打開或關(guān)閉。
本文結(jié)合網(wǎng)絡(luò)模塊W5100、LabVIEW軟件和Arduino UNO控制器設(shè)計并實現(xiàn)了可燃?xì)怏w濃度的數(shù)據(jù)采集系統(tǒng),該系統(tǒng)具有遠(yuǎn)距離、實時性強(qiáng)、測量精度高、靈敏度高的優(yōu)點(diǎn)。
[1] 黃俊霖,董潔,吳垣春,等.環(huán)境參數(shù)監(jiān)測系統(tǒng)設(shè)計[J].電子科技,2013,26(4):53-54.
[2] 劉竹琴,白澤生.一種高精度可燃?xì)怏w檢測報警器設(shè)計[J].傳感器與微系統(tǒng),2013,32(7):71-73.
[3] 陳呂洲.Arduino程序設(shè)計基礎(chǔ)[M]. 北京:北京航空航天大學(xué)出版社,2015.
[4] 于崇梓.Arduino開發(fā)實戰(zhàn)指南(LabVIEW卷)[M]. 北京: 機(jī)械工業(yè)出版社,2014.
[5] 修金鵬.Arduino與LabVIEW互動設(shè)計[M].北京:清華大學(xué)出版社,2014.
[6] 何偉剛,李政林,章帆,等.基于ZigBee的煤礦井下無線傳感器節(jié)點(diǎn)設(shè)計[J]. 現(xiàn)代電子技術(shù),2017,40(2):122-124.
[7] 胡仁喜,高海賓.LabVIEW2010虛擬儀器從入門到精通[M].北京: 機(jī)械工業(yè)出版社,2012.