一、项目介绍
本项目旨在开发一套温湿度检测与恒温控制系统,通过对环境温湿度的实时监测与调控,为特定场所(如实验室、仓库等)提供稳定的温湿度环境。系统采用温湿度传感器,结合PID控制系统,确保温湿度数据的准确性和控制的可靠性。
二、设计思路及功能展示
本系统的设计思路主要分为三个部分:温湿度检测、LCD屏幕显示与恒温控制。首先,通过温湿度传感器实时采集环境数据;然后,将采集到的数据通过处理模块进行显示到LCD屏幕上,根据预设的温湿度范围判断是否需要进行调控;最后,通过恒温控制模块对环境进行加热,以达到预设的温湿度目标。将功能分成两类,一类为温湿度采集并显示到屏幕上,另一类为将采集到温度进行PID调节,达到设定值温度,并显示温度曲线。具体显示如下图所示:
1、主菜单页面
2、温湿度检测页面
3、温度控制器温度设定值页面
4、温度控制器曲线显示
三、软件流程图
软件部分主要实现对旋转编码器的不断读取当前状态值,来执行相对应的指令。流程简要如下:
系统初始化,配置各模块参数;
功能一:温湿度传感器开始采集数据,并显示到LCD屏幕中。
功能二:对温度进行设定,温湿度传感器开始采集数据,PID调节依据偏差自动校准,达到设定值温度,并将实时曲线显 示到LCD屏幕上。
主菜单页面代码:
if(BP1==1){
while(1){
BP2=0;
a=ENCODER_READ();
if(a==1)
{
BP1=0;
BP2=1;
break;
}
lcd_display_chinese(23,35,16,chinese_test1[0],5,RED);
lcd_display_chinese(23,90,16,chinese_test2[0],5,BLACK);
功能一:温湿度检测代码
if(a==3&&BY1==1){
lcd_clear(WHITE);
while(1){
BY1=0;
SHT30_Read_Humiture(&Temp,&Humi);//读取温湿度
dat_dis();
lcd_showstr(25,2,T_DatBuf);
lcd_showstr(25,6,R_DatBuf);
systick_delay_ms(100);//做延迟,防止采样频率过高
a=ENCODER_READ();
if(a==3){
systick_delay_ms(1000);
BY1=1;
lcd_clear(WHITE);
break;
}
}}
功能二:温度控制器代码
if(a==3&&BY2==1){
BY2=0;
a=0;
b=0;
lcd_clear(WHITE);
while(1){
if(b==1){break;}
lcd_showstr(1,2,"Temp range:");
lcd_showstr(90,2,"0-60");
lcd_showstr(1,6,"Temp set:");
lcd_showuint8(80,6,SETTEMP);
a=ENCODER_READ();
if(a==1){SETTEMP=SETTEMP+2;}
if(a==2){SETTEMP=SETTEMP-2;}
if(a==3){
lcd_clear(WHITE);
while(1){
SHT30_Read_Humiture(&Temp,&Humi);//读取温湿度
float newTemperature=Temp/100;
UpdateTemperature(newTemperature); // 更新温度数组
DrawTemperatureCurve(BLACK);// 在LCD上绘制温度曲线
dat_dis();
lcd_showstr(0,0,T_DatBuf);
lcd_showstr(1,1,"SET:");
lcd_showuint8(40,1,SETTEMP);
LCD_DrawLine(0,LCD_HEIGHT - 20 -(SETTEMP*((LCD_HEIGHT - 20) / 100.0f)),127,LCD_HEIGHT - 20 -(SETTEMP*((LCD_HEIGHT - 20) / 100.0f)),RED);
PWM=PID_realize();//更改占空比为PID输出值/PWM_DUTY_MAX PWM_DUTY_MAX在fsl_pwm.h文件中 默认为50000
pwm_duty(PWM2_MODULE3_CHB_C29,PWM);
systick_delay_ms(200);//做延迟,防止采样频率过高
DrawTemperatureCurve(WHITE);// 在LCD上绘制温度曲线
a=ENCODER_READ();
if(a==3){
systick_delay_ms(500);
pwm_duty(PWM2_MODULE3_CHB_C29,0);
lcd_clear(WHITE);
BY2=1;
b=1;
break; } } } }}
四、遇到的主要难题及解决方法
在项目开发过程中,我们遇到了以下主要难题:
1、第一次接触嵌入式方面知识,对许多基本的硬件驱动都不了解,对模拟电路、数字电路重新进行学习理解,了解各个驱动的工作原理;
2、恒温控制精度不足、采用PID控制算法对恒温控制模块进行精确调控,提高了控制精度;
3、旋钮编码器容易误触或锁死现象、调整驱动程序、添加了软件消抖。
五、未来的计划或建议
对于未来,我计划进一步完善系统的功能,添加实时操作系统,再进一步添加嵌入式GUI设计,完善LCD屏幕显示功能,尝试学习开发板上其他传感器的功能。建议对系统进行模块化设计,便于后续的维护和升级。此外,还可以考虑将系统与云平台结合,实现远程监控和管理功能,拓宽系统的应用范围。