MQ-2和DS18B20的火灾温度-烟雾报警系统设计,51单片机,附仿真、C代码、原理图和PCB等

本文围绕基于单片机的烟雾报警系统展开,选用MQ - 2烟雾传感器、DS18B20温度传感器及AT89C51单片机,介绍了系统组成、MQ - 2灵敏度特性等。还说明了仿真替代方法、结果分析及参数设置,最后分享了全套设计资料获取方式。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

设计要求

  1. 掌握51单片机的软、硬件原理及常规应用;
  2. 掌握MQ-2烟雾报警器的工作原理、制作及控制方法;
  3. 掌握DS18B20温度传感器的工作原理、制作及控制方法;
  4. 掌握ADC0832模数转换芯片的工作原理与使用方法;
  5. 设计一个基于单片机的烟雾报警系统,并对其的各种功能和指标进行测量、分析和总结。

系统概述
本设计选用MQ-2烟雾传感器、DS18B20温度传感器以及AT89C51单片机作为核心器件并与其他电子技术相结合,通过AT89C51单片机控制传感器对检测地点的烟雾、温度进行实时检测,并把检测结果进行数据信息处理,可以实现声光电一体化报警、浓度显示、温度显示等功能。

烟雾-温度报警系统的组成部分有:MQ-2烟雾信号采集电路、ADC0832模数转换电路、DS18B20温度信号采集电路、单片机控制电路、LCD显示电路、按键电路、继电器电路(在实际应用中,继电器电路可以用来控制电闸、喷淋设施和消防设施等)和声光报警电路。系统框架如下所示。

在这里插入图片描述
MQ-2灵敏度特性
烟雾传感器在最佳工作条件下,接触同一种烟雾,其电阻值RS随气体浓度变化的特性称之为灵敏度特性,用K表示。

K=RS/RO

式中,RS为烟雾传感器洁净空气条件下的电阻值,RS为烟雾传感器在一定浓度的检测烟雾中的电阻值。虽然对于不同的烟雾,器件灵敏度特性K的值也会各有差异,但是它们都遵循同一规律。

logRS=mlogC+n

式中,m为器件相对烟雾浓度变化的敏感性,又称烟雾分离能,对于烟雾,m值为1/2~1/3;C为检测烟雾的浓度。n为与检测烟雾,器件材料有关,并随测试温度和材料中有无增感剂而有所不同。(MQ-2传感器详细介绍请见论文)
在这里插入图片描述
设计说明
首先,需要说明的是:由于Proteus软件没有MQ-2烟雾传感器模型,仿真中用滑动变阻器代替。

MQ-2气体传感器内部结构电导率随着气体浓度的增大而增大,其电阻是电导率的倒数,所以电阻是随之减小的。其特性就相当于一个滑动变阻器。所以在仿真中用滑动变阻器替代。

而在实际运用中,原理图中,MQ-2接线方式如下图所示。
在这里插入图片描述
由于MQ-2输出电压与烟雾浓度不成线性关系,浓度大小需要根据上文计算公式计算出Rs/R0的比值,然后查灵敏度特性曲线表得出,具体操作方法请见器件资料文件夹中关于MQ-2的电压-浓度转换操作说明。
在这里插入图片描述
仿真为了简便该过程,将烟雾等级(Smoke)分为5档,其与MQ-2输出电压对应关系如下表所示。
在这里插入图片描述
仿真电路图
在这里插入图片描述
在这里插入图片描述
原理图及PCB
在这里插入图片描述
在这里插入图片描述
洞洞板实物
在这里插入图片描述
仿真结果分析
打开“火灾温度烟雾报警系统设计.DSN”仿真文件,双击单片机加载“报警.hex”文件,运行仿真,其结果如下所示。
在这里插入图片描述
从图中可以看出,LCD显示当前烟雾等级为3,小于设定的报警等级4;系统当前温度为29.8℃,在温度范围内(5~30℃);绿色LED灯点亮,指示系统处于正常工作状态下;继电器和蜂鸣器处于工作停止状态。

通过调节DS18B20传感器和RV3滑动变阻器上下红色箭头,改变温度大小或烟雾等级,使系统达到报警状态。此时,仿真结果如下3个图所示。
在这里插入图片描述
在这里插入描述
在这里插入图片描述
从以上3个报警状态可以看出,无论温度或烟雾是单独报警还是同时报警,系统动作都是一样的,即红色LED报警指示灯点亮,蜂鸣器鸣叫,继电器动作,达到声光电一体式报警动作。

可以通过“调整”、“调大”和“调小”按键,设置烟雾报警等级和温度报警上下限。按下“调整”键,进入烟雾报警等级设置,LCD光标闪烁,通过“调大”和“调小”键设置等级大小;设置完成好后,再次按下“调整”键,进入温度报警下限设置,同样操作。当3个参数都设置好后,按下“调整”键,即可退出系统设置。

本例中,我们设置烟雾报警等级为3,温度范围为20~60℃,结果如图所示。
在这里插入图片描述
当系统处于正常工作状态时,按下“呼叫”键,此时系统立刻进入报警状态:红色LED灯点亮,蜂鸣器鸣叫,继电器动作。呼叫键用于模拟系统失效或者出现紧急情况时,巡检人员手动操作直接报警。

分享的资源有
(1)基于MQ-2和DS18B20的火灾温度烟雾报警系统设计论文完整版;
(2)Keil C程序;
(3)Proteus仿真文件;
(4)开题报告和任务书;
(5)器件资料;
(6)原理图和PCB文件;
(7)元件清单;
(8)实物图;

全套资源如下
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
重要的事情说一遍!!!

获取基于MQ-2和DS18B20的火灾温度-烟雾报警系统设计全套设计资料!

请微信搜索关注我的公众号:交院小智

<think>好的,我现在需要回答用户关于MQ-2传感器与STM32F103C8T6的接线方法的问题。用户之前已经询问过关于多个传感器OLED显示的代码实现,现在具体到MQ-2的接线。首先,我要回顾之前的回答,确保信息的一致性。 根据引用[1],用户提到MQ-2MQ-7、MQ-135等传感器直接连接对应引脚即可,但具体引脚信息没有详细说明。引用[4]中提到MQ-2的AO口输出模拟电压,所以需要连接到STM32的ADC引脚。用户现在需要具体的接线方法,包括电源、地信号线。 首先,我需要确认MQ-2传感器的引脚定义。通常MQ-2有四个引脚:VCC、GND、DO(数字输出)、AO(模拟输出)。用户可能使用的是模拟输出,因为引用[4]中提到通过AO读取电压值。因此,AO应连接到STM32的ADC输入通道,比如PA0(ADC1_IN0),这在之前的回答中也有提到。 接下来,电源部分。STM32的VCC通常是3.3V,但MQ-2的工作电压可能为5V。需要确认MQ-2的规格,如果支持3.3V,可以直接连接;否则可能需要电平转换或使用外部5V电源,并共地。不过,引用[1]之前的回答中用户可能已经成功使用3.3V供电,所以可能直接连接VCC到3.3V。 DO引脚如果需要数字输出(比如阈值报警),可以连接到GPIO,但用户的问题集中在接线方法,可能主要关注模拟信号的读取,所以AO是重点。 然后,参考之前的回答,用户配置了MQ-2到ADC1_IN0(PA0),所以在接线表中需要明确这一点。同时,用户可能需要代码中ADC初始化的部分,比如在sensors.c中的MQ_ADC_Init函数配置ADC通道。 另外,引用[2]提到MQ-4的接线说明,可能结构类似,但具体引脚可能不同,但这里用户关注MQ-2,所以需确保信息准确。 最后,需要提醒用户校准注意事项,比如预热时间、电压与浓度的转换公式,以及可能的滤波处理,如引用[4]提到的电压范围。同时,确保ADC配置正确,包括时钟使能、通道配置、采样时间等。 总结,接线方法应包括VCC、GND、AO的连接,对应的STM32引脚,以及代码配置的要点,如ADC初始化、读取方法。可能还需要示例代码片段,展示如何读取MQ-2的数据并转换为浓度值,参考之前的回答中的MQ_Read函数。</think>根据引用内容并结合STM32F103C8T6硬件特性,MQ-2传感器与开发板的接线方法如下: ### 一、MQ-2传感器引脚说明 | 传感器引脚 | 功能描述 | |------------|----------| | VCC | 电源输入(5V/3.3V) | | GND | 接地 | | DO | 数字信号输出(阈值触发) | | AO | 模拟信号输出(0-3.3V) | ### 二、推荐接线方案 #### 方案1:模拟量采集(推荐) ``` MQ-2 STM32F103C8T6 ----------------------------- VCC → 3.3V(开发板3.3V输出) GND → GND(共地) AO → PA0(ADC1通道0)[^1][^4] DO → 悬空(不使用数字输出) ``` #### 方案2:数字量报警 ``` MQ-2 STM32F103C8T6 ----------------------------- VCC → 3.3V GND → GND DO → PA1(GPIO输入) AO → 悬空(仅使用数字输出) ``` ### 三、ADC配置代码(对应方案1) 在`sensors.c`中添加: ```c void MQ_ADC_Init(void) { ADC_InitTypeDef ADC_InitStructure; GPIO_InitTypeDef GPIO_InitStructure; // 使能ADC1GPIOA时钟 RCC_APB2PeriphClockCmd(RCC_APB2Periph_ADC1 | RCC_APB2Periph_GPIOA, ENABLE); // 配置PA0为模拟输入 GPIO_InitStructure.GPIO_Pin = GPIO_Pin_0; GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AIN; GPIO_Init(GPIOA, &GPIO_InitStructure); // ADC参数配置 ADC_InitStructure.ADC_Mode = ADC_Mode_Independent; ADC_InitStructure.ADC_ScanConvMode = DISABLE; ADC_InitStructure.ADC_ContinuousConvMode = DISABLE; ADC_InitStructure.ADC_ExternalTrigConv = ADC_ExternalTrigConv_None; ADC_InitStructure.ADC_DataAlign = ADC_DataAlign_Right; ADC_InitStructure.NbrOfChannel = 1; ADC_Init(ADC1, &ADC_InitStructure); ADC_Cmd(ADC1, ENABLE); ADC_ResetCalibration(ADC1); while(ADC_GetResetCalibrationStatus(ADC1)); ADC_StartCalibration(ADC1); while(ADC_GetCalibrationStatus(ADC1)); } uint16_t MQ2_ReadAnalog(void) { ADC_RegularChannelConfig(ADC1, ADC_Channel_0, 1, ADC_SampleTime_239Cycles5); ADC_SoftwareStartConvCmd(ADC1, ENABLE); while(ADC_GetFlagStatus(ADC1, ADC_FLAG_EOC) == RESET); return ADC_GetConversionValue(ADC1); } ``` ### 四、数据转换公式 根据引用[4]提供的电压范围: $$ 浓度值 = \frac{ADC值}{4095} \times 3.3V $$ 其中: - 0.1-0.3V:清洁空气 - 1.0-1.5V:轻微污染 - >3.0V:严重污染 ### 五、硬件连接示意图 ``` MQ-2 Sensor +-----------+ VCC --|VCC AO|---> PA0 GND --|GND DO|---> 悬空 +-----------+ ``` ### 六、注意事项 1. **预热要求**:传感器需通电预热20-30秒后数据才稳定[^2] 2. **电压匹配**:若使用5V供电需添加分压电路,避免损坏ADC 3. **滤波处理**:建议在PA0引脚与地之间并联104电容(0.1μF) 4. **抗干扰**:传感器与MCU之间导线长度不宜超过30cm ### 七、扩展应用 可结合引用[3]的报警实现方案,添加阈值报警功能: ```c #define MQ2_ALARM_THRESHOLD 2500 // 对应约2.0V if(MQ2_ReadAnalog() > MQ2_ALARM_THRESHOLD) { GPIO_SetBits(GPIOB, GPIO_Pin_8); // 触发蜂鸣器 OLED_ShowString(0,6,"ALARM!"); } ``` --相关问题-- 1. 如何校准MQ-2传感器的基准电压值? 2. STM32的ADC采集出现噪声干扰怎么解决? 3. 如何将MQ-2的模拟信号转换为实际气体浓度值?
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值