【STM32-HAL库】MQ2烟雾传感器使用(STM32F407ZET6)

MQ2可燃气体传感器介绍


MQ2是一种广谱气体传感器,能够检测多种可燃气体和烟雾。它是一种低成本、高灵敏度的传感器,广泛应用于家庭和工业环境中的气体监测。

原理


MQ2传感器的工作原理基于金属氧化物半导体(MOX)技术。当传感器暴露于目标气体中时,这些气体会与传感器上的氧化物发生化学反应,导致传感器的电阻发生变化。

  1. 加热过程:传感器内置加热元件,用于加热氧化物。
  2. 吸附与反应:可燃气体被氧化物吸附,并与之发生化学反应。
  3. 电阻变化:反应导致传感器的电阻发生变化,变化的程度与气体浓度成正比。

特点

  • 广谱检测:能够检测多种可燃气体,如LPG、丙烷、丁烷、甲烷、酒精、烟雾等。
  • 高灵敏度:对低浓度的可燃气体有较好的响应。
  • 简单的驱动电路:只需要一个比较简单的电路即可驱动。
  • 长寿命:在正常条件下,传感器的使用寿命较长。
  • 低成本:相对于其他类型的气体传感器,MQ2的成本较低。

注意事项

  • 预热时间:使用前需要预热一段时间,通常为20分钟,以确保传感器稳定工作。
  • 环境因素:避免高湿度、高浓度的硫化氢和氯化氢环境,这些可能会影响传感器的性能和寿命。
  • 校准:为了获得准确的读数,需要定期校准传感器。
  • 使用寿命:传感器的灵敏度会随时间降低,需要定期更换。
  • 清洁:保持传感器的清洁,避免灰尘和污染物的积累。
  • 温度影响:避免将传感器暴露在极端温度下,这可能会损害传感器或影响其性能。

ADC介绍


STM32微控制器系列包含多种型号,大多数型号都配备了模拟数字转换器(Analog-to-Digital Converter,简称ADC)。ADC是微控制器中用于将模拟信号转换为数字信号的核心组件,这对于处理来自外部世界的模拟信号(如温度、压力、声音等)至关重要。

作用

  • 信号转换:将连续的模拟信号转换为离散的数字信号,以便微控制器可以处理。
  • 数据采集:用于读取模拟传感器的数据,如温度传感器、光敏电阻、电位计等。
  • 模拟输入:可以读取外部模拟信号或者内部信号,如微控制器的内部温度传感器。
  • 电压测量:测量电源电压或者电路中某点的电压。

注意事项

  1. 分辨率和精度:STM32的ADC分辨率通常为12位或更多,选择合适的ADC模式和配置对于获得所需的精度至关重要。
  2. 采样时间:设置合适的采样时间以保证ADC能够准确地读取模拟信号。采样时间太短可能导致精度下降,太长则会影响转换速度。
  3. 参考电压:ADC的转换结果是基于参考电压的,确保参考电压的稳定性和准确性对于获得准确的转换结果非常重要。
  4. 通道配置:正确配置ADC通道,确保所选通道与实际连接的模拟信号相对应。
  5. 触发源:可以选择软件触发或硬件触发(如定时器)来启动ADC转换,根据应用需求选择合适的触发方式。
  6. 中断和DMA:使用中断服务程序(ISR)或直接内存访问(DMA)来处理ADC转换完成后的数据,可以减少CPU的负担,提高系统效率。
  7. 电源和噪声:确保ADC的电源干净且稳定,避免噪声干扰,可能需要滤波电路来提高测量精度。
  8. 校准:STM32微控制器通常支持ADC校准功能,通过校准可以改善ADC的线性度和精度。
  9. 温度影响:温度变化可能会影响ADC的性能,特别是在高精度应用中,需要注意环境温度对ADC的影响。
  10. 连续转换与单次转换:根据应用需求选择连续转换模式或单次转换模式,连续转换模式适用于需要连续监测模拟信号的场景。

本教程只使用简单的ADC读取MQ2烟雾传感器的模拟信号

一、新建工程

不会新建工程可以参考我的新建工程系列教程

stm32-HAL库+cubeMX新建工程教程(以F103C8T6为例)https://blog.****.net/qq_39150957/article/details/136637881?fromshare=blogdetail&sharetype=blogdetail&sharerId=136637881&sharerefer=PC&sharesource=qq_39150957&sharefrom=from_link【STM32-HAL库】立创梁山派新建工程并点灯(GD32F470ZGT6)cubeMX+HAL库+keil5https://blog.****.net/qq_39150957/article/details/136637881?fromshare=blogdetail&sharetype=blogdetail&sharerId=136637881&sharerefer=PC&sharesource=qq_39150957&sharefrom=from_link【STM32-HAL库】立创梁山派天空星版新建工程并点灯(GD32F407VET6)https://blog.****.net/qq_39150957/article/details/137161558?fromshare=blogdetail&sharetype=blogdetail&sharerId=137161558&sharerefer=PC&sharesource=qq_39150957&sharefrom=from_link

二、ADC配置

如图配置ADC,本教程所使用的是ADC1的通道1,可以根据自己需求配置

查看引脚,由此可知,ADC1的通道1所使用的是PA1引脚,请记住这个引脚

三、开启串口

可以参考我的文章,配置串口教程以及如何重定向串口。重定向串口之后即可直接使用【printf】函数直接向串口发送数据

【STM32-HAL库】串口配置、printf函数重定向https://blog.****.net/qq_39150957/article/details/136638229?fromshare=blogdetail&sharetype=blogdetail&sharerId=136638229&sharerefer=PC&sharesource=qq_39150957&sharefrom=from_link

四、编写代码

在main函数中声明一个局部变量,用于存放读取的传感器数值



  /* USER CODE BEGIN 1 */
    
    //声明变量
    uint32_t ADC_Value;
	
  /* USER CODE END 1 */


在主循环中放入以下代码


  while (1)
  {
    /* USER CODE END WHILE */

    /* USER CODE BEGIN 3 */
		
		
		

		
        HAL_ADC_Start(&hadc1);    
        HAL_ADC_PollForConversion(&hadc1,1);
        ADC_Value = HAL_ADC_GetValue(&hadc1);
        printf("value = %1.3f%% \r\n",ADC_Value*100.0f/4096);


  }

五、硬件连接

我所使用的是usart1,且无引脚复用等问题,所以我的引脚接法如下

CH340串口 STM32F407ZET6
RX PA9
TX PA10

我所使用的是ADC1的通道1,且无引脚复用等问题,所以我的引脚接法如下

MQ2烟雾传感器模块 STM32F407ZET6
A0 PA1

六、效果演示

当我用打火机放气并靠近MQ2烟雾传感器时。会出现如下结果

上一篇:建筑资质应该怎么选?


下一篇:网络带宽对于服务器的影响