目录

🤞大家好,这里是5132单片机毕设设计项目分享,今天给大家分享的是基于STM32的智能锅炉。
设备的详细功能见网盘中的文章《6、基于STM32的智能锅炉设计》:
链接:https://pan.baidu.com/s/1uWSZX2zbZwy9sYwwnvyktQ?pwd=5132
提取码:5132
随着全球能源需求的增长和环境问题的日益严重,提高能源利用效率和环保性能成为锅炉行业的重要发展方向。智能锅炉能够实时监测燃烧状态,调整燃料和空气的配比,降低能耗和排放,具有重要的实际意义。随着工业自动化和智能化的快速发展,传统锅炉设备的升级和改造成为必然趋势。STM32作为一种高性能、低功耗的嵌入式微控制器,具有强大的处理能力和丰富的外设接口,非常适合用于智能锅炉的控制系统设计。
1、设计要求
本课题拟设计一种可以检测锅炉内部水的温度、水位、环境的温湿度,水温和水位的控制可以起到保护锅炉,节约能源的作用,环境温湿度时为了保护工作人员的安全,可以保证工作人员有个舒适的工作环境。通过蓝牙可以远程操作水泵和阈值的设定。
2、系统功能
- 超声波用于检测锅炉里面的水位,当水位低于设定值,蜂鸣器报警,并且打开水泵加水,加到设定值,停止加水。
- DS18B20温度传感器用于检测锅炉里面的温度,当温度高于设定值,停止加热,打开水泵使温度降到理想值。
- 手机蓝牙app可以控制水位和温度的阈值,也可以直接控制水泵。并且可以查看水位和温度
- DHT11检测室内温湿度,当室内温度过高,人不应该靠近锅炉
- 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单片机为核心,设计了一款智能锅炉,可以检测锅炉内部水的温度、水位、环境的温湿度,水温和水位的控制可以起到保护锅炉,节约能源的作用,环境温湿度时为了保护工作人员的安全,可以保证工作人员有个舒适的工作环境。
下面介绍的主程序,主要是系统逻辑控制的程序编写。
1万+

被折叠的 条评论
为什么被折叠?



