找回密码
 注册会员
更新自动建库工具PCB Footprint Expert 2024.04 Pro / Library Expert 破解版

[嵌入式/ARM] STC12C5A60S2设计的马弗炉温度控制器方案

[复制链接]
admin 发表于 2013-3-22 12:46:53 | 显示全部楼层 |阅读模式

本文包含原理图、PCB、源代码、封装库、中英文PDF等资源

您需要 登录 才可以下载或查看,没有账号?注册会员

×
马弗炉是高性能机电一体化的新一代智能产品,适用于煤炭、电力、化工、冶金等行业和部门进行工业分析。马弗炉温度控制器设计以单片机STC12C5A60S2作为控制中心,采用PID控制算法和自适应控制技术,自动调整预加热温度,并可以存储记忆,确保试验顺利完成,自动化程度高。
   1.马弗炉主要技术指标
测温范围:0~1000℃
测温精度:±3℃
控温精度:±10℃(在250~1000℃范围内)
升温时间:(室温~920℃)≤30min
电源:AC220V±22V@50Hz±1Hz
功率:3.5kW
具有快速灰化和缓慢灰化、挥发分、罗加指数、黏结指数等四个专用加热程序;另外,温度控制器有一个自选程序,通过按键可选择所需设定的温度和保温时间。
   2.设计思路
马弗炉温度控制器设计采用PID算法来控制PWM的占空比,由PWM信号控制IGBT的通断,使用时钟专用芯片DS1302进行定时控制,从而实现在不同时段对炉温的控制。
   3.系统结构
马弗炉温度控制器由单片机STC12C5A60S2,热电偶放大器与数字转换器MAX6675,时钟芯片DS1302,I级精度K形热电偶,键盘及显示系统组成,系统结构如图1所示。
    20121107051839830524401.jpg
   图1  系统结构框图
   PID简介
   1.基本概念
①基本偏差e(t):表示当前测量值与设定目标之间的偏差。设定目标是被减数,结果可以是正或负,正数表示还没有达到,负数表示已经超过了设定值,这是面向比例项用的一个变动数据。
   ②累计偏差∑e(t)=e(t)+e(t-1) +…+e(t-n):这是我们每一次测量得到偏差值的总和,是代数和,要考虑正负号运算的。这是面向积分项用的一个变动数据。
   ③基本偏差的相对量e(t)-e(t-1):用本次的基本偏差减去上一次的基本偏差,用于考察当前控制对象的趋势,作为快速反应的重要依据,这是面向微分项用的一个变动数据。
   ④三个基本参数Kp、Ki、Kd:这是做好一个控制器的关键常数,分别称为比例常数、积分常数和微分常数。不同的控制对象需要选取不同的值,经过现场调试才能获得较好的效果。
   2.三个基本参数Kp、Ki、Kd实际控制中的作用
①比例环节:即时成比例地反应控制系统的偏差信号e(t),偏差一旦产生,调节器立即产生控制作用以减小偏差。比例作用大,可以加快调节,减少误差,但过大比例会使系统稳定性下降。
   ②积分环节:主要用于消除静差,提高系统的无差度。积分作用的强弱取决于积分时间常数Ti。Ti越大,积分作用越弱,反之则越强。
   ③微分环节:能反应偏差信号的变化趋势(变化速率),并能在偏差信号的值变得过大之前,在系统中引入一个有效的早期修正信号,从而加快系统的动作速度,减小调节时间。
   3.参数的设置与调整
①加温迅速达到目标值,但温度过冲很大。
   比例系数太大,致使在未达到设定温度前加热比例过高;微分系数过小,对对象反应不敏感。
   ②加温经常达不到目标值,小于目标值时间多。
   比例系数过小,加温比例不够;积分系数过小,对静差补偿不足。
   ③基本在控制温度内,但上下偏差大,经常波动。
   微分系数小,对及时变化反应慢;积分系数过大,使微分反应被钝化。
   ④受环境影响较大
   微分系数小,对及时变化反应慢;设定的基本定时周期过长,不能得到及时修正。
   下面给出PID控制程序:
#ifndef _PID_H__
#define _PID_H__
#include
#include
#include
struct PID {
unsigned int SetPoint; // 设定目标 Desired Value
unsigned int Proportion; // 比例常数 Proportional Const
unsigned int Integral; // 积分常数 Integral Const
unsigned int Derivative; // 微分常数 Derivative Const
unsigned int LastError; // Error[-1]
unsigned int PrevError; // Error[-2]
unsigned int SumError; // Sums of Errors
}
struct PID spid; // PID Control Structure
unsigned int rout; // PID Response (Output)
unsigned int rin; // PID Feedback (Input)
sbit output=P1^4;
unsigned char high_time,low_time,count=0;//占空比调节参数
unsigned char set_temper=920;
void PIDInit (struct PID *pp)
{
memset ( pp,0,sizeof(struct PID));
}
unsigned int PIDCalc( struct PID *pp, unsigned int NextPoint )
{
unsigned int dError,Error;
Error = pp->SetPoint - NextPoint; // 偏差
pp->SumError += Error; // 积分
dError = pp->LastError - pp->PrevError; // 当前微分
pp->PrevError = pp->LastError;
pp->LastError = Error;
return (pp->Proportion * Error//比例
+ pp->Integral * pp->SumError //积分项
+ pp->Derivative * dError); // 微分项
}
   4. 温度采集电路
热电偶作为一种主要的测温元件,具有结构简单、制造容易、使用方便、测温范围宽、测温精度高等特点。但是,热电偶的应用却存在着非线性、冷端补偿、数字化输出等几方面的问题。设计中采用的MAX6675是一个集成了热电偶放大器、冷端补偿、A/D转换器及SPI串口的热电偶放大器与数字转换器,其电路如图2所示。
    20121107051839893014402.jpg
   图2 温度采集电路图
   MAX6675从SPI串行接口输出数据的过程如下:MCU使CS变低并提供时钟信号给SCK,由SO读取测量结果。CS变低将停止任何转换过程;CS变高将启动一个新的转换过程。一个完整串行接口读操作需16个时钟周期,在时钟的下降沿读16个输出位,第1位和第15位是一伪标志位且总为0;第14位到第3位为以MSB到LSB顺序排列的转换温度值;第2位平时为低,当热电偶输入开放时为高;开放热电偶检测电路完全由MAX6675实现,为开放热电偶检测器操作,T-必须接地,并使接地点尽可能接近GND脚;第1位为低电平以提供MAX6675器件身份码,第0位为三态。
    20121107051839939894403.jpg
   图3   SO端输出温度数据的格式
    20121107051839986764404.jpg
   图4   MAX6675的SPI接口时序
   下面给出相应的温度值读取程序及数据转换程序:
void max6675()
{
  uchar m;
  uint temp;
  temp=0;
  max_sck=0;
  max_cs=1;
  delay(180ms);
     max_cs=0 ;
  max_sck=1;  
  _nop_();
  max_sck=0;
  _nop_();
  if(max_so==1)     {temp |=0x0001;}
  for(m=0;m<15;m++)
  {
   temp<<=1;
   max_sck=1;
   _nop_();
   max_sck=0;
   if(max_so==1)    {temp |=0x0001;}    }   
  temp=(temp&amp;0x7fe0)>>5;
  t[0]=temp/1000+0x30;
  t[1]=temp%1000/100+0x30;
  t[2]=temp%100/10+0x30;
  t[3]=temp%10+0x30;
  print(1,0,t);
}
    20121107051840033644405.jpg
   图5  定时电路图
    20121107051840080514406.jpg
   图6  单片机系统电路图
    20121107051840127384407.jpg
   图7  主程序流程图
   5.定时电路
使用时钟专用芯片DS1302进行定时控制,通过外加很少的电路就可以实现高精度的时钟信号。外围电路简单可靠,时间精度高,通过外接锂电池后可以实现时间信息存储。
   6.单片机系统
采用STC12C5A60S2组成单片机最小系统,有2路PWM,选用一路作为IGBT的控制信号。另外,STC12C5A60S2内部还有1K的EEPROM,用于设置自选程序,通过按键选择所需设定的温度和保温时间。显示模块采用128&times;64液晶显示。
   7.软件设计
    20121107051840189884408.jpg
   图8  子程序流程图
   程序流程图如图8所示。
*滑块验证:
您需要登录后才可以回帖 登录 | 注册会员

本版积分规则

QQ|手机版|MCU资讯论坛 ( 京ICP备18035221号-2 )|网站地图

GMT+8, 2024-12-23 22:27 , Processed in 0.058287 second(s), 10 queries , Redis On.

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表