智能仪器课程设计反应器的智能温控仪表设计Word文档下载推荐.docx
《智能仪器课程设计反应器的智能温控仪表设计Word文档下载推荐.docx》由会员分享,可在线阅读,更多相关《智能仪器课程设计反应器的智能温控仪表设计Word文档下载推荐.docx(27页珍藏版)》请在冰豆网上搜索。
其最大优点是直观、无度数误差、分辨率高、测量误差小,因而有广阔的销售市场。
(6)标定自动化。
应用计算机技术,快速、准确、自动地标定温度检测器。
根据上述要求,国内外温度仪表制造商将向以下几方面发展。
(1)继续生产量大面广的传统温度检测元件,如:
热电偶、热电阻、热敏电阻等。
(2)加强新原理、新材料、新工艺的开发。
如近来己开发的炭化硅薄膜热敏电阻温度检测器,厚膜、薄膜铂电阻温度检测器,硅单晶热敏电阻温度检测器等。
(3)向智能化、集成化、适用化方向发展。
新产品不仅要具有检测功能,又要具有判断和指令等多功能,采用微机向智能化方向发展。
随着国内外工业的日益发展,温度检测技术也有了不断的进步,目前的温度检测使用的温度计种类繁多,应用范围也较广泛,大致包括以下几种方法:
(1)利用物体热胀冷缩原理制成的温度计。
(2)利用热电效应技术制成的温度检测元件。
利用此技术制成的温度检测元件主要是热电偶。
(3)利用热阻效应技术制成的温度计。
用此技术制成的温度计大致可分成以下几种:
电阻测温元件、导体测温元件、陶瓷热敏元件。
第二章设计要求
(1)反应器由800W电加热器加热,最高温度为100°
C。
(2)反应器的温度可以设置,恒温控制过程为设置的温度,温度控制误差≤±
1°
(3)可以实时显示设置温度和实际温度,显示精度为1°
(4)当实际温度超出设置温度±
2°
C时发出报警
(5)采用STC89C51单片机和12Hz的晶振;
(6)采用位式控制、并用晶闸管过零驱动电加热器(电源电压为AC220V)。
(7)传感器为热敏电阻。
第三章设计原理
根据系统的设计要求,本方案采用单片机系统为核心,采用热敏电阻CU50作为温度传感器采集温度信号,经信号放大器放大后,送到A/D转换芯片,经单片机检测处理温度信号,通过存储器对温度数据进行存储,并通过8位数码管对温度进行显示,还可以通过功率驱动电路用单片机驱动具有交流220V电压的电阻性负载,如果需要输出与温度成正比的4~40mA电流,则需要D/A转换芯片将单片机处理的数字信号变成模拟信号。
原理设计方框图如下:
第四章设计内容
主要由硬件电路和软件电路两部分,其中硬件电路由电源电路、主控芯片STC89C51的接口连接、数码LED显示电路、I2C接口存储器和蜂鸣器的电路连接、AD和DA转换电路等等。
软件设计主要包括主程序、报警程序、数据扫描程序和按键处理程序。
4.1硬件电路的设计
由题目的设计要求可知,本设计主要采用STC89C51单片机为主芯片,再加上电源电路、LED显示电路,AD和DA转换、蜂鸣器、4-20mA电流输出电路、功率输出电路、热电阻CU50信号调理电路组成。
4.1.1主控芯片STC89C51的接口连接
单片机采用11.059MHz的时钟,单片机的P0口作为I/O使用时,需要外接上拉电阻,在本系统中,上拉电阻的阻值为1KΩ
4.1.2电源电路
电路电源输入是220VAC输入,输出为为+12V和+5V电压。
4.1.3LED显示电路
为了节省I/O空间,本系统采用两个8D锁存器74HC373分时锁存段码和位码,锁存器74HC373的功能为:
OE是输出使能控制,OE=1时,输出高阻,OE=1时,输出等于锁存器输出;
LE为锁存控制端,LE=1时,锁存器输出与输入相同,LE=0时,锁存器锁存输入信号。
两排各4个数码管显示,分别显示测量值与设定值。
数码LED显示电路
4.1.4AD转换器ADC0809的电路连接
ADC0809是典型的8位8通道逐次逼近式A/D转换器,CMOS工艺。
0809是采用逐次比较的方法完成A/D转换的。
由单一的+5V电源供电。
片内带有锁存功能的8路选1的模拟开关,由C、B、A的编码来决定所选的通道。
0809完成一次转换需100微秒左右,输出具有TTL三态锁存缓冲器,可直接连到MCS-51的数据总线上。
通过适当的外接电路,0809可对0-5V的模拟信号进行转换。
ADC0809的内部逻辑结构如图6所示。
ADC0809的内部逻辑结构
如图中所示,多路开关可选通8个模拟通道,允许8路模拟量分时输入,共用一个A/D转换器进行转换。
地址锁存于译码电路完成对A、B、C三个地址位进行锁存和译码,其译码输出用于通道选择,如表1所示。
表1通道选择表
C
B
A
选择的通道
IN0
1
IN1
IN2
IN3
IN4
IN5
IN6
IN7
8位A/D转换器是逐次逼近式,由控制与时序电路、逐次逼近寄存器、树状开关以及256R电阻阶梯网络等组成。
输出锁存器用于存放和输出转换得到的数字量。
(6)A/D0809信号引脚介绍
ADC0809芯片为28引脚双列直插是封装,其引脚排列见图4-7:
对ADC0809主要信号引脚的功能说明如下:
①IN7~IN0:
模拟量输入通道。
ADC0809对输入模拟量的要求主要有:
信号单极性,电压范围0~5V,若信号过小还需进行放大。
另外,在A/D转换过程中模拟量输入的值不应变化太快,因此,对变化速度快的模拟量,在输入前应增加采样保持电路。
②A、B、C:
地址线。
A为地位地址,C为高位地址,用于对模拟通道进行选择。
上图中为ADDA、ADDB和ADDC,其地址状态与通道相对应的关系见表3。
③ALE:
地址锁存允许信号。
在对应ALE上跳沿,A、B、C地址状态送入地址锁存器中。
ADC0809引脚图
④START;
转换启动信号。
START上跳沿时,所有内部寄存器清零;
START下跳沿时,开始进行A/D转换;
在A/D转换期间,START应保持低电平。
⑤D7~DO:
数据输出线。
其为三态缓冲输出形式,可以和单片机的数据线直接连接。
⑥OE:
输出允许信号。
其用于控制三态输出锁存器向单片机输出转换得到的数据。
OE=0时,输出数据线呈高电阻;
OE=1时,输出转换得到的数据。
⑦CLOCK:
时钟信号。
ADC0809的内部没有时钟电路,所需时钟信号由外界提供,因此有时钟信号引脚。
通常使用频率为500KHZ的时钟信号。
⑧EOC:
转换结束状态信号。
EOC=0,正在进行转换;
EOC=1,转换结束。
该状态信号即可作为查询的状态标志,又可作为中断请求信号使用。
⑨VCC:
+5V电源。
⑩VREF:
参考电源。
参考电压用来与输入的模拟信号进行比较,作为逐次逼近的基准。
其典型值为+5V(VREF(+)=+5V,VREF(-)=0V)。
(7)ADC0809应用说明
1).ADC0809内部带有输出锁存器,可以与AT89S51单片机直接相连。
2).初始化时,使ST和OE信号全为低电平。
3).送要转换的哪一通道的地址到A,B,C端口上。
4).在ST端给出一个至少有100ns宽的正脉冲信号。
5).是否转换完毕,我们根据EOC信号来判断。
6).当EOC变为高电平时,这时给OE为高电平,转换的数据就输出给单片机了。
(8)ADC0809的工作过程
1)当模拟量送至某一输入通道INT后,CPU将标识该通道编码的三位地址信号经数据线或地址线输入到ADDC、ADDB、ADDA引脚上。
2)地址锁存允许ALE锁存这三位地址信号,启动命令START启动A/D转换。
3)转换开始,EOC变低电平,转换结束,EOC变为高电平。
EOC可作为中断请求信号。
4)转换结束后,可通过执行IN指令,设法在输出允许OE脚上形成一个正脉冲,打开三态缓冲器把转换的结果输入到DB,一次A/D转换便完成了。
(9)ADC0809与CPU的接口技术
由于ADC0809输入端具有可控的三态输出门,所以它既能同微处理器直接相连,也能通过并行接口芯片同微处理器连接。
4.1.5DA转换器TLC5615的电路连接
TLC5615是一个串行10位DAC芯片,性能比早期电流型输出的DAC要好。
只需要通过3根串行总线就可以完成10位数据的串行输入,易于和工业标准的微处理器或微控制器(单片机/DSP)进行接口,适用于数字失调与增益调整以及工业控制场合。
其内部框图如下:
(1)其主要特点如下:
·
单5V电源工作·
3线串行接口·
高阻抗基准输入端(见上框图)
DAC输出的最大电压为2倍基准输入电压·
上电时内部自动复位
微功耗,最大功耗为1.75Mw·
转换速率快,更新率为1.21MHz
(2)主要引脚功能参数如下:
DIN:
串行数据输入端;
DOUT:
用于级联时的串行数据输出端;
SCLK:
串行时钟输入端;
AGND:
模拟地;
REFIN:
参考电压输入端;
:
芯片选择端,低电平有效;
OUT:
DAC模拟电压输出端;
VDD:
正电源端。
(3)主要时序图
TLC5615的时序图
(4)STC89C51单片机与TLC5615之间的接线图
TLC5615采用+5V模拟电压作为参考电压,通过电位器RPD1可以精确调整参考电压,单片机的引脚P1.3、P1.4、和P1.5和TLC5615连接,JDAC连接器用于输出模拟信号,DAC输出电压范围可达0.25V~4.75V。
4.1.6I2C接口存储器24C02和蜂鸣器的电路连接
24C02系列E2PROM芯片地址的固定部分为1010,E2、E1、E0引脚接高、低电平后得到确定的3位编码,形成的7位编码即为该器件的地址码,由于这里只寻址1个24C02,三个地址输入脚都接地,所以该芯片的地址为1010000x,x为读写位。
24C02用于保存设定值,其串行数据引脚SDA接单片机的P3.6,时钟引脚SCL接单片机的P3.7。
蜂鸣器用于报警,三极管的基极接单片机的P3.2,高电平有效。
4.1.74-20mA电流输出电路
由于负载电阻与RS5在同一支路,忽略三极管基极产生的电流,则该电路的电路输出范围为0~24mA。
4~20mA电流输出电路
电路接收10位DAC芯片TLC5615输出的模拟信号,信号范围为0~4.6V。
若TLC5615输出电压为4.6V,由于RS2=2.32kΩ,因此流过RS2的电流IRS2=2mA;
该电流流过RS3与电位器RPS1的串联电路,产生的压降1.2V,因此流过RS5的电流为
4.1.8功率输出电路
该电路采用光隔离过零型晶闸管驱动电路MOC3063Q驱动双向晶闸管BTA12,在驱动20A触点的接触器驱动2000W点加热器。
单片机输出低电平时,接触点闭合,使加热器接通220V电源,开始加热。
本系统采用单片机过零型晶闸管驱动电路,用单片机驱动具有交流220V电压的电阻性负载,这种情况,相当于单片机控制一个交流功率开关,控制负载得电与失电,特别是开关的接通时间在交流点过零瞬间,因此对电网冲击小,电磁波辐射小
4.1.9热电阻CU50信号调理电路
在本系统里,调理电路采用的是电桥法,调理电路如下图所示。
本电路采用TL431稳压电路向Cu50电桥供电,由于电桥只有连接Cu50电阻的桥臂电阻发生变化(50Ω~77.83Ω),因此属于有原理误差电桥电路。
为了减少Cu50电阻变化引起桥臂电流变化产生的误差,将电桥电阻RT2、RT3的阻值选择3kΩ。
在温度为0℃时,Cu50的阻值为50Ω,电桥通过RPT1调零后,电桥输出电压为0,假若TL431稳压值为2.5V,则流过Cu50的电流为
在温度为130℃时,Cu50阻值为77.83Ω,则Cu50的阻值变化了28.83Ω,假若忽略电阻改变引起的电流变化,则电桥的输出为
该信号采用LM258(UT2A)实现放大,由UT2A组成的差动放大器的放大倍数为18,则UT2A输出电压为
再由UT2AB组成的同向放大器放大8.2倍后,UT2B输出电压为
主要是LM258在5V电源时,最大输出电压为3.6V左右,调节RPT2,可实现满幅值调度。
若ADC采用4.096V电压作为参考电压,则ADC输出的每个数字代表
,对于3.3V的电压输入,ADC输出的数字为
,对于130℃的测温温度,每个ADC数字代表为
℃。
4.2软件电路的设计
进行微机测量控制系统设计时,除了系统硬件设计外,大量的工作就是如何根据每个测量对象的实际需要设计应用程序。
因此,软件设计在微机测量控制系统设计中占重要地位。
对于本系统,软件设计更为重要。
软件设计主要是对温度进行采集、显示,通过按键操作,进行时间的设置与修改。
因此,软件是单片机运行的程序,程序通过单片机与单片机的引脚指挥各个硬件电路部分,进而控制各种各样的对象,实现对象控制的自动化与智能化。
软件处理的任务主要有AD转换、数据处理、数据显示、键盘输入、保存数据,报警等。
在单片机测量控制系统中,大体上可分为数据处理、过程控制两个基本类型。
数据处理包括:
数据的采集、数字滤波、标度变换、非线性校正、PID等各种控制算法、按键处理、数据扫描等等。
过程控制程序主要是使单片机按一定的方法进行计算,然后再输出,以便达到测量控制目的。
4.2.1主程序
#defineuintunsignedint//宏定义
#defineucharunsignedchar
sbitAD_CLK=P1^0;
//定义ADC的时钟引脚
sbitAD_DOUT=P1^1;
//定义ADC的数据引脚
sbitAD_CS=P1^2;
//定义ADC的片选引脚
uintreadadc(void)//读取ADC数据的函数
{
uinttemp=0;
uchari;
AD_CS=1;
_nop_();
AD_CS=0;
//开始读出10位数据
for(i=0;
i<
10;
i++)
{
AD_CLK=0;
temp=(temp<
<
1)|AD_DOUT;
AD_CLK=1;
_nop_();
//两次转换间隔大于21us
}
return(temp);
//返回ADC结果
}
4.2.2读写程序
#defineuintunsignedint
#defineWDA0xa0//定义器件在总线中的地址读写为为0
#defineRDA0xa1//定义器件在总线中的地址读写为为1
sbitSDA=P3^6;
//定义24c02的SDA信号
sbitSCL=P3^7;
//定义24c02的SCL信号
voidstart()//启用总线,当SCL为高电平时,使SDA产生一个负跳变
{
SCL=0;
//SCL为低电平
SDA=0;
//SDA为低电平
SCL=1;
//SCL为高电平
SDA=1;
//SDA上升沿停止总线}
voidstop()//停用总线,当SCL为高电平时,使SDA产生一个正跳变
//SDA为高电平
//SDA下降沿启动总线
//SCL返回低电平
voidnoack()//无应答信号
//SDA为高电平
//在SCL下降沿,SDA=1,表示ack无效
bittestack()//检测ack信号
bitEB;
EB=SDA;
//在SCL下降沿,SDA=0,表示返回ack有效
return(EB);
//返回测试位
write8bit(ucharinput)//写8个二进制位到24c02的函数
uchartemp1;
for(temp1=8;
temp1!
=0;
temp1--)//循环8次,写入8位
{
SDA=(bit)(input&
0x80);
//将输入数据的高位赋于SDA
//使SCL出现下降沿,表明该位数据写入完毕
input=input<
1;
//input数据左移1位,低位向高位移动
}
viodwrite24c02(ucharch1,ucharaddress1)//写入一个字节到24c02中字节地址
start();
write8bit(WDA);
//发送器件的地址
testack();
write8bit(address1);
//发送写入字节的地址
write8bit(ch1);
//发送写入的数据
stop();
delayms(10);
//延时10ms
ucharread8bit()//从24c02中读出8个数据位的函数
uchartemp2,rbyte=0;
for(temp2=8;
temp2!
temp2--)//循环8次,读出8位
rbyte=rbyte<
//rbyte变量左移
rbyte=rbyte|((uchar)(SDA));
return(rbyte);
//返回读到8位数据
ucharread24c02(ucharch2,ucharaddress2)//从24c02地址中读一个字节的函数
//发送器件的地址写
write8bit(address2);
//发送读出字节的地址
//发送器件的地址读
write8bit(RAD);
ch2=read8bit();
//读出8位数据
noack()//无应答信号
return(ch2);
//返回读出的数据
4.2.3报警程序
#defineucharunsignedchar//宏定义
#defineuintunsignedint//宏定义
sbitRS=P1^0;
//24c02定义I/O的硬件接口
sbitRW=P1^1;
sbitE=P1^2;
sbitkey_1=P1^3;
//按键1定义I/O的硬件接口////Alarm_Value;
//温度报警值+1度
sbitkey_2=P1^4;
//按键2定义I/O的硬件接口////Alarm_Value;
//温度报警值-1度
sbitkey_3=P1^5;
//按键3定义I/O的硬件接口
sbitkey_4=P1^6;
//按键4定义I/O的硬件接口
sbitAD590_2=P1^7;
//A定义I/O的硬件接口,通道选择//C、D接地
sbitkey_6=P3^7;
//按键6定义I/O的硬件接口//控制温度报警标志位
sbitST=P3^0;
//ST和ALE接在一起
sbitOE=P3^1;
sbitEOC=P3^2;
sbitCLK=P3^3;
sbitSPK=P3^4;
//喇叭,蜂鸣器报警
sbitLED1=P3^5;
//LED报警
sbitLED2=P3^6;
#defineDPDRP2//并行数据输出接口定义
#defineDPDR_1P0//并行数据输入接口定义
uchartemp;
//最终温度值
unsignedlongtemp2;
//平均温度
unsignedlongtemp1;
//温度1,
//温度2,,
ucharAlarm_Valu