基于STM32的天然气煤气检测报警仿真设计(仿真+程序+讲解) |
您所在的位置:网站首页 › led仿真火焰壁炉原理图讲解 › 基于STM32的天然气煤气检测报警仿真设计(仿真+程序+讲解) |
基于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,风扇和蜂鸣器电路不工作。 下图检测到气体浓度是2.0mg/L,大于等于报警值,蜂鸣器报警,风扇转动模拟排气通风。 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); } } } 4. 资料清单&下载链接0、常见使用问题及解决方法–必读!!!! 1、源程序 2、仿真图 3、功能要求 4、讲解视频 Altium Designer 软件资料 KEIL软件资料 Proteus软件资料 单片机学习资料 答辩技巧 设计报告常用描述 鼠标双击打开查找更多51 STM32单片机课程毕业设计.url 资料下载链接(可点击): |
今日新闻 |
推荐新闻 |
CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3 |