基于STM32的天然气煤气检测报警仿真设计(仿真+程序+讲解)

您所在的位置:网站首页 led仿真火焰壁炉原理图讲解 基于STM32的天然气煤气检测报警仿真设计(仿真+程序+讲解)

基于STM32的天然气煤气检测报警仿真设计(仿真+程序+讲解)

2024-07-11 02:49| 来源: 网络整理| 查看: 265

基于STM32的天然气煤气检测报警仿真设计 演示视频1.主要功能2.仿真3. 程序4. 资料清单&下载链接 仿真图proteus 8.9

程序编译器:keil 5

编程语言:C语言

设计编号:C0081

演示视频

基于STM32的天然气煤气可燃气体检测报警仿真设计

1.主要功能

功能说明:

1、以STM32单片机为控制核心设计可燃气体(天然气 煤气)检测报警设计;

2、通过液晶屏LCD1602显示气体浓度;

3、可以通过拨动开关设置自动或者手动开启风扇,手动模式指示灯亮,自动模式下模式指示灯灭。

4、手动模式通过按键控制风扇开关。自动模式下检测到气体浓度高于2.0mg/L风扇自动启动。

5、监测到气体浓度高于2.0mg/L蜂鸣器报警。

主要硬件设备:STM32F103单片机

以下为本设计资料展示:

2.仿真

整体设计方案

本实验的目的是利用STM32单片机的先进数字模拟转换器(ADC)、通用输入输出(GPIO)和定时器等资源,将软件和硬件有效地结合在一起,以实现对输入模拟天然气煤气传感器的AD值的准确识别,并通过1602液晶显示屏(LCD1602)正确显示相关数据。此外,我们还希望系统能够根据预设的报警值,通过蜂鸣器和风扇等外设进行气体浓度的报警。

在这个实验中,值得注意的是,Proteus软件并没有内置的天然气煤气等有害气体的浓度传感器。因此,为了模拟可燃气体浓度的变化,我们使用了滑动变阻器。虽然这种方式不能直接应用于实际硬件设计,但是对于理解和测试算法的基本行为是非常有用的。对于需要进行实物设计的用户,建议根据实际传感器进行相应的调试和修改。

总的来说,这个实验提供了一个基础的框架,展示了如何利用STM32单片机结合ADC、GPIO和定时器等资源,实现对模拟天然气煤气传感器信号的采集和处理,并通过LCD1602显示和报警装置进行展示和报警。虽然不能直接用于实物设计,但对于理解和掌握相关技术的基本原理和应用,具有很大的价值。

本测试如下所示:

仿真运行情况:

开始仿真后LCD1602实时显示检测到的气体浓度,可以通过滑动变阻器改变测量值。可通过开关选择风扇的运行模式。如果开关闭合,风扇是自动模式工作,气体浓度高于报警值时,风扇启动,低于报警值的时候,风扇不转动。如果风扇是手动模式,通过按键控制风扇的开关。蜂鸣器报警电路在气体浓度高于报警值时启动,有嘟嘟报警声,低于不启动。

下图检测到气体浓度是1.5mg/L,低于报警值2.0mg/L,风扇和蜂鸣器电路不工作。

img

下图检测到气体浓度是2.0mg/L,大于等于报警值,蜂鸣器报警,风扇转动模拟排气通风。

img

3. 程序

程序是用keil5 mdk版本打开的,如果打开有问题,核实下keil的版本。程序是固件库版本编写的,有注释可以结合讲解理解。 mian.c代码

#include "stm32f10x.h" #include "bsp-lcd1602.h" #include "delay.h" #include "sys.h" #include "adc.h" #define LED PAout(3) #define BEEP PAout(4) #define KEY1 PAin(8) #define KEY2 PAin(9) #define KEY3 PAin(10) void LED_Init(void) { GPIO_InitTypeDef GPIO_InitStructure; RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA, ENABLE); //使能P端口时钟 GPIO_InitStructure.GPIO_Pin = GPIO_Pin_3|GPIO_Pin_4; //LED0 端口配置 GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP; //推挽输出 GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; GPIO_Init(GPIOA, &GPIO_InitStructure); GPIO_SetBits(GPIOA,GPIO_Pin_3); //输出高 GPIO_SetBits(GPIOA,GPIO_Pin_4); //输出高 } void KEY_Init(void) { GPIO_InitTypeDef GPIO_InitStructure; //定义结构体变量 RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA,ENABLE); GPIO_InitStructure.GPIO_Pin=GPIO_Pin_8|GPIO_Pin_9|GPIO_Pin_10; GPIO_InitStructure.GPIO_Mode=GPIO_Mode_IPU; //上拉输入 GPIO_InitStructure.GPIO_Speed=GPIO_Speed_50MHz; GPIO_Init(GPIOA,&GPIO_InitStructure); } int main(void) { int a,b,c,d; float temp; int count; delay_init(); //延时函数初始化 LCD1602_Init(); ADC1_GPIO_Config(); ADC_Config(); LCD1602_ShowStr(2,0,"Qiti=0.0mg/L",13); LED_Init(); //风扇控制引脚 KEY_Init(); //按键初始化 while(1) { count++; if(count>5000){//用于计数,防止系统执行转换太频繁 count = 0; b=ADC_GetConversionValue(ADC1);//获取ADC的值 temp=(float)b*(3.4/4096);//换算ADC的值 a=temp/1; c=temp*10; d=c%10; LCD_ShowNum(7,0,a); LCD_ShowNum(9,0,d);//显示检测到的AD值 if(KEY3==0){//按键控制 if(temp>2) LED=1;//LED1是风扇控制引脚,1打开 0关闭 else LED=0; } else{ if(KEY1==0) LED=1; if(KEY2==0) LED=0; } if(temp>2) BEEP=0;//蜂鸣器报警值判断,BEEP==0蜂鸣器报警 1蜂鸣器关闭 else BEEP=1; delay_ms(10); } } }

img

4. 资料清单&下载链接

0、常见使用问题及解决方法–必读!!!!

1、源程序

2、仿真图

3、功能要求

4、讲解视频

Altium Designer 软件资料

KEIL软件资料

Proteus软件资料

单片机学习资料

答辩技巧

设计报告常用描述

鼠标双击打开查找更多51 STM32单片机课程毕业设计.url

img

资料下载链接(可点击):



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3