Java教程

基于单片机PID算法的温度控制调节器控制设计

本文主要是介绍基于单片机PID算法的温度控制调节器控制设计,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

设计思路:

改进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) 百度网盘

这篇关于基于单片机PID算法的温度控制调节器控制设计的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!