基于Arduino和LabVIEW远程可燃气体监测系统
2018-01-12毛敏
毛敏
(陕西国防工业职业技术学院,陕西 西安 710300)
0 引 言
工业迅速发展,石油、天然气等作为重要的能源或者化工原料普遍地应用到我们生活当中,在为我们带来生活便利的同时,也给我们带来一些潜在的危险[1-2]。
本文设计了一种可燃气体远程实时监测系统,可以测量空气中可燃气体浓度,可以做到在事故发生前采取有效措施,从而避免事故的发生,保护人民的人身和财产安全。
Arduino是一块基于开放源代码的硬件平台,包括一块具有简单I/O功能的电路板及一套程序开发软件,目前可支持Windows、UNIX、Linux、Mac OS等操作系统[3]5。
虚拟仪器LabVIEW有常规仪器的控制面板,采用可视化的图形编程语言和平台,在计算机屏幕上建立图形化的软面板来替代常规的传统仪器面板,LabVIEW为Arduino开发了专门的接口工具包,把这个工具包和Arduino软件结合起来,通过LabVIEW软件可实现对Arduino控制板的控制或交换数据[4]。
1 系统设计
在整个系统中,LabVIEW编写的软件作为上位机,负责读取由Arduino Uno微处理器发送的可燃气体浓度并进行显示,根据设置的可燃气体浓度上限发出警报,并通过网络模块W5100[3]238向下位机Arduino Uno微处理器发送指定电器的状态切换命令。
图1 系统框图
Arduino Uno微处理器作为下位机,负责读取和传输气体传感器MQ-2检测到的可燃气体浓度值,可燃气体浓度数据通过网络模块W5100上传至LabVIEW上位机软件进行显示;Arduino Uno微处理器通过网络模块W5100读取上位机的命令,进而控制固态继电器的闭合和断开,实现指定电器的打开或关闭[5]。系统框图如图1所示。
1.1 硬件设计
通过网络模块W5100,实现Arduino Uno 微处理器与LabVIEW的无线连接,气体传感器MQ-2[6]与Arduino Uno 微处理器构成硬件平台,气体传感器MQ-2输出的浓度值经Arduino Uno 微处理器处理后,通过网络模块W5100传送到上位机,LabVIEW 软件编写VI函数,在LabVIEW前面板实时显示浓度值, 并设置浓度上限,当可燃气体浓度过高则发出报警,并通过网络模块W5100向下位机发出命令,控制固态继电器的闭合和断开,完成指定电器的打开或关闭,实现LabVIEW 软件与Arduino控制板远程交互式通信。
1.1.1气体传感器MQ-2
MQ-2是一种气体电阻控制型气敏器件,所使用的气敏材料是在清洁空气中电导率较低的二氧化锡(SnO2)。当传感器所处环境中存在可燃气体时,传感器的电导率随空气中可燃气体浓度的增加而增大。MQ-2气体传感器对液化气、丙烷、氢气的灵敏度高,对天然气和其它可燃蒸汽的检测也很理想。
1.1.2ArduinoUno微处理器
Arduino Uno 微处理器系统是一个基于开放原始代码的软硬件平台,体积小巧,功能强大,适用于读取温湿度传感器信号,可与上位机通讯,制作交互式产品,该系统包括硬件(Arduino电子板) 和软件(Arduino IDE)两部分。
1.1.3硬件连接
网络模块W5100与Arduino Uno控制板连接,W5100配置一个网络地址:192.168.1.177,通过网线与计算机网卡连接,将计算机的网卡地址配置成192.168.1.175,W5100与计算机组成一个小的局域网,用于网络数据的发送与接收。
MQ-2的信号线接入Arduino Uno板的A0端口,电源线接入Arduino Uno板上的+5 V电压端口,地线接入Arduino Uno板上的GND端口。
将固态继电器的控制端接至Arduino Uno控制板上的Digital 3端口,固态继电器的另一端在接需要控制电器的开关上。
1.2 软件设计
1.2.1LabVIEW程序设计
LabVIEW编写的软件[7]负责读取Arduino Uno发送的浓度值并进行显示,根据设置的浓度上限发出警报,通过网络模块W5100向下位机Arduino Uno微处理器发送指定电器的状态切换命令。
图2 前面板
(1)前面板设计
LabVIEW前面板包含可燃气体浓度显示,浓度警戒线设置,停止按钮用于整个程序的终止。前面板如图2所示。mA
(2)程序框图设计
采用事件结构+超时结构来实现测量和控制两部分,在测量中使用条件结构+枚举的状态机来实现可燃气体浓度数据的读取。程序框图如图3所示。
图3 程序框图
1.2.2Arduino程序设计
Arduino Uno程序读取MQ-2传感器的浓度数据,并处理成字节数据,通过网络模块W5100上传给上位机;Arduino Uno程序通过网络模块W5100读取上位机的命令,进而控制固态继电器的闭合和断开,实现指定电器的打开或关闭。程序如下:
#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;
}
}
}
}
2 测试结果分析
Arduino UNO的TXD、RXD指示灯不断闪烁, 连续采集可燃气体浓度数据,测试结果由前面板图2显示,当前浓度值显示为515。
为了验证系统的实时性, 开启可燃气体设备,前面板可燃气体浓度数值持续增大,从前面板可以看到: 浓度值已升高至702,程序设计中浓度大于600时会闪烁报警指示灯提醒用户注意,并通过网络模块W5100向下位机Arduino UNO发送指定电器的状态切换命令控制固态继电器的闭合和断开,实现指定电器的打开或关闭。
3 结束语
本文结合网络模块W5100、LabVIEW软件和Arduino UNO控制器设计并实现了可燃气体浓度的数据采集系统,该系统具有远距离、实时性强、测量精度高、灵敏度高的优点。
[1] 黄俊霖,董洁,吴垣春,等.环境参数监测系统设计[J].电子科技,2013,26(4):53-54.
[2] 刘竹琴,白泽生.一种高精度可燃气体检测报警器设计[J].传感器与微系统,2013,32(7):71-73.
[3] 陈吕洲.Arduino程序设计基础[M]. 北京:北京航空航天大学出版社,2015.
[4] 于崇梓.Arduino开发实战指南(LabVIEW卷)[M]. 北京: 机械工业出版社,2014.
[5] 修金鹏.Arduino与LabVIEW互动设计[M].北京:清华大学出版社,2014.
[6] 何伟刚,李政林,章帆,等.基于ZigBee的煤矿井下无线传感器节点设计[J]. 现代电子技术,2017,40(2):122-124.
[7] 胡仁喜,高海宾.LabVIEW2010虚拟仪器从入门到精通[M].北京: 机械工业出版社,2012.