当前位置:   article > 正文

STM32单片机+MQ-2烟雾浓度传感器+OLED屏幕+蜂鸣器报警+烟雾浓度数据发送到串口调试助手+源代码_stm32+mq2

stm32+mq2

目录

一、MQ-2烟雾传感器介绍

二、MQ-2烟雾传感器测量气体浓度的基本原理

三、MQ-2烟雾传感器测量气体浓度的程序实现

四、串口打印数据

五、源代码

六、串口调试助手软件 

七、MQ-2烟雾浓度传感器原理图资料


一、MQ-2烟雾传感器介绍

      MQ-2烟雾传感器采用在清洁空气中电导率较低的二氧化锡(SnO2),属于表面离子式N型半导体。当MQ-2烟雾传感器在200到300摄氏度环境时,二氧化锡吸附空气中的氧,形成氧的负离子吸附,使半导体中的电子密度减少,从而使其电阻值增加。当与烟雾接触时,如果晶粒间界处的势垒收到烟雾的调至而变化,就会引起表面导电率的变化。利用这一点就可以获得这种烟雾存在的信息,烟雾的浓度越大,导电率越大,输出电阻越低,则输出的模拟信号就越大。MQ-2烟雾传感器的探测范围极其的广泛,常用于家庭和工厂的气体泄漏监测装置,适宜于液化气、苯、烷、酒精、氢气、烟雾等的探测。

MQ-2具有以下特点:

具有信号输出指示。
双路信号输出(模拟量输出及TTL电平输出)
TTL输出有效信号为低电平,当输出低电平时信号灯亮,可直接接单片机。
模拟量输出0~5V电压,浓度越高电压越高。
对液化气,天然气,城市煤气有较好的灵敏度。
具有长期的使用寿命和可靠的稳定性。
快速的响应恢复特性。


 图一 MQ-2烟雾传感器的外观图                         图二 MQ-2烟雾传感器的内部电路图

二、MQ-2烟雾传感器测量气体浓度的基本原理

      MQ-2烟雾传感器输出0~5V的测量信号电压,浓度越高电压越高。这样将MQ-2烟雾传感器的模拟输出信号管脚接到处理器的一个ADC(模数转换)管脚进行模数转换,得出MQ-2烟雾传感器信号管脚上输出的电压值。我们知道MQ-2烟雾传感器信号管脚上输出的电压值是与电阻成反比关系的,而电阻值的大小是与气体浓度呈一定的线性关系的。这样一来,我们就能通过测量MQ-2烟雾传感器的输出电压值推导得到气体的浓度。

                                           图三 MQ-2烟雾传感器气敏元件的灵敏度特性

图四 MQ-2烟雾传感器气敏元件的温湿度影响 

三、MQ-2烟雾传感器测量气体浓度的程序实现

      在我们的实际工程应用中,将MQ-2烟雾传感器的模拟信号输出管脚接到STM32F103C8T6的ADC管脚上(PA1管脚)。下面MQ2.c文件列出AD采样的相关代码:

  1. #include "MQ2.h"
  2. #include "OLED.h"
  3. #include "FMQ.h"
  4. #include <stdio.h>
  5. #include "Serial.h"
  6. u8 times;
  7. void Adc_Init()
  8. {
  9. GPIO_InitTypeDef GPIO_Initstructre;
  10. ADC_InitTypeDef ADC_InitStruct;
  11. RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA | RCC_APB2Periph_ADC1,ENABLE);
  12. RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA,ENABLE);
  13. GPIO_Initstructre.GPIO_Mode=GPIO_Mode_AIN;
  14. GPIO_Initstructre.GPIO_Pin=GPIO_Pin_1;
  15. GPIO_Initstructre.GPIO_Speed=GPIO_Speed_50MHz;
  16. GPIO_Init(GPIOA,&GPIO_Initstructre);
  17. GPIO_SetBits(GPIOA,GPIO_Pin_1);
  18. RCC_ADCCLKConfig(RCC_PCLK2_Div6);
  19. ADC_DeInit(ADC1);//شλADC1
  20. ADC_InitStruct.ADC_ContinuousConvMode = DISABLE;
  21. ADC_InitStruct.ADC_DataAlign=ADC_DataAlign_Right;
  22. ADC_InitStruct.ADC_ExternalTrigConv=ADC_ExternalTrigConv_None;
  23. ADC_InitStruct.ADC_Mode=ADC_Mode_Independent;
  24. ADC_InitStruct.ADC_NbrOfChannel = 1;
  25. ADC_InitStruct.ADC_ScanConvMode = DISABLE;
  26. ADC_Init(ADC1,&ADC_InitStruct);
  27. ADC_Cmd(ADC1,ENABLE);
  28. ADC_ResetCalibration(ADC1);
  29. while(ADC_GetResetCalibrationStatus(ADC1));
  30. ADC_StartCalibration(ADC1);
  31. while(ADC_GetCalibrationStatus(ADC1));
  32. }
  33. u16 Get_Adc(u8 ch)
  34. {
  35. ADC_RegularChannelConfig(ADC1,ch,1,ADC_SampleTime_239Cycles5);
  36. ADC_SoftwareStartConvCmd(ADC1,ENABLE);
  37. while(!ADC_GetFlagStatus(ADC1,ADC_FLAG_EOC));
  38. return ADC_GetConversionValue(ADC1);
  39. }
  40. u16 Get_Adc_Average(u8 ch,u8 times)
  41. {
  42. u32 temp_val=0;
  43. u8 t;
  44. for(t=0;t<times;t++)
  45. {
  46. temp_val+=Get_Adc(ch);
  47. Delay_ms(5);
  48. }
  49. return temp_val/times;
  50. }

下面MQ2.h文件列出函数声明的相关代码:

  1. #ifndef __MQ2_H
  2. #define __MQ2_H
  3. #include "stm32f10x.h"
  4. #include "Delay.h"
  5. void Adc_Init(void);
  6. u16 Get_Adc(u8 ch);
  7. u16 Get_Adc_Average(u8 ch,u8 times);
  8. void MQ2_Check(void);
  9. #endif

下面主函数main.c文件列出主要框架相关代码:

  1. #include "stm32f10x.h"
  2. #include "delay.h"
  3. #include "OLED.h"
  4. #include "OELD_Data.h"
  5. #include "FMQ.h"
  6. #include "Serial.h"
  7. #include "MQ2.h"
  8. u16 MQ2_Value;//adc值
  9. float temp_one;//电压值
  10. int main(void)
  11. {
  12. Adc_Init();
  13. OLED_Init();
  14. mfq_Init();
  15. Serial_Init();
  16. OLED_ShowChinese(0, 47, "烟雾浓度:");
  17. OLED_ShowString(112,47,"%",OLED_8X16);
  18. OLED_Update();
  19. while(1)
  20. {
  21. MQ2_Value=Get_Adc_Average(ADC_Channel_1,10)*100/4095;//模拟烟雾浓度的值
  22. //temp_one =(float) MQ2_Value/4096*3.3;
  23. //OLED_ShowNum(47,0,temp_one,5,OLED_8X16);
  24. OLED_ShowNum(80,47,MQ2_Value,3,OLED_8X16);
  25. OLED_Update();
  26. fmq(MQ2_Value);
  27. printf("烟雾浓度= %d ",MQ2_Value);
  28. Serial_SendString("%\r\n");
  29. }
  30. }

四、串口打印数据

五、源代码

《STM32单片机+MQ-2烟雾浓度传感器+OLED屏幕+蜂鸣器报警+烟雾浓度数据发送到串口调试助手》源代码资源-CSDN文库

六、串口调试助手软件 

串口调试助手-keil5调试工具资源-CSDN文库

七、MQ-2烟雾浓度传感器原理图资料

MQ-2烟雾浓度传感器原理图、模块资料资源-CSDN文库

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/你好赵伟/article/detail/802608
推荐阅读
相关标签
  

闽ICP备14008679号