⭐概述
MQ-7 是一种一氧化碳(CO)气体传感器模块,广泛应用于家庭和工业环境中,用于检测空气中的一氧化碳浓度。它基于半导体氧化物传感器技术,通过在加热条件下测量传感器表面的电阻变化来检测一氧化碳的存在。
模块特点:
- 高灵敏度:对一氧化碳气体具有高灵敏度,能够检测低至10 ppm的CO浓度。
- 快速响应时间:能够在几秒钟内响应气体浓度的变化。
- 长寿命:模块使用寿命长,可在多种环境条件下稳定工作。
- 低成本:相对其他类型的气体传感器,MQ-7具有较低的成本。
- 容易使用:与微控制器系统容易集成,输出为模拟信号,可通过ADC转换为数字信号供进一步处理。
工作原理:
MQ-7 模块通过内置的加热器电路和传感器电阻来检测一氧化碳。当空气中的一氧化碳浓度升高时,传感器表面的电阻会降低,从而改变输出的电压信号。通过测量该电压信号,便可计算出环境中一氧化碳的浓度。
典型应用:
- 家庭安全系统中的一氧化碳报警器
- 工业气体检测
- 车内空气质量监测系统
- 便携式气体检测仪
这个模块通常用于家庭或工业环境中的一氧化碳泄漏检测,确保空气质量和人身安全。
⭐实物图
⭐模块代码
#include "adc.h"
#include "delay.h"
//初始化ADC
//这里我们仅以规则通道为例
//我们默认将开启通道0~3
void Adc_Init(void)
{
ADC_InitTypeDef ADC_InitStructure;
GPIO_InitTypeDef GPIO_InitStructure;
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA |RCC_APB2Periph_ADC1 , ENABLE ); //使能ADC1通道时钟
RCC_ADCCLKConfig(RCC_PCLK2_Div6); //设置ADC分频因子6 72M/6=12,ADC最大时间不能超过14M
//PA0:光照强度
// //PA1:烟雾浓度 MQ2
//PA4:CO浓度 MQ7
//PA5:空气质量 MQ135
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_1|GPIO_Pin_4;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AIN; //模拟输入引脚
GPIO_Init(GPIOA, &GPIO_InitStructure);
ADC_DeInit(ADC1); //复位ADC1
ADC_InitStructure.ADC_Mode = ADC_Mode_Independent; //ADC工作模式:ADC1和ADC2工作在独立模式
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数据右对齐
ADC_InitStructure.ADC_NbrOfChannel = 1; //顺序进行规则转换的ADC通道的数目
ADC_Init(ADC1, &ADC_InitStructure); //根据ADC_InitStruct中指定的参数初始化外设ADCx的寄存器
ADC_Cmd(ADC1, ENABLE); //使能指定的ADC1
ADC_ResetCalibration(ADC1); //使能复位校准
while(ADC_GetResetCalibrationStatus(ADC1)); //等待复位校准结束
ADC_StartCalibration(ADC1); //开启AD校准
while(ADC_GetCalibrationStatus(ADC1)); //等待校准结束
// ADC_SoftwareStartConvCmd(ADC1, ENABLE); //使能指定的ADC1的软件转换启动功能
}
//获得ADC值
//ch:通道值 0~3
u16 Get_Adc(u8 ch)
{
//设置指定ADC的规则组通道,一个序列,采样时间
ADC_RegularChannelConfig(ADC1, ch, 1, ADC_SampleTime_239Cycles5 ); //ADC1,ADC通道,采样时间为239.5周期
ADC_SoftwareStartConvCmd(ADC1, ENABLE); //使能指定的ADC1的软件转换启动功能
while(!ADC_GetFlagStatus(ADC1, ADC_FLAG_EOC ));//等待转换结束
return ADC_GetConversionValue(ADC1); //返回最近一次ADC1规则组的转换结果
}
u16 Get_Adc_Average(u8 ch,u8 times)
{
u32 temp_val=0;
u8 t;
for(t=0;t<times;t++)
{
temp_val+=Get_Adc(ch);
delay_ms(5);
}
return temp_val/times;
}
⭐获取更多资料
我用夸克网盘分享了「1 MQ-7.zip」,点击链接即可保存。打开「夸克APP」,无需下载在线播放视频,畅享原画5倍速,支持电视投屏。
链接:https://pan.quark.cn/s/871444e7f8d1
提取码:VUxB