设计思路:
改进PID算法的温度调节器设计,采用单片机为控制器,研究热电阻测温电路,控制量输出电路和温度控制PID算法。
功能实现:
1.采用市电供电。
2.采用单片机。
3.LED数码管显示。
4.4*4键盘输入。
5.热电阻测温0-150℃。
6. 工艺参数断电可保持,AT24C02存储。
7. 电流输出4-20mA,电压输出0-5V。
8.有超偏差报警功能。
9.增量式PID算法。
#include "Interrupt.h" //中断头文件 #include "24C02.h" //存储器 #include "delay.h" //延时函数 #include "PID.h" //改进PID算法 #include "DISPLAY.h" //数码管显示 sbit Change=P3^6; //切换显示按键 sbit Warning=P3^3; unsigned char key=16,ShowPage=0; int PID_Data; //PID算法输出的计算值 unsigned int LTC1655_WritData=0; //给DA的值 extern PID sPID; unsigned int LT1860_ReadData=0; float LTC1860_Voltage=0; float RealTemp=0; float LTC1655_Voltage; //DA输出电压 void ParaInit(void); //从存储器中读取参数值 void main(void) { IIC_Init(); //IIC初始化 24C02初始化 Timer_Init(); //定时器1初始化 Timer_EN(); //打开定时器1中断 Glob_Interrupt_EN(); //打开全局中断允许 IncPIDInit(); //改进PID初始化 ParaInit(); //开机读取上次设定的PID的参数和设定的温度 Warning=0; while(1) { LT1860_ReadData=LTV1860_GetData(); //读取AD的值 LTC1860_Voltage=5.0*LT1860_ReadData/4096; //读到的值转换成电压 RealTemp=(LTC1860_Voltage+10)/(40-LTC1860_Voltage)*1039-272.72+0.5; //电压转换成温度 if(RealTemp<109) //软件补偿 消除误差 RealTemp-=3; else if(RealTemp<149) RealTemp-=2; else RealTemp-=1; if((int)RealTemp>150||(int)RealTemp<0) //报警 Warning=1; else Warning=0; PID_Data=IncPIDCalc(RealTemp); //PID算法 LTC1655_WritData=PID_Data+32767; LTC1655_WritWord(LTC1655_WritData); //读到的值送到DA LTC1655_Voltage=5.0*LTC1655_WritData/65535;
【资源下载】下载地址:点击下载(5) 百度网盘