一.硬件方案
本设计主要以51单片机系统进行温度采集与控制;温度信号由数字温度传感器DS18B20采集,主控器主动获取传感器温度值,通过PID算法,与设置温度进行计算,输出继电器的控制状态,并在LCD显示屏进行显示。 主要由51单片机+最小系统+LCD1602液晶显示模块+DS18B20温度传感器+继电器电路+蜂鸣器模块+LED指示灯模块+按键模块;如图:
二.设计功能
(1)采用PID控制算法,对水温进行实时控制; (2)设定容器内水的温度在:水温–90°;自动平衡,容器内水温误差0.5°; (3)PID算法容器内水温上升或下降10°时间不超过10min; (4)设有三个按键,1为复位按键,2为目标水温的加,3为目标水温的减;
三.设计原理图
(1)原理图主要采用AD软件进行设计,如图:
(2)PCB图如下:
四.软件设计
主程序源码
void main()//主函数
{
init();//初始化函数
pid_init (&temp_PID);
InitTimer0();
temp_PID.Proportion =120; // Set PID Coefficients
temp_PID.Integral =5;
temp_PID.Derivative =2;
while(1)
{
temp_control();//控制按键函数
if(time_value<PWM) { heatting=1;beep=1;LED1=0;LED2=1;}else { heatting=0;beep=0;LED1=1;LED2=0;}
if(time_value==30)
{
display_real_tenp(temp_m1);
}//显示函数
if(time_value==60) temp_m=unnormal_proccessing(temp_m1);//温度转换函数*100
if(time_value==100)
{
if(set_temp-temp_m>250)
{
PWM=PWM_MAX;
}
else
{
PWM_I=pid_calc(&temp_PID,temp_m);
PWM =PWM_I ;
if( PWM>=100)PWM=100;
else if(PWM<=PWM_MIN) PWM=PWM_MIN;
}
}
if(time_value==120)
{ PWM_P=PWM/2;
LcdWriteCom(0x80+0X40+0x0C);
LcdWriteData('0'+PWM_P/100);
LcdWriteCom(0x80+0X40+0x0D);
LcdWriteData('0'+PWM_P%100/10);
LcdWriteCom(0x80+0X40+0x0E);
LcdWriteData('0'+PWM_P%10);
}
}
}
如需资料请关注公众号“单片机实例设计”,首页回复“PID温控”获取资料;
|