基于STM32的智能锅炉设计

目录

1、设计要求

2、系统功能

3、演示视频 和实物

4、系统设计框图

5、软件设计流程图

6、原理图

7、主程序

8、总结


 

🤞大家好,这里是5132单片机毕设设计项目分享,今天给大家分享的是基于STM32的智能锅炉

设备的详细功能见网盘中的文章《6、基于STM32的智能锅炉设计》:

链接:https://pan.baidu.com/s/1uWSZX2zbZwy9sYwwnvyktQ?pwd=5132 
提取码:5132

 随着全球能源需求的增长和环境问题的日益严重,提高能源利用效率和环保性能成为锅炉行业的重要发展方向。智能锅炉能够实时监测燃烧状态,调整燃料和空气的配比,降低能耗和排放,具有重要的实际意义。随着工业自动化和智能化的快速发展,传统锅炉设备的升级和改造成为必然趋势。STM32作为一种高性能、低功耗的嵌入式微控制器,具有强大的处理能力和丰富的外设接口,非常适合用于智能锅炉的控制系统设计。

1、设计要求

 本课题拟设计一种可以检测锅炉内部水的温度、水位、环境的温湿度,水温和水位的控制可以起到保护锅炉,节约能源的作用,环境温湿度时为了保护工作人员的安全,可以保证工作人员有个舒适的工作环境。通过蓝牙可以远程操作水泵和阈值的设定。

2、系统功能

  1. 超声波用于检测锅炉里面的水位,当水位低于设定值,蜂鸣器报警,并且打开水泵加水,加到设定值,停止加水。
  2. DS18B20温度传感器用于检测锅炉里面的温度,当温度高于设定值,停止加热,打开水泵使温度降到理想值。
  3. 手机蓝牙app可以控制水位和温度的阈值,也可以直接控制水泵。并且可以查看水位和温度
  4. DHT11检测室内温湿度,当室内温度过高,人不应该靠近锅炉
  5. OLED显示屏实时显示锅炉的水位和温度以及室内温湿度。

三个阈值:温度、湿度、水位。

两个按键分别控制模式选择和锅炉启动。

自动模式:智能根据锅炉环境信息控制

手动模式:控制锅炉启动停止工作、水泵启停和排风扇启停。

3、演示视频和实物

下面请观看视频:

D25-基于STM32的智能锅炉控制系统设计

4、系统设计框图

5、软件设计流程图

6、原理图

7、主程序

下面介绍的主程序,主要是系统逻辑控制的程序编写。 

#include "stm32f10x.h"  // 有问题和需求的,可以联系VX:lwfw123456789
#include <stdio.h>
#include <string.h>
#include "sys.h"  
#include "delay.h"
#include "OLED.h"
#include "dht11.h"      //ÎÂʪ¶È´«¸ÐÆ÷
#include "Key.h"
#include "ds18b20.h" 
#include "jidianqi.h"
#include "OLED.h"
#include "Serial.h"
#include "LED.h"
#include "HCSR04.h"        //³¬Éù²¨
#include "Buzzer.h"
#include "Motor.h"


short temperature;     //´æ´¢ds18b20µÄÖµ
uint8_t KeyNum;      //´æ´¢°´¼üÖµ
uint8_t RxData;      //À¶ÑÀ½ÓÊÕµ½µÄÊý¾Ý
u8 temp,humi;


u8 t = 0;
float guang;              //´æ´¢ADÄ£Äâֵת»»ÎªµçѹµÄÖµ
uint32_t bufe[3];
u8 state;
u8 state1;
	
u8 ShiWenYu = 28;    //°´¼ü¿ØÖƵÄÈý¸öãÐÖµ
u8 ShuiYu=70;
u8 LuWenYu=27;
u8 chao = 0;


void caijishuju()
{
     
			//Êý¾Ý²É¼¯²¿·ÖÓëÏÔʾ
			chao=HCSR04_GetValue();                      // ³¬Éù²¨²É¼¯   
				
		  OLED_ShowNum(4, 6,chao , 2);
    	
		
			if(t%10==0)
		 {
			 
				DHT11_Read_Data(&temp,&humi);   //¶ÁÈ¡ÎÂʪ¶È²¢ÏÔʾÔÚOLEDÉÏ
				bufe[0]=temp;	
				bufe[1]=humi;
				OLED_ShowNum(3,6,bufe[0],2);    //ÏÔʾζÈ
				OLED_ShowString(3,9,"C");
//				OLED_ShowNum(3,14,bufe[1],2);    //ÏÔʾʪ¶È
//				OLED_ShowString(3,16,"%");

			  temperature=DS18B20_Get_Temp();	
				printf("\r\nzhuodu=%d\r\n",bufe[0]);
			  printf("shuiwei=%d\r\n", bufe[1]);
				bufe[2]=temperature/10;
				printf("wendu=%d\r\n", bufe[2]);
				if(temperature<0)
				{
					OLED_ShowString(2,6,"-");		//ÏÔʾ¸ººÅ
					temperature=-temperature;					//תΪÕýÊý
				}else OLED_ShowString(2,6,"+");			//È¥µô¸ººÅ
				OLED_ShowNum(2, 7, temperature/10, 2);
				OLED_ShowString(2,9,".");
				OLED_ShowNum(2, 10, temperature%10, 1);	
				
				printf("\r\nShuiWei=%d\r\n", chao); //À¶ÑÀÉÏ´«Êý¾Ý
				printf("ShiWen=%d\r\n", bufe[0]);  
				printf("LuWen=%d\r\n",temperature);
	  	}
      t++;
}

void ctrlue()     //×Ô¶¯²¿·Ö£¬Êä³öÉ豸×Ô¶¯Âß¼­¿ØÖÆ
{
	   OLED_ShowChinese(4,7,30);
	   OLED_ShowChinese(7,8,31);
	   
      if(temperature>LuWenYu)   
			{
					Buzzer_Turn();
			}else
			{
					Buzzer_OFF();
			}
			
			if(chao>ShuiYu)   
			{
					Motor_SetSpeed(20);
			}else
			{
					Motor_SetSpeed(0);
			}
			
			
			if(bufe[0]>=ShiWenYu)         
			{
			    JIDIANQI1_ON();			
			}else
			{ 
				 JIDIANQI1_OFF();
			}		
}

void shoudong()     //ÊÖ¶¯²¿·Ö
{
	  OLED_ShowChinese(4,7,29);
	  OLED_ShowChinese(7,8,31);
   	OLED_ShowNum(2, 14,LuWenYu , 2);
	   OLED_ShowNum(3, 14,ShiWenYu , 2);
  	OLED_ShowNum(4, 10,ShuiYu , 2);
	   
//	    Motor_SetSpeed(0);
    //À¶ÑÀ½ÓÊÕ²¿·Ö		
			if (Serial_GetRxFlag() == 1)			{
				RxData = Serial_GetRxData();     //À¶ÑÀ½ÓÊÕ
//				Serial_SendByte(RxData);     //À¶ÑÀ·¢ËÍ
//				OLED_ShowHexNum(1,1,RxData,2);
				
				 switch(RxData)    //¿ØÖÆãÐÖµ
				{
					case 1: Motor_SetSpeed(0);;   //¹Ø
						break;		 
					case 2: Motor_SetSpeed(20);;     //¿ª
						break;		 
					case 3: JIDIANQI1_OFF();   //·çÉÈguan
						break;				
					case 4: JIDIANQI1_ON();     //·çÉÈkai
						break;
          case 5: state=0;   // ¹øÂ¯guan
						break;				
					case 6: state=1;   // ¹øÂ¯kai
						break;				
					default: 
						break;
				}				
			}						
}


int main(void)     //Ö÷º¯Êý
{
    NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);   // ÉèÖÃÖжÏÓÅÏȼ¶·Ö×éΪ×é2£º2λÇÀÕ¼ÓÅÏȼ¶£¬2λÏìÓ¦ÓÅÏȼ¶
    delay_init();	   //ÑÓʱº¯Êý³õʼ»¯
	  SystemInit();
	  
	  Key_Init();    //°´¼ü³õʼ»¯
		LED_Init();
	  JIDIANQI_Init();
        
		HCSR04_Init();
		OLED_Init(); 
		Buzzer_Init();
		Motor_Init();

		OLED_ShowChinese(1,3,8);      //ÖÇ
		OLED_ShowChinese(1,4,9);      //ÄÜ
    OLED_ShowChinese(1,5,23);     //¹ø
		OLED_ShowChinese(1,6,24);     //¯
//		OLED_ShowChinese(1,8,13);     //¹Ø

		OLED_ShowChinese(2,1,24);      //¯
		OLED_ShowChinese(2,2,2);       //ÎÂ
		OLED_ShowString(2,5,":");
		OLED_ShowChinese(3,1,27);      //ÊÒ
		OLED_ShowChinese(3,2,2);       //ÎÂ
		OLED_ShowString(3,5,":");
		OLED_ShowChinese(4,1,5);      //Ë®
		OLED_ShowChinese(4,2,6);        //λ
		OLED_ShowString(4,5,":");
		
		while(DS18B20_Init())	//DS18B20³õʼ»¯	
	 {
		printf("ds18b20 success!");
 		delay_ms(200);
	 }

		Serial_Init();   //´®¿Ú1³õʼ»¯
    while (1)
    {	
			
			 
      KeyNum = Key_GetNum();
			if (KeyNum == 6)    //Ò»¼ü¿ØÖƹøÂ¯Æô¶¯,Ò²ÊǼ±Í£°´Å¥
			{
				delay_ms(20);
				if (KeyNum == 6)
				{
				    state++;
					if(state>1)
					{
							state=0;
					}
				} 
			}
			if(state==0)
			{
			   OLED_ShowChinese(1,8,13);   // ¹Ø
			 	 LED1_OFF();
				 Motor_SetSpeed(0);
			}
			if(state==1)
			{
			   OLED_ShowChinese(1,8,12);   // ¿ª
				 LED1_ON();
			   caijishuju();
			}
			

			if (KeyNum == 1 & state==1)    //Ò»¼ü¿ØÖÆ×Ô¶¯»òÕßÊÖ¶¯
			{
				delay_ms(20);
				if (KeyNum == 1)
				{
				    state1++;
					if(state1>1)
					{
							state1=0;
					}
				} 
			}
			if(state1==0)
			{
			   ctrlue();   // ¿ª 
			}
			if(state1==1)
			{
			   shoudong();
}	
	}
}

8、总结

本论文以STM32F103单片机为核心,设计了一款智能锅炉,可以检测锅炉内部水的温度、水位、环境的温湿度,水温和水位的控制可以起到保护锅炉,节约能源的作用,环境温湿度时为了保护工作人员的安全,可以保证工作人员有个舒适的工作环境。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

5132单片机设计

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值