基于单片机的矿井环境监测系统设计毕业设计Word格式.docx
- 文档编号:19225825
- 上传时间:2023-01-04
- 格式:DOCX
- 页数:79
- 大小:5.56MB
基于单片机的矿井环境监测系统设计毕业设计Word格式.docx
《基于单片机的矿井环境监测系统设计毕业设计Word格式.docx》由会员分享,可在线阅读,更多相关《基于单片机的矿井环境监测系统设计毕业设计Word格式.docx(79页珍藏版)》请在冰豆网上搜索。
A/D转换模块:
ADC0809;
显示模块:
LCD1602;
无线模块:
NRF2401。
方案一的系统设计结构图如图2.2所示。
图2.2方案一设计结构图
2.2.2方案一的设计方法
设计系统主要分为两大部分。
矿井下,温湿度传感器和甲烷浓度传感器进行数据采集,之后将采集到的数据通过模数转换电路并送入单片机(监测系统)中进行处理,在矿井下显示实时监测的结果,并将处理后的数据通过无线发射装置发送至地面的控制中心。
地面控制中心通过无线接收装置收到处理后的实时监测数据。
通过控制系统实时显示矿井下各项数据指标之外,还将数据与设定的安全值进行比较,超出或者低于安全值范围,报警模块发出相应的声光报警。
信息采集模块主要采集温度、湿度以及甲烷浓度三个指标,分别通过DHT11温湿度传感器、MQ-4甲烷浓度传感器实现。
温湿度传感器DHT11采集到矿井下空气温湿度,向单片机输出一组数字信号,经单片机处理。
MQ-4通过对甲烷等气体的浓度感应输出模拟信号,经模数转换芯片转换成8位数字信号输入单片机。
单片机将采集到的信号还原摄氏温度、相对湿度以及甲烷体积浓度,通过LCD1602显示屏进行显示,同时通过无线射频芯片NRF2401发送和接收数据。
2.2.3方案一的优缺点
方案一的设计思路具有廉价、易于实现的优点。
传感器DHT11、MQ-4,显示屏LCD1602以及无线模NRF2401都是市面上常见而且价格低廉的器件。
缺点在于传感器精度不高,显示屏显示空间有限,无线传输距离较短。
2.3方案二的论述
2.3.1方案二的设计结构图
系统由数据采集模块、模拟/数字转换模块、显示模块、报警模块、无线模块以及无线中继模块组成。
温湿度传感器DHT21(又名AMS2301)、甲烷浓度传感器MQ-4;
OLED;
NRF905;
无线中继模块:
NRF905。
方案二的设计结构图如图2.3所示。
图2.3方案二设计结构图
2.3.2方案二的设计方法
设计系统主要分为三大部分。
矿井下,与方案一类似。
单片机(监测系统)中进行处理,在矿井下显示实时监测的结果,并将处理后的数据通过无线发射装置发送至中继系统。
根据矿井下环境复杂程度,设置N个中继器用来接继无线信号,直至发送到地面控制中心。
各器件的工作方式同方案一。
温湿度传感器改采用DHT11的升级芯片DHT21;
显示模块使用OLED屏幕;
无线模块改使用NRF905芯片。
2.3.3方案二的优缺点
方案二针对方案一的缺点进行了改进。
方案二的设计思路对于温湿度的采集精度更高,在显示模块显示空间更大,并且无线传输距离大大增长。
增加的中继系统更加符合复杂矿井环境下的无线传输要求。
方案二相比方案一,制造成本高。
2.4方案的选择
将方案一与方案二进行如下对比。
方案二比方案一更加精确和适用。
在无线模块的选择上。
NRF2401更适应于室内短距离传输。
905系列具有NRF905B、NRF905SE、NRF905RD、RFC-30系列等模块,可以达到最低100米,最远3000米的直线可视传输距离。
因此选用方案二来实现本系统的设计。
这里选用NRF905芯片进行无线传输,根据不同的复杂矿井环境,可以选择不同的905模块。
该系统目前以NRF905SE模块进行设计,可以达到300米的直线可视距离。
下表2.1为两种方案的比较。
表2.1两种方案的详细比较
对比项目
方案一
方案二
温度
DHT11精确度1℃;
有效量程0~50℃
DHT21精确度0.1℃;
有效量程-40~80℃
湿度
DHT11精确度1RH%
DHT21精确度0.1RH%
甲烷浓度
MQ-4经ADC0809转换成8位数字信号,精确度40ppm;
有效量程0~10000ppm
显示屏
LCD1602显示2行16列;
需要11个I/O口
OLED显示4行;
需要4个I/O口
无线传输
NRF2401工作在2.4Ghz,1Mkbps,短距传输
NRF905工作在433Mhz,50kbps,传输距离长
中继器
无
延长传输距离
器件成本
以上传感器各取一件和20元左右
以上传感器各取一件和65元左右
3.系统软件设计
程序分为三主体:
监测系统、中继系统、控制系统。
监测系统由OLED显示程序,DHT21温湿度读取程序,A/D转换程序,NRF905无线发送程序以及主程序组成。
中继系统由OLED显示程序,NRF905接收和发送程序以及主程序组成。
控制系统由OLED显示程序,NRF905接收程序,报警程序,键盘控制程序以及主程序组成。
3.1系统流程分析
单片机通过主程序的逻辑顺序调用各个其他程序。
首先,单片机进行初始化。
各系统中OLED模块、A/D转换模块,NRF905模块完成初始化。
之后,DHT21采集温湿度信号,MQ-4输出模拟信号经由ADC0809转换输入单片机,OLED将单片机处理后的温湿度和甲烷浓度进行显示。
由无线模块发送到中继系统再发送到控制系统,由控制系统单片机进行处理,若超出限额则启动声光报警,若未超出限额则返回等待无线模块接收新的数据,重新进行比较。
监控系统主程序解析:
voidmain()
{
LCD_Init();
//OLED初始化
init();
//ADC0809初始化,其中包括开中断和定时器
LCD_P8x16Str(10,0,"
Beingwarmup"
);
//显示“正在预热”
delayqidong(600);
//MQ-4需要30秒预热,其中包括预热读秒的显示程序
LCD_CLS();
//OLED清屏
CSH905();
//这里是对905进行了配置
Peizhi905();
//单片机对905的配置寄存器进行配置
SetTxMode();
LCD_P8x16Str(98,0,"
N"
//在屏幕上显示尚未发送标志
while
(1)//无限循环
RH();
//从DHT21读取温湿度数据并处理
AD();
//从ADC0809读取模数转换后的甲烷浓度
TxPacket();
//通过905发送数据
TxBuf[0]=DHT2shishu;
//发送五组数组:
分别为温度整数部分
TxBuf[1]=DHT2xiaoshu;
//温度小数部分
TxBuf[2]=DHT1shishu;
//湿度整数部分
TxBuf[3]=DHT1xiaoshu;
//湿度小数部分
TxBuf[4]=AD_DATA[0];
//未经过处理的甲烷数字信号
Delay905(500);
//延时函数等待发送完毕
S"
//在屏幕上显示发送成功标志
display();
//OLED显示程序
}
中继系统主程序解析:
TxBuf[0]=RxBuf[0];
//将接收到的五组数据发送出去
TxBuf[1]=RxBuf[1];
TxBuf[2]=RxBuf[2];
TxBuf[3]=RxBuf[3];
TxBuf[4]=RxBuf[4];
SetRxMode();
/
if(DR)//如果DR管脚收到高电平,说明发射完毕
RxPacket();
//905开始接收数据
beep_LED();
//声光报警程序
3.2温湿度采集及处理函数
温湿度采集模块使用传感器DHT21。
这是一款通过对空气中温湿度采样并输出数字信号的传感器。
DHT21模块具有三个管脚,分别接5V直流电源,接地以及数据输出口。
数据输出口采用单总线数据格式与单片机进行通讯。
通过输出四十位的高低电平信号来传输温湿度数据,每一位响应时间在80-100微秒左右。
数据格式:
40bit数据=16bit湿度数据+16bit温度数据+8bit校验码
温湿度数据分高8位数据和低8位数据组成。
校验码是前32位数据之和。
单片机将DHT21总线拉低500us并拉高后,DHT21会立即响应。
下图为单片机向DHT21发送开始信号,DHT21响应的工作过程。
图3.2DHT21响应单片机开始信号的工作过程
对应程序解析:
voidRH(void)//定义读取温湿度函数
{
DHT=0;
//单片机拉低,对应上图“主机拉低500us”
Delay905(5);
//保持拉低状态,这里采用模糊延时,不一定需要精准
DHT=1;
//拉高主线
yanshijingque_10us();
//以下为保持拉高状态。
这里需要精确延时
if(!
DHT)//判断DHT21是否响应,对应上图“DHT21响应信号80us”
U8FLAG=2;
while((!
DHT)&
&
U8FLAG++);
//等待响应
while((DHT)&
//等待响应
COM();
//运行数据接收函数
Shidu_gao=U8comdata;
//读出湿度高8位
Shidu_di=U8comdata;
//读出湿度低8位
wendu_gao=U8comdata;
//读出温度高8位
wendu_dip=U8comdata;
//读出温度低8位
Xiaoyanma=U8comdata;
//读出8为校验码
Xiaoyanma=(Shidu_gao+Shidu_di+wendu_gao+wendu_di);
//校验
if(U8temp==U8checkdata_temp)//核对校验码
if
(1)
{
DHT1shishu=Wendu_gao;
//导出湿度,方便后面显示模块调用
DHT1xiaoshu=Wendu_di;
U8T_data_H=Wendu_gao;
Wendu_di=Wendu_di;
DHTData2=wendu_gao;
DHTData2<
<
=8;
DHTData2|=Wendu_di;
//获得完整的温度
if(DHTData2&
0x8000)//判断温度是否为负值
flagtemp=1;
DHTData2&
=0x7FFF;
}
DHT2shishu=DHTData2/10;
//导出温度,方便后面显示模块调用
DHT2xiaoshu=DHTData2%10;
U8checkdata=U8checkdata_temp;
DHT21开始传输数据后,梅1bit数据都是由一个低电平间隙和一个高电平组成。
共40bit数据,当最后1bit传输完毕时,单总线将被再次拉低50us,随后释放被拉高。
voidCOM(void)//定义数据接收函数
unsignedchari;
for(i=0;
i<
8;
i++)//循环八次,接收一组数据
U8FLAG=2;
while((!
//等待低电平间隙,对应上图“1bit开始”
Delay_10us();
//等到30us,这里需要精确延时
U8temp=0;
//等待30us后我们预设值为0
if(DHT)U8temp=1;
//如果依然为高电平,可以确定数据值为1
while((DHT)&
//等待拉高结束
if(U8FLAG==1)break;
U8comdata<
=1;
//保存读到的数值,并移位
U8comdata|=U8temp;
3.3MQ-4甲烷浓度传感器以及A/D转换程序
MQ-4气体传感器适用与对甲烷、氢气、一氧化碳、烟雾等可燃气体的检测,对不同气体有不同的灵敏特性。
MQ-4传感器通过对不同浓度气体的感应输出不同的电压值。
经过模数转换输入单片机。
这里采用ADC0809模数转换芯片。
芯片能将0~5V的模拟信号转换为8位的数字信号。
D0~D7管脚连接单片机I/O口输出数字信号。
START启动转换,高电平有效。
EOC可以查看芯片转换状态,用于单片机查询转换状态。
OE管脚向单片机发出读取数据的请求,高电平有效。
CLK管脚输入500Khz脉冲的时钟信号,每一次脉冲完成一个转换。
ADDA管脚用来选择通道。
相关程序解析:
voidcsh()
EA=1;
//开总中断
TMOD=0x02;
//读TMOD进行设定
TH0=216;
//利用T0中断产生CLK信号(256-T)
TL0=216;
TR0=1;
//启动定时器T0
ET0=1;
ST=0;
//先将ADC0809的ST和OE端口拉低
OE=0;
voidt0(void)interrupt1using0//利用定时器T0产生中断
CLK=~CLK;
//生成脉冲信号
voidAD()//定义AD转换程序
ADDCS=0;
//选择通道IN0
delay2(10);
ST=1;
//启动AD转换
while(EOC==0);
//等模数转换过程结束
OE=1;
//OE管脚向单片机发送读取数据请求
CH4=P3;
//保存读取到的值,范围(0~256)
单片机读取到转换后的数字信号之后,根据MQ-4气体传感器对甲烷气体的灵敏特性,还原甲烷气体浓度。
下图为灵敏度特性曲线。
由图可见,甲烷气体在纯净空气中的浓度在1000ppm左右。
根据特性曲线,我们粗略的认为单片机读取到的数字信号乘以系数40就是空气中的实际甲烷浓度。
LCD_P8x16Str(0,6,"
CH4:
"
//显示“CH4”
Dis_Num(60,6,AD_DATA[0]*40,4);
//显示数字,这里对数字信号乘系数变成实际浓度
LCD_P8x16Str(92,6,"
ppm"
//显示单位字符串“ppm”
3.4NRF905无线发送/中继/接收程序
NRF905芯片具有较强的抗干扰能力,适合工业控制场合。
工作在频段433Mhz。
NRF905通过TRX_CE和TX_EN管脚,配置芯片掉电模式(低功耗)、Standby模式、RX(接收)模式和TX(发射)模式。
通过5个Spi接口来调整状态寄存器、射频配置寄存器、发送地址寄存器、发送数据寄存器和接收数据寄存器。
VoidCSH905()//
{
CSN=1;
SCK=0;
DR=1;
//DR拉高,这里用于查看接收或发射数据完成
AM=1;
//AM拉高,用于地址匹配
PWR_UP=1;
//芯片上电
TRX_CE=0;
//设置为standby模式
TX_EN=0;
}
voidpeizhi905(void)//定义NRF905配置程序
uchari;
CSN=0;
//Spi使能,向Spi写命令
SpiWrite(WC);
//写放配置命令
for(i=0;
RxTxConf.n;
i++)//写放配置字
SpiWrite(RxTxConf.buf[i]);
CSN=1;
//停止Spi
voidSpiWrite(ucharbyte)//定义Spi写操作程序
DATA_BUF=byte;
//将需要发送的数据写入缓存
i++)
{
if(flag)//将DATA_BUF.7放在数据线上
MOSI=1;
else
MOSI=0;
//主机读操作
SCK=1;
//拉高时钟线
DATA_BUF=DATA_BUF<
1;
SCK=0;
//拉低时钟线
}
ucharSpiRead(void)//定义Spi读操作程序
i++)/
if(MISO)
flag1=1;
flag1=0;
//拉低时钟线
returnDATA_BUF;
//DATA_BUF为接收到的完整数据
voidTxPacket(void)//定义发送程序
//Spi使能,向Spi写命令
SpiWrite(WTP);
//写放配置命令
32;
i++)
SpiWrite(TxBuf[i]);
//写入32位发送数据
Delay905
(1);
SpiWrite(WTA);
//写数据至地址寄存器
4;
i++)//写入4字节地址
SpiWrite(RxTxConf.buf[i+5]);
//关闭S
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 基于 单片机 矿井 环境监测 系统 设计 毕业设计