一.系统概述
制冷系统包括以下几个主要功能和特性:
1. 硬件平台及核心控制器:使用STC89C52单片机作为核心控制器,集成DS18B20温度采集。
2. 数据显示与设定:在显示屏上实时显示采集到的温度数据,可以通过按键设定温度的阈值。
3. PID控制实现温度调节:使用PID控制算法实现对温度的自动调节,防止温度超过设定的阈值。PID控制算法能够根据实时的温度变化调节风扇或加热器的输出,保持温度在设定范围内稳定。
4. 系统保护及报警:当温度超过设定的上限阈值时,系统会自动调节控制风扇或加热器,以维持在安全范围内。
二.仿真概述
1. 通过显示屏可以显示检测到实时温度以及阈值,此时的温度没有超过阈值。
2. 当检测到温度超过设定阈值就会控制降温装置进行降温,并通过蜂鸣器进行报警。
3. 当温度低于阈值就会控制加热装置进行加热并进行报警,还会通过按键进行阈值调节。
三.程序设计
#include <REGX52.H>
#include "DS18B20.h"
#include "LCD1602.h"
#include "delay.h"
#include "key.h"
#include "Timer0.h"
sbit RELAYU = P2^2;
sbit RELAYD = P2^3;
/*PID系数*/
unsigned int TPID_Target = 27; //期望输出值
unsigned int TPID_Current; //实际输出值
unsigned int PID_E,PID_Last_E; //E:误差值
unsigned int PID_p_Out,PID_i_Out,PID_d_Out,PID_Total_Out; //PID控制器的P,I,D输出以及PID控制器总输出
unsigned int PID_Alimit,I_Band = 10,PID_i_Alimit; //输出限幅的值 积分分离的值 i积分限幅的值
float PID_Kp = 100,PID_Ki = 1,PID_Kd = 10; //PID系数
/*主函数系数*/
int TAHigh;
unsigned char KeyNum,Key = 0;
void PID_calc(void);
void main()
{
float TA;
TAHigh = 27;
if(TAHigh > 99)
{
TAHigh = 27;
}
LCD_Init();
LCD_ShowString(1,1,"T:00.0");
LCD_ShowString(2,1,"TMAX:00.0");
while(1)
{
TPID_Target = TAHigh;
DS18B20_ConverT();
TA = DS18B20_ReadT_One();
TPID_Current = TA;
if(TPID_Current > TPID_Target)
{
RELAYU = 0;
RELAYD = 1;
}
if(TPID_Current < TPID_Target)
{
RELAYU = 1;
RELAYD = 0;
}
if(TPID_Current == TPID_Target)
{
RELAYU = 0;
RELAYD = 0;
}
PID_calc();
KeyNum = KeyN();
if(KeyNum == 1)
{
TAHigh++;
if(TAHigh > 99){TAHigh = 99;}
}
if(KeyNum == 2)
{
TAHigh--;
if(TAHigh <= 10){TAHigh = 10;}
}
LCD_ShowNum(1,3,TA,2);
LCD_ShowNum(2,6,TAHigh,2);
}
}