烟雾报警系统

  • 格式:pdf
  • 大小:887.60 KB
  • 文档页数:11
MQ-2 气体传感器对液化气、丙烷、氢气的灵敏度高,对天然气和其它可燃 蒸汽的检测也很理想。这种传感器可检测多种可燃性气体,是一款适合多种应用 的低成本传感器。
MQ-2 气敏元件的结构和外形如图 4 所示,由微型 AL2O3 陶瓷管、SnO2 敏 感层,测量电极和加热器构成的敏感元件固定在塑料或不锈钢制成的腔体内,加 热器为气敏元件提供了必要的工作条件。封装好的气敏元件有 6 只针状管脚,其 4 个用于信号取出,2 个用于提供加热电流。
//子优先级3
NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;
//IRQ通道使能
5
NVIC_Init(&NVIC_InitStructure); //根据指定的参数初始化VIC寄存器
//USART 初始化设置
USART_ART_BaudRate = bound;//一般设置为9600; USART_ART_WordLength = USART_WordLength_8b;//字长为8位 数据格式 USART_ART_StopBits = USART_StopBits_1;//一个停止位 USART_ART_Parity = USART_Parity_No;//无奇偶校验位 USART_ART_HardwareFlowControl = USART_HardwareFlowControl_None;//无硬件数据流控制 USART_ART_Mode = USART_Mode_Rx | USART_Mode_Tx; //收发 模式
RCC_APB2PeriphClockCmd(RCC_APB2Periph_USART1|RCC_APB2Periph_GPIOA|RCC_A PB2Periph_AFIO, ENABLE); //使能USART1,GPIOA时钟以及复用功能时钟
//USART1_TX PA.9 GPIO_InitStructure.GPIO_Pin = GPIO_Pin_9; //PA.9 GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP; //复用推挽输出 GPIO_Init(GPIOA, &GPIO_InitStructure);
DS18B20 测温原理如图 3 所示。图中低温度系数晶振的振荡频率受温度影响很
小,用于产生固定频率的脉冲信号送给计数器 1。高温度系数晶振随温度变化其
振荡率明显改变,所产生的信号作为计数器 2 的脉冲输入。计数器 1 和温度寄存
器被预置在-55℃所对应的一个基数值。计数器 1 对
低温度系数晶振产生的脉冲信号进行减法计数,当
OLED 显示屏幕可视角度大,并且能够节省电
能。
图 6 0.96 寸 OLED
3
(2) 硬件实物图
4.3 软件程序
(1)软件算法
图 7 系统实物图 开始
初始化
气体浓度
温度
OLED显示
a. 主函数
int main(void) {
u8 temp; delay_init(72); uart_init(9600);
图 10 报警灯变为红色
图 11 报警灯为绿色
图 12 OLED 实时显示
7
6. 总结及心得体会
通过本次实验,掌握了单片机串口通信的方法,对 SPI 通信也有了进一步了 解,对 AD 转换有了全新的认识,通过配置 DMA 有效位 CPU 减压。将微机原理, 电子测量原理,虚拟仪器技术等学科中学过的相关知识进一步得到了巩固,锻炼 了动手能力。
图 9 上位机程序
上位机与下位机通信的波特率为 9600,8 个数据位,1 个停止位。每次循 环,上位机需要向下位机发送“1”表示通信开始。当下位机接收到“1”时,向上位 机发送气体浓度值。上位机接收到气体浓度后在波形图表上显示,并与设定的警 戒浓度比较,当气体浓度低于警戒浓度时报警灯变为红色。
6
5. 实验数据及结果分析
是否接收到 1 ? 否 是
串口发送气体浓度 图 8 下位机流程图
//工作频率72MHz //初始化串口,波特率9600
4
NVIC_Configuration(); //中断初始化
Buzzer_Con(); //蜂鸣器初始化
DS18B20_Init(); //初始化DS18B20
ADC1_Init();
计数器 1 的预置值减到 0 时,温度寄存器的值将加
1,计数器 1 的预置将重新被装入,计数器 1 重新
开始对低温度系数晶振产生的脉冲信号进行计数,
如此循环直到计数器 2 计数到 0 时,停止温度寄存
器值的累加,此时温度寄存器中的数值即为所测温
度。斜率累加器用于补偿和修正测温过程中的非线
性,其输出用于修正计数器 1 的预置值。
//USART1_RX PA.10 GPIO_InitStructure.GPIO_Pin = GPIO_Pin_10; GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING;//浮空输入 GPIO_Init(GPIOA, &GPIO_InitStructure);
* 函数名:ADC1_GPIO_Config * 描述 :使能ADC1和DMA1的时钟,初始化PC.0 * 输入 : 无 * 输出 :无 * 调用 :内部调用 */ void ADC1_GPIO_Config(void) {
GPIO_InitTypeDef GPIO_InitStructure; /* Enable DMA clock */ RCC_AHBPeriphClockCmd(RCC_AHBPeriph_DMA1, ENABLE); //开启DMA时钟 RCC_APB2PeriphClockCmd(RCC_APB2Periph_ADC1 | RCC_APB2Periph_GPIOA, ENABLE);//开启ADC时钟 GPIO_InitStructure.GPIO_Pin = GPIO_Pin_1; GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AIN; GPIO_Init(GPIOA, &GPIO_InitStructure); }
串口命令
数字 信号
DS18B20 (测量温度)
图 1 系统整体框图
1
本系统由 STM32 最小系统、MQ-2 气体传感器、DS18B20 温度传感器、OLED 显示模块和 LabVIEW 上位机组成。采用的通信协议有 SPI、串口等。其中,单 片机与上位机之间通过串口通信互相收发数据,单片机与 OLED 之间采用 SPI 通 信协议。
4.2 硬件模块
(1)所用芯片与模块 a.STM32F103C8T6
STM32F103C8T6 就是基于 ARM Cortex-M3 内核的微型控制器,工作频率可 到达 72MHz,单周期乘法和硬件除法。具有 128K FLASH,64K ROM,2.0-3.6V 供电电压。内嵌 8MHz RC 振荡器,带校准的 32KHz RTC 振荡器。具有 12 位 ADC,DMA 控制器,3 个串口等。
南京邮电大学 自动化 学院
实验报告
实验名称: 烟雾报警系统
课程名称: 测控技术与仪器专业综合实验
所在专业: 测控技术与仪器
学生姓名:
朱永海
班级学号: B13050509
任课教师:
戎舟
2015 /2016 学年第 二 学期
0
摘要: 本系统采用 STM32F103C8T6 和 MQ-2 烟雾传感器模块,通过单片机自带的 12 位 ADC 转换器采集传感器两端的模拟电压来计算气体浓度,然后通过由 DMA 控制的串口发 送至上位机显示。STM32 ADC 单次转换时间小于 1ms,通过配置 DMA 通道和定时器采样, 有效的加快了系统整体速度。
//Usart1 NVIC 配置
NVIC_InitStructure.NVIC_IRQChannel = USART1_IRQn;
NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority=3 ;//抢占优先级3
NVIC_InitStructure.NVIC_IRQChannelSubPriority = 3;
//初始化ADC1
Face();
//OLED显示
delay_ms(500);
while(1)
{
temp=DS18B20_Get_Temp(); //读取温度值
ppm0=MQ_2();
//读取气体浓度值
display(temp,ppm0);
//显示
if(flag==1)
{
USART1_Cmd();
}
delay_ms(500);
图 2 STM32F103C8T6 实物
b.MQ-2 气体传感器模块 MQ-2 气体传感器所使用的气敏材料是在清洁空气中电导率较低的二氧化锡
(SnO2)。当传感器所处环境中存在可燃气体时,传感器的电导率随空气中可燃气 体浓度的增加而增大。使用简单的电路即可将电导率的变化转换为与该气体浓度 相对应的输出信号。
//延时500ms
Байду номын сангаас
}
}
b. 串口配置
void uart_init(u32 bound){
//GPIO端口设置
GPIO_InitTypeDef GPIO_InitStructure;
USART_InitTypeDef USART_InitStructure;
NVIC_InitTypeDef NVIC_InitStructure;
图 5 DS18B20
d.OLED 显示模块