Diseño de simulación de alarma de pantalla LCD1602 de detección de calidad del aire basado en STM32 (simulación + programa + explicación)

este diseño

Diseño de simulación de alarmas y detección de calidad del aire basado en STM32 (simulación + programa + explicación)


Diseño de simulación de alarmas y detección de calidad del aire basado en STM32 (simulación + programa + explicación)

Diagrama de simulación proteus 8.9

Compilador de programas: keil 5

Lenguaje de programación: lenguaje C

Número de diseño: C0084

1. Funciones principales

Función descriptiva:

1. Utilice STM32el microcontrolador y MQ-135el núcleo de control para diseñar la detección de la calidad del aire y el diseño de alarma;

2. LCD1602La calidad del aire se muestra en la pantalla LCD y en la computadora host del puerto serie, MV representa el valor de detección y ALM representa el valor de alarma;

3. El valor de la alarma ALM de calidad del aire se puede configurar presionando el botón.

4. Cuando la calidad del aire monitoreada es mayor que el valor de alarma, 蜂鸣器el circuito de alarma se enciende y suena la alarma.

5. De forma predeterminada, la alarma sonora sonará cuando la calidad del aire sea superior a 200 ppm.

Equipos de hardware principales:STM32F103单片机

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

2. Simulación

Plan de diseño general

Este experimento utiliza el ADC, GPIO, temporizador y otros recursos del microcontrolador STM32 para combinar orgánicamente el software y el hardware, de modo que el sistema pueda identificar correctamente la entrada del valor AD al sensor de calidad del aire simulado y el LCD1602 pueda mostrarlo correctamente. y el zumbador se puede mostrar de acuerdo con los valores de alarma de calidad del aire. Cabe señalar que Proteus no tiene sensores de concentración de aire como el MQ-135. Este diseño utiliza un reóstato deslizante para simular cambios en la calidad del aire y no se puede utilizar directamente en el diseño físico. Si es necesario, se debe depurar de acuerdo con la física. objeto.

Esta prueba se ve así:

Estado de ejecución de la simulación:

Después de iniciar la simulación, LCD1602 muestra la calidad del aire detectada en tiempo real y el valor medido se puede cambiar a través del reóstato deslizante. La concentración del valor de la alarma se puede configurar presionando el botón, presione el botón de configuración para ingresar al modo de configuración, aumente el valor de la alarma mediante la configuración + y disminuya el valor de la alarma mediante la configuración -. El circuito de alarma sonora se inicia cuando la calidad del aire es superior al valor de la alarma y se escucha un pitido de alarma, y ​​no se inicia cuando la calidad del aire es inferior al valor de la alarma.

Este diseño utiliza un zumbador electromagnético. El zumbador electromagnético consta de un oscilador, una bobina electromagnética, un imán, un diafragma vibratorio y una carcasa. Después de encender la alimentación, la corriente de la señal de audio generada por el oscilador pasa a través de la bobina electromagnética, lo que hace que la bobina electromagnética genere un campo magnético. El diafragma vibratorio vibra periódicamente y produce sonido bajo la interacción de la bobina electromagnética y el imán. Por lo tanto, se requiere una cierta corriente para activarlo. La salida de corriente del pin de E/S del microcontrolador es pequeña. La salida de nivel TTL del microcontrolador básicamente no puede controlar el zumbador, por lo que es necesario agregar un circuito de amplificación de corriente. El electrodo positivo del zumbador está conectado a la fuente de alimentación VCC (+5 V), y el electrodo negativo del zumbador está conectado al colector C del triodo. La base B del triodo está controlada por el pin BEEP del microcontrolador. después de pasar a través de la resistencia limitadora de corriente. Cuando la salida BEEP es baja Cuando BEEP emite un nivel alto, el triodo QS se apaga, no fluye corriente a través de la bobina y el zumbador no suena; cuando BEEP emite un nivel alto, el El triodo se enciende, de modo que la corriente del zumbador forma un bucle y emite un sonido.

La siguiente imagen muestra que la calidad del aire es 176, que es inferior al valor de alarma de 200, y el circuito del timbre no funciona.

imagen

La siguiente imagen detecta que el índice de calidad del aire es 204, que es mayor o igual al valor de alarma. El transistor se enciende y el timbre suena.imagen

int main(void)
{
    
    
  /* USER CODE BEGIN 1 */
	ADC_ChannelConfTypeDef sConfig = {
    
    0};  //建立sConfig结构体
	char str[20];  //字符串的存放数组
	uint32_t adcv; //存放ADC转换结果
	float temp;
	set_flag = 0;


  /* USER CODE END 1 */

  /* MCU Configuration--------------------------------------------------------*/

  /* Reset of all peripherals, Initializes the Flash interface and the Systick. */
  HAL_Init();

  /* USER CODE BEGIN Init */
	sConfig.Rank = ADC_REGULAR_RANK_1;
	sConfig.SamplingTime = ADC_SAMPLETIME_1CYCLE_5;   //采样周期为1.5个周期
  /* USER CODE END Init */

  /* Configure the system clock */
  SystemClock_Config();

  /* USER CODE BEGIN SysInit */

  /* USER CODE END SysInit */

  /* Initialize all configured peripherals */
  MX_GPIO_Init();
  MX_ADC1_Init();
  MX_USART1_UART_Init();
  MX_TIM3_Init();
  /* USER CODE BEGIN 2 */
	LCD_Init();  //初始化LCD1602
	HAL_TIM_Base_Start_IT(&htim3);//开启定时器3
//	LCD_ShowString(0,0,dis_str);
  /* USER CODE END 2 */

  /* Infinite loop */
  /* USER CODE BEGIN WHILE */
  while (1)
  {
    
    
		sConfig.Channel = ADC_CHANNEL_1;   //选择通道1
		HAL_ADC_ConfigChannel(&hadc1, &sConfig);  //选择ADC1的通道道1
		HAL_ADC_Start(&hadc1);										//启动ADC1
		HAL_ADC_PollForConversion(&hadc1, 10);		//等待ADC1转换结束,超时设定为10ms
		adcv = HAL_ADC_GetValue(&hadc1);					//读取ADC1的转换结果
		
		
		temp=(float)adcv*(4.0/4095)*100;		
	
		sprintf(str,"%4.0fppm",temp);
		LCD_ShowString(0,0,"MV:");	
		LCD_ShowString(0,4,str);	
	  HAL_UART_Transmit(&huart1, (uint8_t *)&"AL=", 3, 10);  //串口1发送字符串,数组长度为12,超时10ms
		HAL_UART_Transmit(&huart1, (uint8_t *)str, 6, 10);		 //串口1发送字符串,数组长度为5,超时10ms
		HAL_UART_Transmit(&huart1, (uint8_t *)&"\n\r", 2, 10); //串口1发送字符串,数组长度为2,超时10ms	
		
		if(set_flag){
    
    //设置模式
			sprintf(str,"%4.0fppm^ ",warming_val);
			LCD_ShowString(1,0,"ALM:");	
			LCD_ShowString(1,4,str);
		}else{
    
    
			sprintf(str,"%4.0fppm  ",warming_val);
			LCD_ShowString(1,0,"ALM:");	
			LCD_ShowString(1,4,str);			
		}
		
	  HAL_UART_Transmit(&huart1, (uint8_t *)&"ALM=", 4, 10);  //串口1发送字符串,数组长度为12,超时10ms
		HAL_UART_Transmit(&huart1, (uint8_t *)str, 6, 10);								//串口1发送字符串,数组长度为5,超时10ms
		HAL_UART_Transmit(&huart1, (uint8_t *)&"\n\r", 2, 10);						//串口1发送字符串,数组长度为2,超时10ms	
		
		if(temp>warming_val&&!set_flag){
    
    //如果超过报警值
			HAL_GPIO_WritePin(GPIOA,BEEP_Pin, GPIO_PIN_RESET);//BEEP引脚拉低
		}else{
    
    
			HAL_GPIO_WritePin(GPIOA,BEEP_Pin, GPIO_PIN_SET);
		}

		HAL_ADC_Stop(&hadc1);											//停止ADC1
		HAL_Delay(300);
    /* USER CODE END WHILE */

    /* USER CODE BEGIN 3 */
  }
  /* USER CODE END 3 */
}

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 HAL y hay comentarios que se pueden entender junto con el video explicativo.
imagen

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

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

1. Código de programa

2. Simulación de Proteus

3. Requisitos funcionales

4. Vídeo explicativo

Información del software de diseño Altium

nombre de archivo.bat

Información del software KEIL

MQ135-2.jpg

MQ135.jpg

Principio de funcionamiento del sensor de la serie MQ.txt

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/132612912
Recomendado
Clasificación