尧图网站建设 尧图网络
  • 首页
  • 关于我们
  • 服务项目
  • 案例展示
  • 建站流程
  • 资讯中心
  • 联系我们
首页/资讯中心/详情

基于STM32和MQ-5传感器实现天然气浓度检测并通过串口显示

基于STM32和MQ-5传感器实现天然气浓度检测并通过串口显示
📅 发布时间:2026/6/22 1:31:57

一、硬件

1. 电路连接原理图

STM32F103C8T6       MQ-5传感器       USB-TTL模块
-------------------------------
3.3V          →  VCC
GND           →  GND
PA0 (ADC_IN0) →  AOUT
PA9 (USART1_TX) →  RX
PA10 (USART1_RX)→  TX

2. 关键参数配置

参数 值/配置说明
ADC分辨率 12位(0-4095)
采样率 100Hz
串口波特率 115200bps
负载电阻(RL) 2.0kΩ(通过电位器调节)
预热时间 ≥20秒

二、软件

1. ADC配置(HAL库)

// 初始化ADC
void MX_ADC1_Init(void) {ADC_HandleTypeDef hadc1;__HAL_RCC_ADC1_CLK_ENABLE();hadc1.Instance = ADC1;hadc1.Init.ScanConvMode = DISABLE;hadc1.Init.ContinuousConvMode = DISABLE;hadc1.Init.DiscontinuousConvMode = DISABLE;hadc1.Init.ExternalTrigConv = ADC_SOFTWARE_START;hadc1.Init.DataAlign = ADC_DATAALIGN_RIGHT;hadc1.Init.NbrOfConversion = 1;ADC_ChannelConfTypeDef sConfig = {0};sConfig.Channel = ADC_CHANNEL_0;sConfig.Rank = 1;sConfig.SMP = ADC_SAMPLETIME_239CYCLES_5;HAL_ADC_Init(&hadc1);HAL_ADC_ConfigChannelAttenuation(&hadc1, ADC_CHANNEL_0, ADC_ATTENUATION_11DB);
}// 读取ADC值
uint16_t Read_ADC(void) {HAL_ADC_Start(&hadc1);while(HAL_ADC_PollForConversion(&hadc1, 100) != HAL_OK);return HAL_ADC_GetValue(&hadc1);
}

2. 串口通信配置

// 串口初始化
void MX_USART1_UART_Init(void) {huart1.Instance = USART1;huart1.Init.BaudRate = 115200;huart1.Init.WordLength = UART_WORDLENGTH_8B;huart1.Init.StopBits = UART_STOPBITS_1;huart1.Init.Parity = UART_PARITY_NONE;huart1.Init.Mode = UART_MODE_TX;HAL_UART_Init(&huart1);
}// 发送数据函数
void Send_Data(uint16_t adc_val) {char buffer[32];float voltage = adc_val * 3.3f / 4095.0f;float concentration = 10.0f * pow(voltage / 0.4f, 3.0f); // 校准公式sprintf(buffer, "Gas: %.2f ppm\r\n", concentration);HAL_UART_Transmit(&huart1, (uint8_t*)buffer, strlen(buffer), 100);
}

3. 主程序框架

int main(void) {HAL_Init();MX_ADC1_Init();MX_USART1_UART_Init();while(1) {uint16_t adc_val = Read_ADC();Send_Data(adc_val);HAL_Delay(1000); // 每秒采集一次}
}

三、关键校准公式

MQ-5浓度计算公式(需根据实际传感器校准):

浓度(ppm)=10×(0.4Vout)3
  • V_out:传感器输出电压(0-3.3V)
  • 0.4V:清洁空气中的基准电压

四、串口助手显示示例

Gas: 25.67 ppm
Gas: 30.12 ppm
Gas: 185.44 ppm  ← 超过安全阈值

五、扩展功能实现

1. 报警功能

#define ALARM_THRESHOLD 100.0fvoid Check_Alarm(float conc) {if(conc > ALARM_THRESHOLD) {HAL_GPIO_WritePin(GPIOB, GPIO_PIN_0, GPIO_PIN_SET); // 点亮LEDSend_Data(0xFFFF); // 发送报警标志} else {HAL_GPIO_WritePin(GPIOB, GPIO_PIN_0, GPIO_PIN_RESET);}
}

2. OLED显示(SSD1306)

void Display_OLED(float conc) {OLED_Clear();OLED_ShowString(0,0,"Gas Concentration:");OLED_ShowNum(0,2,conc,1,16); // 显示整数部分OLED_ShowString(0,4,"ppm");
}

六、完整工程结构

├── Core/
│   ├── Inc/
│   │   ├── main.h
│   │   ├── adc.h
│   │   └── usart.h
│   └── Src/
│       ├── main.c
│       ├── adc.c
│       └── usart.c
├── Drivers/
│   ├── CMSIS/
│   └── STM32F1xx_HAL_Driver/
└── Middlewares/└── USB_Device/

七、参考

  1. MQ-5数据手册(关键参数:Rs-R0曲线、响应时间)
  2. 代码 用stm32和mq-5传感器测量天然气浓度并可以用串口助手显示出来 www.youwenfan.com/contentcnj/71922.html
  3. STM32F103参考手册(ADC配置章节)
  4. 《STM32实战开发指南》第6章(传感器接口设计)

相关新闻

  • 如何在linux驱动程序保存文件
  • 2025 年最新推荐!高性价比自动售卖机厂家推荐榜:无人 / 智能 / 文创 / 盲盒 / 食品售货机优选品牌全解析
  • 2025 年火花机厂家最新推荐榜:涵盖新型 / 镜面 / 数控 / 五轴联动等多类型设备,优质厂家精选助力企业精准选购

最新新闻

  • Linux proc-modules文件格式与m_show回调
  • 酒泉市金塔县2026年黄金回收本地靠谱门店 白银回收+铂金回收门店指南TOP5排行榜 优选门店汇总及电话地址推荐 - 大熊猫898989
  • Qwen3-VL架构深度解析:Interleaved-MRoPE与DeepStack技术原理
  • 终极B站视频解析指南:3分钟掌握免费获取高清视频地址的完整教程
  • 开源AI视频分析神器:5分钟自动看懂视频内容,解放你的双手
  • 告别Selenium:PyAutoGUI图像识别实现跨平台桌面自动化测试

日新闻

  • 2026速览惠州叛逆青少年学校前十大排名名单出炉 - 武汉中职最新信息发布
  • 2026上饶白蚁消杀哪家好?15年本土2大权威白蚁防治公司推荐(金盾虫控/青蚁卫士) - 我叫一
  • 天龙八部单机版终极数据管理工具:5个技巧快速掌握游戏数据编辑

周新闻

  • Visual C++运行库修复终极指南:5分钟快速解决Windows软件启动错误
  • 手把手教你构建统计局地区经济数据爬虫:从环境搭建到数据持久化全指南
  • 2026多Agent深度解析:用AI团队替代单一模型,四种架构实战落地

月新闻

  • 【总结】入门篇:50句话让你记住架构核心概念
  • WeChatMsg技术方案解析:实现Mac微信数据自主管理的完整解决方案
  • WeChatMsg:革新性微信数据备份方案,打造你的专属数字记忆库

关于尧图

  • 公司简介
  • 团队介绍
  • 企业文化
  • 荣誉资质

服务项目

  • 定制开发
  • 电商建站
  • UI 设计
  • 运维服务

快速链接

  • 案例展示
  • 建站流程
  • 常见问题
  • 资讯中心

联系方式

  • 📍北京市朝阳区互联网产业园 A 座 10 层
  • 📞400-888-8888
  • ✉️contact@rkmt.cn
  • 🕐周一至周日 9:00-21:00

© 2024 北京尧图网络科技有限公司 版权所有 | 京 ICP 备 XXXXXXXX 号