基于单片机的云台控制PID恒温控制

基于单片机的温度控制系统的设计_单片机_毕业设计论文网
未找到您最近浏览过的网页
历史浏览记录
热门搜索词: |
全部设计论文分类
本站所有出售的 资料均严格保密无重复,出售过后会做详细的记录避免重复,
QQ临时会话 可能会导致消息无法正常接收,咨询前请务必先加客服为好友.QQ:
本站提供的资料 都是已经做好的,现成的作品都是审核过的,保证质量和规范.
基于单片机的温度控制系统的设计
以下是大纲或介绍,如需要完整的请购买下载。提示:本资料已审核通过,内容严格保密,格式标准,质量保证。 密 保
1.无需注册,购买下载后即可获取该完整资料。
2.本站提供下载链接或联系客服发送资料。
本文列举了单片机在锅炉中的一个实际应用,并对设计的温度控制系统的组成及主要电路的作用进行了详细的介绍。文章介绍了用单片机控制的、基于数字温度传感器DS1820的温度测量和控制系统:重点阐述了DS1820的工作原理、指令系统、单片机与DS1820之间的接口、数据传递、通信协议。该系统采用单片机与数字温度传感器DS1820相结合,能够测量出-55℃-125℃之间的温度,同时还具有通过控制加热系统调节被测环境温度和对超限温度进行报警等功能。 〖资料来源:毕业设计(论文)网 WWW.56DOC.COM 咨询QQ:〗
关键词& 温度传感器DS1820;单片机;硬件设计;软件设计Abstract 〖来源:毕业设计(论文)网 www.56doc.com 咨询QQ:〗
&&& Practical application of one-chip computer in heat-treatment furnace is listed,and detailed introduction is given to the compositionsand the main functions of temperature control system.The paper introduces the temperature measurement and control system based on the DS1820. The author emphasizes on the working principle of the DS1820, instructionset, data transfer, the interface and the communication protocol between the DS1820 and single chip microcomputer. The system adopt single chi'p microcomputer combined with the DS1820,it can measure temperature between -55℃-125℃. The system not only can measure the temperature of the environment , but also can alarm when the temperature is beyond the rang of the safe temperature which is set.[ 〖来源:毕业设计(论文)网 www.56DOC.COM 咨询QQ:〗
Key words& DS1820; Single Chip M tlardware D Software Design 〖资料来源:毕业设计(论文)网 WWW.56doc.com〗
单片微型计算机是随着超大规模集成电路技术的发展而诞生的,由于它具有体积小、功能强、性价比高等特点,所以广泛应用于电子仪表、家用电器、节能装置、军事装置、机器人、工业控制等诸多领域,使产品小型化、智能化,既提高了产品的功能和质量,又降低了成本,简化了设计。本文主要介绍单片机在温度控制中的应用。该仪器采用美国Intel公司八位单片机作为控制核心,配以DS18B20构成的智能温度测量装置及其他集成电路,加上精心对软件设计,实现了仪表智能化。对0~100℃范围内的各种电加热炉的温度进行精密测量并能实现实时控制,同时, LED显示器直接跟踪显示被控对象的温度值,准确度高,显示清晰,稳定可靠,使用方便。文中对每个部分功能、实现过程作了详细介绍。整个系统的核心是进行温度监控与温度传感器,完成了课题所有要求。系统各部分工作原理温控仪原理。整个仪表的工作原理是:由89C51单片机控制,按预先编制的程序定时对被测信号进行采样,并自动进行零漂校正,最后显示所测温度值,同时按设定值、所测温度值、温度变化速率,自动进行PID参数自整定和运算,并输出0~10mA控制电流,配以主回路实现温度的控制及显示。 〖资料来源:毕业设计(论文)网 www.56DOC.com〗
系统各部分功能&由DS18B20构成的智能温度控制装置由四部分组成:DS18B20温度传感器、89C51、显示模块,温度调节驱动电路。文中对每个部分功能、实现过程作了详细介绍。整个系统的核心是进行温度监控以及温度传感器。统的工作过程基于DS18B20的温度测量装置电图如图2所示:温度传感器DS18B20将被测环境温度转化成带符号的数字信号(以十六位补码形式,占两个字节),传感器可置于离装置150米以内的任何地方,输出脚I/O直接与单片机的P1.1相连,R1为上拉电阻,传感器采用外部电源供电。89C51是整个装置的控制核心,89C51内带1K字节的FlashROM,用户程序存放在这里。显示器模块由四位一体的共阳数码管和4个9012组成。系统程序分传感器控制程序和显示器程序和温度控制程序三部分,传感器控制程序是按照DS18B20的通信协议编制。系统的工作是在程序控制下,完成对传感器的读写和对温度的显示。标度转换程序根据温度检测值求的实际炉温,数字调节器程序根据恒温给定值与实际值的偏差。按积分分离的PID控制算法得到输出的控制量。数字触发器程序根据控制量控制电阻炉子的导通时间,调节炉温的变化使之与给定恒温值一致。导通时间长,输出功率大,温度升的快;导通时间短,输出功率小,温度升的变慢。 〖资料来源:毕业设计(论文)网 WWW.56doc.com〗 &89C51对温度的控制是通过双向可控硅实现的。双向可控硅管和加热丝串接在交流220V、50Hz市电回路。在给定周期T内,89C51只要改变可控硅管的接通时间即可改变加热丝的功率,以达到调节温度的目的。目& 录 〖来源:毕业设计(论文)网 www.56DOC.COM 咨询QQ:〗
第1章& 绪 论&第2章& 系统简介&2.1 系统的组成&&& 2.1.1系统组成图&2.1.2 系统各部分工作原理&2.1.3 系统各部分功能&2.2 系统的工作过程&第3章& 系统的硬件电路设计&3.1 微处理器的89C51的简介&3.1.1 引脚性能&3.2 DS1820的简介&3.2.1 DS1820功能块的详细说明3.2.2& DS1820测温原理3.2.3 DS1820使用中注意事项 3.3 控制电路设计&3.3.1主回路设计&3.3.2 键盘显示电路&3.3.3 接口电路&3.3.4温度控制电路第4章& 控制的算法&4.1 温度控制的PID算法&第5章& 温度控制程序&5.1 总& 述&5.2 主程序&5.3 T0中断服务程序CT0&5.4 子程序&致& 谢&参考文献&附录1&附录2& 〖毕业设计(论文)网 HTTP://www.56doc.com 咨询QQ:〗
相关内容:
本站提供的资料属原创,内容严格把关,均审核通过的,保证质量和规范.
提供下载链接或发送至您的邮箱,资料可重复发送,确保您收到为止.
收到资料后若有任何疑难问题,均可通过本站客服提供帮助解决.
我们确保发送的资料完整无损,如核实为不合格资料,可以申请退换.
本站所列毕业设计(论文)资料均属于原创者所有,初衷是为大家在毕业设计(论文)过程中参考和学习交流之用,请勿做其他非法用途,转载必究,如有侵犯您的权利或有损您的利益,请联系本站,经查实我们会立即进行修正或删除相关内容! 56doc.com Copyright &
苏ICP备号 |基于单片机的模糊PID温度控制系统设计毕业设计说明书2.5万字+开题报告+图
文件介绍:
该文件为 zip 格式,下载需要 100 积分
基于的模糊PID温度设计文件目录:
-基于单片机的模糊PID系统设计
-基于单片机的模糊PID温度控制系统设计图.doc
-基于单片机的模糊PID温度控制系统设计开题报告(改).doc
-基于单片机的模糊PID温度控制系统设计论文13.doc
1.3 电炉采用模糊自整定 PID 控制的可行性
在工业生产过程中,电炉随着负荷变化或干扰因素的影响,其对象特性或结构发生改变。电炉温控具有升温单向性、大时滞和时变的特点,如升温靠电阻丝加热,降温依靠自然冷却,温度超调后调整慢,因此用传统的控制方法难以得到更好的控制效果。另外对于 PID 控制,若条件稍有变化,则控制参数也需调整。自适应控制运用现代控制理论在线辨识对象特征参数,实时改变其控制策略,使控制系统指标保持在最佳范围内。但由于操作者经验不易精确描述,控制过程中各种信号量以及评价指标不易定量表示,而模糊理论正是解决这一问题的有效途径。
人们运用模糊数学的基本理论和方法,把规则的条件操作用模糊集表示并把这些模糊控制规则及有关信息(如评价指标、初始 PID 参数等)作为知识存入知识库中,然后计算机根据控制系统的实际响应情况运用模糊推理,实现自动对 PID 参数的最佳调整。
从以上的分析可知模糊自整定 PID 控制应用在具有明显的纯滞后、非线性、参数时变类似于电炉这样特点的控制对象可以获得很好的控制性能。大量的理论研究和实践也充分证明了用模糊自整定 PID 控制电炉温度是一非常好的解决方法。它不仅能发挥模糊控制的鲁棒性好、动态响应好、上升时间快和超调小的特点,又具有 PID 的动态跟踪品质和稳态精度。因此在温度控制器设计中,采用 PID 参数模糊自整定复合控制,实现 PID 参数的在线自调整功能,可以进一步完善 PID 控制的自适应性能,在实际应用中也取得了较好的效果。
1234567891051单片机-温度控制-PID算法-DS18B20-C语言
#include&reg51.h&
#include&intrins.h&
#include&math.h&
#include&string.h&
struct PID {
unsigned int SetP // 设定目标 Desired Value
unsigned int P // 比例常数 Proportional Const
unsigned int I // 积分常数 Integral Const
unsigned int D // 常数 Derivative Const
unsigned int LastE // Error[-1]
unsigned int PrevE // Error[-2]
unsigned int SumE // Sums of Errors
struct PID // PID Control Structure
// PID Response (Output)
// PID Feedback (Input)
sbit data1=P1^0;
sbit clk=P1^1;
sbit plus=P2^0;
sbit subs=P2^1;
sbit stop=P2^2;
sbit output=P3^4;
sbit DQ=P3^3;
unsigned char flag,flag_1=0;
unsigned char high_time,low_time,count=0;//占空比调节参数
unsigned char set_temper=35;
unsigned char j=0;
/***********************************************************
延时子程序,延时时间以12M晶振为准,延时时间为30us×time
***********************************************************/
void delay(unsigned char time)
unsigned char m,n;
for(n=0;n&n++)
for(m=0;m&2;m++){}
/***********************************************************
写一位数据子程序
***********************************************************/
void write_bit(unsigned char bitval)
DQ=0; /*拉低DQ以开始一个写时序*/
if(bitval==1)
DQ=1; /*如要写1,则将置高*/
delay(5); /*延时90us供采样*/
DQ=1; /*释放DQ总线*/
/***********************************************************
写一字节数据子程序
***********************************************************/
void write_byte(unsigned char val)
for(i=0;i&8;i++) /*写一字节数据,一次写一位*/
temp=val&&i; /*移位操作,将本次要写的位移到最低位*/
temp=temp&1;
write_bit(temp); /*向总线写该位*/
delay(7); /*延时120us后*/
/***********************************************************
读一位数据子程序
***********************************************************/
unsigned char read_bit()
unsigned char i,value_
DQ=0; /*拉低DQ,开始读时序*/
DQ=1; /*释放总线*/
for(i=0;i&2;i++){}
value_bit=DQ;
return(value_bit);
/***********************************************************
读一字节数据子程序
***********************************************************/
unsigned char read_byte()
unsigned char i,value=0;
for(i=0;i&8;i++)
if(read_bit()) /*读一字节数据,一个时序中读一次,并作移位处理*/
value|=0x01&&i;
delay(4); /*延时80us以完成此次都时序,之后再读下一数据*/
return(value);
/***********************************************************
复位子程序
***********************************************************/
unsigned char reset()
DQ=0; /*拉低DQ总线开始复位*/
delay(30); /*保持低电平480us*/
DQ=1; /*释放总线*/
presence=DQ; /*获取应答信号*/
delay(28); /*延时以完成整个时序*/
return(presence); /*返回应答信号,有芯片应答返回0,无芯片则返回1*/
/***********************************************************
获取温度子程序
***********************************************************/
void get_temper()
unsigned char i,j;
i=reset(); /*复位*/
}while(i!=0); /*1为无反馈信号*/
i=0 /*发送设备定位命令*/
write_byte(i);
i=0x44; /*发送开始转换命令*/
write_byte(i);
delay(180); /*延时*/
i=reset(); /*复位*/
}while(i!=0);
i=0 /*设备定位*/
write_byte(i);
i=0 /*读出缓冲区内容*/
write_byte(i);
j=read_byte();
i=read_byte();
i=(i&&4)&0x7f;
s=(unsigned int)(j&0x0f);
s=(s*100)/16;
temper=i|j; /*获取的温度放在temper中
/*=========================================================================
===========================
Initialize PID Structure
===========================================================================
==========================*/
void PIDInit (struct PID *pp)
memset ( pp,0,sizeof(struct PID));
/*=========================================================================
===========================
PID计算部分
===========================================================================
==========================*/
unsigned int PIDCalc( struct PID *pp, unsigned int NextPoint )
unsigned int dError,E
Error = pp-&SetPoint - NextP // 偏差
pp-&SumError += E // 积分
dError = pp-&LastError - pp-&PrevE // 当前微分
pp-&PrevError = pp-&LastE
pp-&LastError = E
return (pp-&Proportion * Error // 比例项
+ pp-&Integral * pp-&SumEror // 积分项
+ pp-&Derivative * dError); // 微分项
/***********************************************************
温度比较处理子程序
***********************************************************/
compare_temper()
if(set_temper&temper)
if(set_temper-temper&1)
high_time=100;
low_time=0;
for(i=0;i&10;i++)
{ get_temper();
rin = // Read Input
rout = PIDCalc ( &spid,rin ); // Perform PID Interation
if (high_time&=100)
high_time=(unsigned char)(rout/800);
high_time=100;
low_time= (100-high_time);
else if(set_temper&=temper)
if(temper-set_temper&0)
high_time=0;
low_time=100;
for(i=0;i&10;i++)
{ get_temper();
rin = // Read Input
rout = PIDCalc ( &spid,rin ); // Perform PID Interation
if (high_time&100)
high_time=(unsigned char)(rout/10000);
high_time=0;
low_time= (100-high_time);
/*****************************************************
T0中断服务子程序,用于控制电平的翻转 ,40us*100=4ms周期
******************************************************/
void serve_T0() 1 using 1
if(++count&=(high_time))
else if(count&=100)
/*****************************************************
串行口中断服务程序,用于上位机通讯
******************************************************/
void serve_sio() interrupt 4 using 2
while(RI==0){}
set_temper=SBUF;
SBUF=0x02;
while(TI==0){}
else if(i==3)
while(TI==0){}
void disp_1(unsigned char disp_num1[6])
unsigned char n,a,m;
for(n=0;n&6;n++)
// k=disp_num1[n];
for(a=0;a&8;a++)
m=(disp_num1[n]&1);
disp_num1[n]=disp_num1[n]&&1;
/*****************************************************
显示子程序
功能:将占空比温度转化为单个字符,显示占空比和测得到的温度
******************************************************/
void display()
unsigned char code number[]=
{0xfc,0x60,0xda,0xf2,0x66,0xb6,0xbe,0xe0,0xfe,0xf6};
unsigned char disp_num[6];
unsigned int k,k1;
disp_num[0]=0;
disp_num[0]=0x60;
disp_num[1]=number[k/10];
disp_num[2]=number[k%10];
disp_num[3]=number[k/10];
disp_num[4]=number[k%10]+1;
disp_num[5]=number[s/10];
disp_1(disp_num);
/***********************************************************
***********************************************************/
unsigned char a,b,flag_2=1,count1=0;
unsigned char phil[]={2,0xce,0x6e,0x60,0x1c,2};;
TMOD=0x21;
SCON=0x50;
PCON=0x00;
high_time=50;
low_time=50;
PIDInit ( &spid ); // Initialize Structure
spid.Proportion = 10; // Set PID Coefficients
spid.Integral = 8;
spid.Derivative =6;
spid.SetPoint = 100; // Set PID Setpoint
if(plus==0)
for(a=0;a&5;a++)
for(b=0;b&102;b++){}
if(plus==0)
set_temper++;
else if(subs==0)
for(a=0;a&5;a++)
for(b=0;a&102;b++){}
if(subs==0)
set_temper--;
else if(stop==0)
for(a=0;a&5;a++)
for(b=0;b&102;b++){}
if(stop==0)
get_temper();
if(flag_2==1)
if((abs(a-b))&5)
if(++count1&30)
display();
compare_temper();
if(stop==0)
for(a=0;a&5;a++)
for(b=0;b&102;b++){}
if(stop==0)
disp_1(phil);
原文链接:
责任编辑:
声明:本文由入驻搜狐号的作者撰写,除搜狐官方账号外,观点仅代表作者本人,不代表搜狐立场。
今日搜狐热点@2018 微盘
您还不是 微盘会员
开通立享签到涨空间特权豆丁微信公众号
君,已阅读到文档的结尾了呢~~
基于单片机和PID的恒温控制系统设计,pid控制系统,单片机 pid,单片机控制系统,恒温控制系统设计,恒温控制系统,单片机电梯控制系统,单片机温度控制系统,pid系统,单片机最小系统,51单片机最小系统
扫扫二维码,随身浏览文档
手机或平板扫扫即可继续访问
基于单片机和PID的恒温控制系统设计
举报该文档为侵权文档。
举报该文档含有违规或不良信息。
反馈该文档无法正常浏览。
举报该文档为重复文档。
推荐理由:
将文档分享至:
分享完整地址
文档地址:
粘贴到BBS或博客
flash地址:
支持嵌入FLASH地址的网站使用
html代码:
&embed src='http://www.docin.com/DocinViewer-4.swf' width='100%' height='600' type=application/x-shockwave-flash ALLOWFULLSCREEN='true' ALLOWSCRIPTACCESS='always'&&/embed&
450px*300px480px*400px650px*490px
支持嵌入HTML代码的网站使用
您的内容已经提交成功
您所提交的内容需要审核后才能发布,请您等待!
3秒自动关闭窗口

我要回帖

更多关于 单片机pid温度控制 的文章

 

随机推荐