恒温箱说明说.docx
《恒温箱说明说.docx》由会员分享,可在线阅读,更多相关《恒温箱说明说.docx(20页珍藏版)》请在冰豆网上搜索。
![恒温箱说明说.docx](https://file1.bdocx.com/fileroot1/2023-1/2/1d36c5bd-6266-43f1-a4b2-b962a49a68fa/1d36c5bd-6266-43f1-a4b2-b962a49a68fa1.gif)
恒温箱说明说
测控技术课程设计
说明书
设计题目恒温控制系统的设计
姓名贺莲花1106054114米兰1106054110
陶成堂06054110张金晨1106054119
班级测控一班
专业测控技术与仪器
指导教师刘源赵金才董桂梅吴海云常若葵
完成日期2014年9月12日
提交日期2014年9月19日
目录
1概述……………………………………………………………………………………………1
2单片机人机接口系统的软件设计……………………………………………………………1
2.1系统组成…………………………………………………………………………………1
2.2基本要求…………………………………………………………………………………2
3温度测量模块的设计…………………………………………………………………………2
3.1DS18B20介绍………………………………………………………………2
3.2DS18B20的驱动程序…………………………………………………………4
4温度控制模块设计……………………………………………………8
4.1光电隔离控制电路的设计……………………………………………………8
4.2风扇PWM驱动/制冷片的控制以及程序设计………………………………………………9
5温度测量试验与分析……………………………………………………………10
5.1温度测量实验……………………………………………………………10
5.2数据处理与误差分析…………………………………………………………10
6温度控制试验与分析…………………………………………………………11
6.1升温…………………………………………………………………………………………11
6.2恒温…………………………………………………………………………………………11
7总结…………………………………………………………12
参考文献……………………………………………………………………X
附录…………………………………………………………………………X
1.概述
恒温控制在工业生产过程中举足轻重,温度的控制直接影响着工业生产的产量和质量。
本设计是基于AT89C51单片机的恒温箱控制系统,系统分为硬件和软件两部分,其中硬件包括:
温度传感器、显示、控制和报警的设计;软件包括:
键盘管理程序设计、显示程序设计、控制程序设计和温度报警程序设计。
编写程序结合硬件进行调试,能够实现设置和调节初始温度值,进行数码管显示,当加热到设定值后立刻报警。
另外,本系统通过软件实现对按键误差、加热过冲的调整,以提高系统的安全性、可靠性和稳定性。
本设计从实际应用出发选取了体积小、精度相对高的数字式温度传感元件DS18B20作为温度采集器,单片机AT89C51作为主控芯片,数码管作为显示输出,实现了对温度的实时测量与恒定控制。
[关键词]单片机;温度传感器;恒温;控制;报警
TheDesignofRefrigeratorDoorShellShapingControlSystem
BasedonSiemensWINCC
Electronic Information Engineering WANG Feng
Abstract:
ThesystemmakesuseofthesinglechipAT89C51asthetemperaturecontrollingcenter,usesnumeralthermometerDS18B20whichtransmitsas1-wirewayasthetemperaturesensor,throughthepressedkey,thenumericalcodedemonstratedcompositeoftheman-machineinteractiveconnection,torealizesetandadjusttheinitialtemperaturevalue.Afterthesystemworks,thedigitaltubewilldemonstratethetemperaturevalue,whentemperaturearrivingtothesettingvalue,thebuzzerwillbeworkimmediately.Inaddition,thesystemthroughthesoftwareadjustingtothepressedkeyerror,andtheexcessivelyhutting.Alloftheseareinordertoenhancethesystem’ssecurity,reliabilityandstability.
Keywords:
DS18B20;MCU;Constanttemperaturecontrol;1-wiretransmission
2.单片机人机接口系统的软件设计
恒温控制系统是一种广泛用于工业、农业、医疗和科研项目的温度控制设备,它可以根据实际的工作需要实现升温、保温、降温等控制,从而实现物料的烘干和产品的老化等功能。
本课程设计采用数字式温度传感器DS18B20和半导体制冷片构成温度测量与加/降温系统,实现温度控制的智能化和自动化,系统的基本框图如下:
2.1系统组成
如图1所示,系统由温度检测电路、单片机系统和温度控制电路三部分组成。
其中,温度检测电路采用数字式温度传感器,温度控制电路采用场效应管驱动制冷片加热或者降温,单片机系统不仅能够完成温度信号的采集和控制信号的输出,而且还能够实时显示温度值,通过键盘实现温度值和工作方式的设定(详细内容见设计指导书)。
2.2基本要求
2.1温度测量精度:
±1℃;
2.2制冷片输出功率可调;
2.3测量温度值在数码管上显示出来;
2.4控制温度值可通过键盘设定,并在数码管上显示;
3.温度测量模块的设计
3.1DS18B20介绍
美国Dallas半导体公司的数字化温度传感器DS1820是世界上第一片支持"一线总线"接口的温度传感器,在其内部使用了在板(ON-B0ARD)专利技术。
全部传感元件及转换电路集成在形如一只三极管的集成电路内。
一线总线独特而且经济的特点,使用户可轻松地组建传感器网络,为测量系统的构建引入全新概念。
现在,新一代的DS18B20体积更小、更经济、更灵活。
使你可以充分发挥“一线总线”的优点。
目前DS18B20批量采购价格仅10元左右。
3.1.1DS18B20的主要特征
(1)适应电压范围更宽,电压范围:
3.0~5.5V,在寄生电源方式下可由数据线供电;
(2)独特的单线接口方式,DS18B20在与微处理器连接时仅需要一条口线即可实现微处理器与DS18B20的双向通讯;
(3)DS18B20支持多点组网功能,多个DS18B20可以并联在唯一的三线上,实现组网多点测温;
(4)DS18B20在使用中不需要任何外围元件,全部传感元件及转换电路集成在形如一只三极管的集成电路内;
(5)温范围-55℃~+125℃,在-10~+85℃时精度为±0.5℃;
(6)可编程的分辨率为9~12位,对应的可分辨温度分别为0.5℃、0.25℃、0.125℃和0.0625℃,可实现高精度测温;
(7)在9位分辨率时最多在93.75ms内把温度转换为数字,12位分辨率时最多在750ms内把温度值转换为数字,速度更快;
(8)测量结果直接输出数字温度信号,以"一线总线"串行传送给CPU,同时可传送CRC校验码,具有极强的抗干扰纠错能力;
9.负压特性:
电源极性接反时,芯片不会因发热而烧毁,但不能正常工作。
3.1.2DS18B20的内部结构与外形
DS18B20内部结构主要由四部分组成:
64位光刻ROM、温度传感器、非挥发的温度报警触发器TH和TL、配置寄存器。
DS18B20的管脚排列如图1所示:
图1DS18B20引脚排列图
DS18B20引脚定义:
(1)GND为电源地;
(2)DQ为数字信号输入/输出端;
(3)VDD为外接供电电源输入端(在寄生电源接线方式时接地)。
3.1.3DS18B20的引脚及功能介绍
DS18B20的外形及TO-92封装引脚排列见左图,其引脚功能描述见表1,实测温度和数字输出的对应关系见表2.
表1DS18B20详细引脚功能描述
序号
名称
引脚功能描述
1
GND
地信号
2
DQ
数据输入/输出引脚。
开漏单总线接口引脚。
当被用着在寄生电源下,也可以向器件提供电源。
3
VDD
可选择的VDD引脚。
当工作于寄生电源时,此引脚必须接地。
表2温度值分辨率配置表
温度
数字输出(二进制)
数字输出(十六进制)
+125℃
0000011111010000
07D0H
+85℃
0000010101010000
0550H
+25.0625℃
0000000110010001
0191H
+10.125℃
0000000010100010
00A2h
+0.5℃
0000000000001000
0008H
0℃
0000000000000000
000H
-0.5℃
1111111111110000
FFF8H
-10.125℃
1111111101011110
FF5EH
-25.0625℃
1111111001101111
FF6FH
-55℃
1111110010010000
FC90H
3.1.4 DS18B20的使用方法
由于DS18B20采用的是1-Wire总线协议方式,即在一根数据线实现数据的双向传输,而对AT89S51单片机来说,硬件上并不支持单总线协议,因此,我们必须采用软件的方法来模拟单总线的协议时序来完成对DS18B20芯片的访问。
由于DS18B20是在一根I/O线上读写数据,因此,对读写的数据位有着严格的时序要求。
DS18B20有严格的通信协议来保证各位数据传输的正确性和完整性。
该协议定义了几种信号的时序:
初始化时序、读时序、写时序。
所有时序都是将主机作为主设备,单总线器件作为从设备。
而每一次命令和数据的传输都是从主机主动启动写时序开始,如果要求单总线器件回送数据,在进行写命令后,主机需启动读时序完成数据接收。
数据和命令的传输都是低位在先。
DS18B20的复位时序,见图3
图3DS18B20的复位时序图
置总线为低电平并保持至少480us,然后拉高电平,等待从端重新拉低电平作为响应,则总线复位完成。
DS18B20的读时序,见图4。
图4DS18B20的读时序图
对于DS18B20的读时序分为读0时序和读1时序两个过程。
对于DS18B20的读时隙是从主机把单总线拉低之后,在15秒之内就得释放单总线,以让DS18B20把数据传输到单总线上。
DS18B20在完成一个读时序过程,至少需要60us才能完成。
DS18B20的写时序,见图5。
图5DS18B20的写时序图
对于DS18B20的写时序仍然分为写0时序和写1时序两个过程。
对于DS18B20写0时序和写1时序的要求不同,当要写0时序时,单总线要被拉低至少60us,保证DS18B20能够在15us到45us之间能够正确地采样IO总线上的“0”电平,当要写1时序时,单总线被拉低之后,在15us之内就得释放单总线。
DS18B20在电路中的连接,见图6。
wire总线支持一主多从式结构,硬件上需外接上拉电阻。
当一方完成数据通信需要释放总线时,只需将总线置高点平即可;若需要获得总线进行通信时则要监视总线是否空闲,若空闲,则置低电平获得总线控制权。
图6DS18B20测温电路
3.1.5DS18B20工作原理
DS18B20测温原理如图2所示。
图中低温度系数晶振的振荡频率受温度影响很小,用于产生固定频率的脉冲信号送给计数器1。
高温度系数晶振随温度变化其振荡率明显改变,所产生的信号作为计数器2的脉冲输入。
计数器1和温度寄存器被预置在-55℃所对应的一个基数值。
计数器1对低温度系数晶振产生的脉冲信号进行减法计数,当计数器1的预置值减到0时,温度寄存器的值将加1,计数器1的预置将重新被装入,计数器1重新开始对低温度系数晶振产生的脉冲信号进行计数,如此循环直到计数器2计数到0时,停止温度寄存器值的累加,此时温度寄存器中的数值即为所测温度。
图2中的斜率累加器用于补偿和修正测温过程中的非线性,其输出用于修正计数器1的预置值。
图2DS18B20测温原理框图
3.2DS18B20的驱动程序
#include
#defineucharunsignedchar
#defineuintunsignedint
sbitDS=P2^2;//defineinterface
uinttemp;//variableoftemperature
ucharflag1;//signoftheresultpositiveornegative
sbitdula=P2^6;
sbitwela=P2^7;
unsignedcharcodetable[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,
0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71};
unsignedcharcodetable1[]={0xbf,0x86,0xdb,0xcf,0xe6,0xed,0xfd,
0x87,0xff,0xef};
voiddelay(uintcount)//delay
{
uinti;
while(count)
{
i=200;
while(i>0)
i--;
count--;
}
}
voiddsreset(void)//sendresetandinitializationcommand
{
uinti;
DS=0;
i=103;
while(i>0)i--;
DS=1;
i=4;
while(i>0)i--;
}
bittmpreadbit(void)//readabit
{
uinti;
bitdat;
DS=0;i++;//i++fordelay
DS=1;i++;i++;
dat=DS;
i=8;while(i>0)i--;
return(dat);
}
uchartmpread(void)//readabytedate
{
uchari,j,dat;
dat=0;
for(i=1;i<=8;i++)
{
j=tmpreadbit();
dat=(j<<7)|(dat>>1);//读出的数据最低位在最前面,这样刚好一个字节在DAT里
}
return(dat);
}
voidtmpwritebyte(uchardat)//writeabytetods18b20
{
uinti;
ucharj;
bittestb;
for(j=1;j<=8;j++)
{
testb=dat&0x01;
dat=dat>>1;
if(testb)//write1
{
DS=0;
i++;i++;
DS=1;
i=8;while(i>0)i--;
}
else
{
DS=0;//write0
i=8;while(i>0)i--;
DS=1;
i++;i++;
}
}
}
voidtmpchange(void)//DS18B20beginchange
{
dsreset();
delay
(1);
tmpwritebyte(0xcc);//addressalldriversonbus
tmpwritebyte(0x44);//initiatesasingletemperatureconversion
}
uinttmp()//getthetemperature
{
floattt;
uchara,b;
dsreset();
delay
(1);
tmpwritebyte(0xcc);
tmpwritebyte(0xbe);
a=tmpread();
b=tmpread();
temp=b;
temp<<=8;//twobytecomposeaintvariable
temp=temp|a;
tt=temp*0.0625;
temp=tt*10+0.5;
returntemp;
}
voidreadrom()//readtheserial
{
ucharsn1,sn2;
dsreset();
delay
(1);
tmpwritebyte(0x33);
sn1=tmpread();
sn2=tmpread();
}
voiddelay10ms()//delay
{
uchara,b;
for(a=10;a>0;a--)
for(b=60;b>0;b--);
}
voiddisplay(uinttemp)//显示程序
{
ucharA1,A2,A2t,A3,ser;
ser=temp/10;
SBUF=ser;
A1=temp/100;
A2t=temp%100;
A2=A2t/10;
A3=A2t%10;
dula=0;
P0=table[A1];//显示百位
dula=1;
dula=0;
wela=0;
P0=0x7e;
wela=1;
wela=0;
delay
(1);
dula=0;
P0=table1[A2];//显示十位
dula=1;
dula=0;
wela=0;
P0=0x7d;
wela=1;
wela=0;
delay
(1);
P0=table[A3];//显示个位
dula=1;
dula=0;
P0=0x7b;
wela=1;
wela=0;
delay
(1);
}
voidmain()
{
uchara;
do
{
tmpchange();
//delay(200);
for(a=10;a>0;a--)
{display(tmp());
}
}while
(1);
}
4.温度控制模块设计
4.1光电隔离控制电路的设计
光耦合器一般由三部分组成:
光的发射、光的接收及信号放大。
输入的电信号驱动发光二极管(LED),使之发出一定波长的光,被光探测器接收而产生光电流,再经过进一步放大后输出。
这就完成了电—光—电的转换,从而起到输入、输出、隔离的作用。
由于光耦合器输入输出间互相隔离,电信号传输具有单向性等特点,因而具有良好的电绝缘能力和抗干扰能力。
又由于光耦合器的输入端属于电流型工作的低阻元件,因而具有很强的共模抑制能力。
所以,
它在长线传输信息中作为终端隔离元件可以大大提高信噪比。
在计算机数字通信及实时控制中作为信号隔离的接口器件,可以大大增加计算机工作的可靠性。
4.2风扇PWM驱动程序/制冷片的控制以及程序设计
sbitge=P2^0;
sbithe=P1^0;
voidmain()
{
uchara,key,i,j=0,t[]={1,1},s=0,s3,m,n;
he=1;
ge=1;
do
{
tmpchange();
display(tmp());
key=key_scan();/*当按下按键不松手时,程序会停在key_scan()子程序中;六个数码管的最右边
一个显示上次的数字,其他5个全灭,这是因为:
六个数字是动态显示的,每一时刻只能有一个显示,
又由于显示程序中最后点亮的是最右边的一个,所以其显示的数字保持到下一次显示前。
*/
if(key==11)j=!
j;
if(16!
=key&&j)
{
for(i=4;i<6;i++)
{
table_buffer[0+i]=table_buffer[1+i];
}
table_buffer[5]=table[key];//更新缓冲数组的最右边的值,即当前按下的键号。
s3=key*t[s];
if(key==10&&j)
{
table_buffer[4]=0x40;
table_buffer[5]=0x40;
}
s2=s2*10+s3;
s=s+1;
if(s==2)
{
s=0;
s2=(int)s2%10;
}
}
disp();
if(s1{
if(s1>0)
{
he=0;
m=(int)((s2-s1)*s1/s*10);
n=(int)(s1/s2*0.01);
ge=0;
for(;m--;m>0);
ge=1;
for(;n--;n>0);
}
elseif(s1{
bj=0;
}
else
{
he=0;
ge=0;
}
}
else
{
ge=1;
he=1;
}
}while
(1);
}
5.温度测量试验与分析
5.1温度测量实验
DS18B20测量值
29.4
31.5
33.6
36.5
38.7
40.5
42.5
44.0
46.7
玻璃温度计值
28.4
30.2
32.4
35.3
37.5
39.1
41.2
43.6
45.3
5.2数据处理与误差分析(最大的引用误差)
误差分别为,1.0、1.3、1.2、1.2、1.2、1.4、1.3、1.4、1.4
由误差分析可得温度计总是比DS18B20测量值要低,因此可以知道DS18B20要比温度计要灵敏且反应箱子内的温度及时,并且随着温度的升高,误差越来越大。
6.温度控制试验与分析
6.1升温
温度测量数值表
序号
1
2
3
4
5
6
7
8
9
系统测量值
29.3
33.2
35.4
37.6
39.5
41.7
43.6
44.3
45.2
时间
1min
2min