Diseño de simulación de detección y alarma de gas natural basado en STM32 (simulación + programa + explicación)

Diseño de simulación de alarma y detección de gas natural basado en STM32


Diagrama de simulación proteus 8.9

Compilador de programas: keil 5

Lenguaje de programación: lenguaje C

Número de diseño: C0081

Vídeo de demostración

Diseño de simulación de detección y alarma de gas natural y gas combustible basado en STM32.

1. Funciones principales

Función descriptiva:

1. Diseñar un diseño de alarma y detección de gas combustible (gas natural) utilizando el microcontrolador STM32 como núcleo de control;

2. Muestra la concentración de gas a través de la pantalla de cristal líquido LCD1602;

3. Puede configurar el ventilador para que se encienda automática o manualmente girando el interruptor. La luz indicadora se enciende en modo manual y se apaga en modo automático.

4. El modo manual controla el interruptor del ventilador a través de botones. En el modo automático, el ventilador se inicia automáticamente cuando se detecta que la concentración de gas es superior a 2,0 mg/L.

5. El timbre sonará cuando se detecte que la concentración de gas es superior a 2,0 mg/L.

Equipo de hardware principal: microcontrolador STM32F103

La siguiente es una visualización de esta información de diseño:

2. Simulación

Plan de diseño general

El propósito de este experimento es utilizar el convertidor avanzado de digital a analógico (ADC), la entrada y salida de uso general (GPIO) y los recursos del temporizador del microcontrolador STM32 para combinar de manera efectiva software y hardware para lograr AD en la entrada analógica natural. sensor de gas Identificación precisa de valores y visualización correcta de datos relevantes a través de la pantalla de cristal líquido 1602 (LCD1602). Además, también esperamos que el sistema pueda alarmar la concentración de gas a través de periféricos como zumbadores y ventiladores según valores de alarma preestablecidos.

En este experimento, vale la pena señalar que el software Proteus no tiene un sensor de concentración incorporado para gases nocivos como el gas natural. Por lo tanto, para simular cambios en la concentración de gas combustible, se utiliza un reóstato deslizante. Aunque este enfoque no se puede aplicar directamente al diseño de hardware real, es muy útil para comprender y probar el comportamiento básico del algoritmo. Para los usuarios que necesitan realizar un diseño físico, se recomienda realizar la depuración y modificación correspondientes en función del sensor real.

En general, este experimento proporciona un marco básico y muestra cómo utilizar el microcontrolador STM32 combinado con recursos como ADC, GPIO y temporizadores para recopilar y procesar señales simuladas de sensores de gas natural y dispositivos de visualización y alarma a través de la pantalla y alarma LCD1602. Aunque no se puede utilizar directamente en el diseño físico, es de gran valor para comprender y dominar los principios básicos y las aplicaciones de las tecnologías relacionadas.

Esta prueba se ve así:

Estado de ejecución de la simulación:

Después de iniciar la simulación, LCD1602 muestra la concentración de gas detectada en tiempo real y el valor medido se puede cambiar a través del reóstato deslizante. El modo de funcionamiento del ventilador se puede seleccionar mediante un interruptor. Si el interruptor está cerrado, el ventilador funciona en modo automático. Cuando la concentración de gas es superior al valor de alarma, el ventilador arranca. Cuando la concentración de gas es inferior al valor de alarma, el ventilador no gira. Si el ventilador está en modo manual, controle el interruptor del ventilador presionando el botón. El circuito de alarma del zumbador se inicia cuando la concentración de gas es mayor que el valor de alarma y se escucha un pitido de alarma, y ​​no se inicia cuando la concentración de gas es menor que el valor de alarma.

En la imagen siguiente, la concentración de gas detectada es de 1,5 mg/L, que es inferior al valor de alarma de 2,0 mg/L. El circuito del ventilador y del zumbador no funcionan.

imagen

La siguiente imagen detecta que la concentración de gas es de 2,0 mg/L, que es mayor o igual que el valor de la alarma. El timbre suena y el ventilador gira para simular la ventilación por extracción.

imagen

3. Procedimiento

El programa se abre con la versión keil5 mdk, si hay problemas al abrirlo, verifique la versión keil. El programa está escrito en la versión de la biblioteca de firmware y hay comentarios que se pueden combinar con la explicación y la comprensión.
código 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);
		}



	}
}




imagen

4. Lista de información y enlace de descarga.

0. Problemas de uso comunes y soluciones: ¡una lectura obligada! ! ! !

1. Programa fuente

2. Diagrama de simulación

3. Requisitos funcionales

4. Vídeo explicativo

Información del software de diseño Altium

Información del software KEIL

Información del software Proteo

Materiales de aprendizaje sobre microcontroladores.

Habilidades de defensa

Descripciones comunes para informes de diseño

Haga doble clic con el mouse para abrir y encontrar más Proyecto de graduación del curso de microcontrolador 51 STM32.url

imagen

Enlace de descarga de datos (en el que se puede hacer clic):

Supongo que te gusta

Origin blog.csdn.net/weixin_52733843/article/details/132503733
Recomendado
Clasificación