基于AD590的智能温度测量仪表软件设计.docx

上传人:b****0 文档编号:12457840 上传时间:2023-04-19 格式:DOCX 页数:23 大小:458.02KB
下载 相关 举报
基于AD590的智能温度测量仪表软件设计.docx_第1页
第1页 / 共23页
基于AD590的智能温度测量仪表软件设计.docx_第2页
第2页 / 共23页
基于AD590的智能温度测量仪表软件设计.docx_第3页
第3页 / 共23页
基于AD590的智能温度测量仪表软件设计.docx_第4页
第4页 / 共23页
基于AD590的智能温度测量仪表软件设计.docx_第5页
第5页 / 共23页
点击查看更多>>
下载资源
资源描述

基于AD590的智能温度测量仪表软件设计.docx

《基于AD590的智能温度测量仪表软件设计.docx》由会员分享,可在线阅读,更多相关《基于AD590的智能温度测量仪表软件设计.docx(23页珍藏版)》请在冰豆网上搜索。

基于AD590的智能温度测量仪表软件设计.docx

基于AD590的智能温度测量仪表软件设计

目录

前言………………………………………………………………………………………1

第一章智能温度测量仪表方案设计与论证………………………2

1.1功能与要求……………………………………………………………………2

1.2方案的论证与比较…………………………………………………………2

1.3方案的确定……………………………………………………………………3

第二章智能温度测量仪表的硬件设计………………………………4

2.1系统硬件设计…………………………………………………………4

2.2输入通道电路的设计…………………………………………………4

2.3人机接口电路的设计…………………………………………………6

2.4自校准电路的设计……………………………………………………7

第三章智能温度测量仪表软件设计……………………………………8

3.1主程序设计………………………………………………………………………8

3.2自校准的软件实现………………………………………………………………9

3.3温度采集子程序设计…………………………………………………………10

3.4 数字滤波的设计………………………………………………………………10

3.5 A/D转换子程序设计………………………………………………………11

3.6 键盘/显示子程序设计………………………………………………………12

第四章温度测量系统的安装与调试……………………………………13

4.1硬件调试………………………………………………………………………13

4.2软件调试………………………………………………………………………13

第五章设计体会与小结………………………………………………………14

参考文献……………………………………………………………………………15

附录………………………………………………………………………………………16

 

前言

电子课程设计是电子技术学习中非常重要的一个环节,是将理论知识和实践能力相统一的一个环节,是真正锻炼学生能力的一个环节。

温度控制系统在实际应用中起着非常重要的作用,基本上人们的生活离不开它。

随着科学研究、工业和家用电器等方面对测温和温控的需要,各种新型的集成温度传感器是将温敏晶体管与相应的辅助电路集成在同一块芯片上,它能直接给出正比于绝对温度的理想线性输出。

在众多温度传感器中,集成温度传感器AD590因其线性好,精确度高和易于实现计算机在线测试与数据处理等优点,在生活中有着广泛应用。

科学技术的迅猛发展,特别是自动化技术和计算机技术的发展,极大的促进了智能化技术的发展,同时对智能化技术提出了更高的要求。

温度传感器的应用范围很广,它不仅广泛应用于日常生活中,而且也大量应用于自动化和过程检测控制系统。

温度传感器的种类很多,我们需要根据现场使用条件,选择恰当的传感器类型才能保证测量的的准确可靠,并同时达到增加使用寿命和降低本钱的作用。

我们要注重注重智能仪器基本原理和基本设计方法,同时注重理论结合实际,引入设计实例,从而提高自己的分析、解决实际问题的能力,为以后的学习和工作打下扎实的理论和实践基础。

一方面我们要注重智能仪器的发展方向,加强对新器件、新技术的了解,拓宽知识面;另一方面,我们要增强学习的主动性和求知欲望。

 

第一章AD590测温电路方案设计与论证

1.1功能与要求

功能:

此次课程设计主要完成测温电路的设计,其中要包括一些智能化功能。

所设计的电路要求可以完成温度信号的采集放大以及在LED上显示,另外还可以通过键盘对温度进行设定

要求:

测温电路的测温范围:

0~100

;测温精度:

±0.3

提出系统的设计方案,给出系统方框图,分析系统的工作原理及和实现的功能,给出系统的硬件设计,系统软件设计包括系统实现的功能、程序主流程图、子程序流程图等,还要完成系统制作与调试。

1.2方案的论证与比较

方案一:

采用Pt100铂热电阻温度传感器采集温度数据。

PT100温度传感器0℃时电阻值为100Ω,电阻变化率为0.3851Ω/℃。

由于其电阻值小,灵敏度高,所以引线的阻值不能忽略不计,采用三线式接法可消除引线线路电阻带来的测量误差。

电桥输出电压是mv级,再后级采用仪用放大器对信号进行放大,为了能在ADC采样后得到的数字值是从零开始。

还需在放大电路后面加上调零电路。

然后得到一个0—5V的电压信号,输入A/D转换器之后将模拟电压变成便于单片机处理的数字信号。

方案二:

采用DS1820数字传感器采集温度数据,然后送入单片机进行数据处理。

通过一个单线接口发送或接收数据,因此单片机与DS18B20之间仅需一条连线(加上地线)。

作为温度采集芯片,可直接将采集值进行处理得到数字量送入单片机数码管显示并通过串口送至上位机。

采用此芯片做温度采集,使得硬件电路结构简单,同时也避免了使用多级电路出现前后级阻抗不匹配的问题,不但节约了硬件部分的成本,提高了采集数据的可靠度。

方案三:

采用AD590温度传感器采集温度数据,然后送入单片机进行数据处理。

AD590温度传感器是一种已经IC化的温度感测器,它会将温度转化成电流。

温度每增加1度,它会增加1uA输出电流。

可测温度范围-55到150。

供电电压范围+4V至+30V。

三种方案进行比较:

DS18B20温度范围只能在-55度到+125度之间。

由集成的数字温度传感器DS18B20完成温度的采集,A/D自动转换等工作,减少了硬件电路的搭建,更加便于设计。

Ptl00铂电阻具有抗震性能好、测温范围广、测量精度高等优点,使得测量更加的准确,但它所采集的温度信号需要经过仪用放大器处理,还要经过专门的A/D转换电路将模拟信号转换成数字信号。

采用AD590增加了硬件的投入,同时也引入一些不稳定的因素造成的误差。

1.3方案的确定

通过比较,最后采用AD590设计,它精度高、价格低、不需辅助电源、线性好是比较理想的测温元件,故确定此次课程设计为基于温度传感器AD590的智能测温电路。

基于AD590的测温电路为首先将采集到的温度值送给温度传感器经过I/V转换送入仪用放大器AD620经放大后的模拟信号进入A/D转换器AD574转变为数字量送给单片机进行分析和处理。

然后单片机将处理好的数字量送入LED显示器显示,从而与实际温度进行比较得到控制量,调节实际温度使之与设定温度逼近。

 

 

第二章智能温度测量仪表的硬件设计

 2.1系统硬件设计

温度控制系统组成框图如图2.1所示,其中传感器选用集成温度传感器AD590,信号调理电路包括I/V转换电路、仪用放大器、数字滤波、自校准等,A/D转换器选用A/D574,显示电路为LED显示。

基本过程为烘烤箱的温度信号经温度传感器AD590后送入到信号调理电路中经I/V转换、放大、滤波后的模拟信号送给A/D转换器,A/D转换电路将模拟量转换成数字量送给单片机进行分析处理然后送给显示电路显示,键盘可以对温度进行设定。

图2.1系统硬件框图

2.2输入通道电路的设计

(1)输入通道的硬件电路包括AD590测温电路,放大电路,A/D转换与单片机接口电路。

AD590作为温度采集芯片,将采集到的温度信号经AD590测温电路处理后送给放大电路,再经A/D转换后送到单片机进行分析和处理。

AD590测温电路如图2.2所示其中包括I/V转换及温标转换电路

图2.2AD590测温电路原理图

 

(2)放大电路选用的放大器为仪用放大器AD620,AD620为三运放集成的仪表放大器结构,

它的两个内部增益电阻为24.7K因而增益方程式为G=49.4k/RG+1,对于所需的增益则外部控制电阻值为RG=49.4/(G-1)K,放大电路如下图2.3所示。

图2.3放大电路原理图

(3)A/D转换与单片机接口电路采用的是8051单片机与AD590的接口电路,其中还使用了三态锁存器74LS373和74LS00与非门电路,因为51系列单片机是8位机,如果AD574启动为12位转换方式,转换结果只能按双字节分时读入,所以引脚12/8接地。

当8051的P3.0查询到STS端转换结束信号后,先将转换后的12位A/D数据的8位读进8051,然后再将低四位读进8051。

这里不管AD574是处在启动,转换和输出结果,使能端CE必须为1,因此将8051的写控制线WR-和读控制线RD-通过与非门74LS00与AD574的使能端CE相连。

电路原理图如图2.4所示

图2.4A/D转换与单片机接口电路原理图

2.3人机接口电路的设计

人机接口电路的设计,它主要由四位一体数码显示管、4*4矩阵键盘和CH451芯片构成,用于实现系统的温度显示与温度设定功能。

人机接口电路的原理图如图2.5所示

图2.5人机接口电路原理图

 

2.4自校准电路的设计

由于校准对于状态性能很重要,所以器件在每次上电后均要即时执行自校准。

另外,器件亦可容许用户根据需要以手动形式执行自校准工作。

一般来说,这顶功能会在当系统温度超出原先系统设计所订立的阈值时启动。

下图2.6为输入偏置电流自动补偿和校准电路,在仪器的输入高端和低端输入一个带有屏蔽的10M电阻盒,输入偏执电流Ib在该电阻上产生压降,经A/D转换后存储于非易失性校准存储器内,作为输入偏置电流的修正值。

在正常测量时,微处理器根据修正值选出适当的数字量到D/A转换器,经输入偏置电流补偿电路产生补偿电流Ib1,抵消Ib,消除仪器输入偏置电流带来的测量误差。

 

图2.6输入偏置电流自动补偿和校准电路原理图

 

第三章智能温度测量仪表软件设计

3.1主程序设计

温度采集芯片AD590将采集到的温度信号送给信号调理电路进行I/V转换和放大处理,再经A/D转换送给单片机分析和处理,输出的数字量用LED显示并与设定温度进行比较,小于设定温度则显示实时温度,下图3.1为主程序流程图。

 

图3.1主程序流程图

主程序如附录所示

 

3.2自校准的软件实现

软件方法进行自校准时,用信号发生器送出标准信号,将此标准信号直接送至输入电路,进行自校准程序,观察显示的温度值是否为标准信号所对应的温度值。

如有误差,则按“参数”键,根据显示的温度值(五位)与标准值的差别,再按动“增加”或“减少”键直至显示准确温度值时为止,自校准程序流程图如图3.2所示。

 

图3.2自校准程序流程图

3.3温度采集子程序

温度传感器获取温度值,并送往单片机进行处理和显示,同时对温度信号进行监测,首先将AD590初始化对温度信号进行采集,定时时间到则采集完成对数据经传输否则继续采集,温度采集子程序如图3.3所示。

 

图3.3温度采集子程序流程图

温度采集子程序如附录所示

3.4数字滤波的设计

数字滤波采用的是限幅滤波算法,又称程序滤波算法。

方法为:

1)根据经验判断,确定两次采样允许的最大偏差值(设为A);

2)每次检测到新值时判断;

3)如果本次值与上次值之差>A,则此次值无效,放弃本次值用上次值

代替本次值

优点:

能有效克服偶然误差引起的脉冲干扰

缺点:

无法抑制那种周期性的脉冲干扰;平滑度差

 

图3.4限幅滤波程序流程图

/*A值可根据实际情况调整value为有效值new_value为当前采样值滤波程序返回有效的实际值*/

#defineA10

Charvalue;

{charnew_value;

new_value=get_ad();

If{(new_value-value)>A||(value-new_value)>A}

returnvalue;

returnnew_value;

}

 

3.5A/D转换子程序

逻辑控制信号由8051的数据口P0出发,并由三态锁存器输出端Q0,Q1,Q2上,用于控制AD574A的工作过程。

当8051的P3.0查询到STS端转换结束信号后,先将转换后的12位A/D数据的8位读进8051,然后再将低四位读进8051,A/D转换子程序流程图如图3.5所示。

 

图3.5A/D转换子程序流程图

A/D转换子程序如附录所示

3.6键盘/显示子程序

当键盘没有键按下时,将会显示原来设定的温度,键盘上的按键标志位A按下时可以对温度进行设定,A键没有按下则显示实时温度,键盘/显示子程序如图3.6所示。

图3.6键盘/显示子程序流程图

键盘/显示子程序如附录所示

第四章温度测量系统的安装与调试

4.1硬件调试

硬件调试部分我们按照设计好的电路图进行焊接,焊接完成后开始查错,查错的过程较为繁琐,主要是看有没有出现虚焊和短路等情况。

4.2软件调试

将编译好的初始编译好的程序加载到烧写板上,发现不能达到预期的效果,存在一定的误差,在程序中又加入了自校准程序重新将编译好的程序加载到程序烧写板上,将焊好的电路板与单片机最小系统按照管脚要求相连通电后观察现象,在电路板上可以观察到数码管显示为31℃,实验现象初步正确,再看键盘接入是否正确,通过键盘A键可以设定温度,当A键按下时可以对温度值进行设定则键盘接入正确。

又可以观察到当采集温度值大于设定温度时二极管不亮表示加热停止,采集温度值比设定温度小时二极管亮则表示继续加热,通过上述实验现象可以确定软件调试成功。

 

第五章设计体会与小结

这次课程设计让我充分认识到团队合作的重要性,只有分工协作才能保证整个项目的有条不絮。

另外在课程设计的过程中,当我们碰到不明白的问题时,指导老师总是耐心的讲解,给我们的设计以极大的帮助,使我们获益匪浅。

因此非常感谢老师的教导。

通过这次设计,我懂得了学习的重要性,了解到理论知识与实践相结合的重要意义,学会了坚持、耐心和努力,这将为自己今后的学习和工作做出了最好的榜样。

我觉得作为一名测控专业的学生,这次课程设计是很有意义的。

更重要的是如何把自己平时所学的东西应用到实际中。

虽然自己对于这门课懂的并不多觉得很难,也没有很有效的办法通过自身去理解,但是通过这两个星期的学习,我学到了很多东西也让我更加自信。

 

参考文献

1、《智能仪器》 史健芳主编 

电子工业出版社2007.9

2、《单片机微型计算机与接口技术》李群芳张士军黄建主编

电子工业出版社2008.5

3、《测控电路》张国雄主编

机械工业出版社2008.1

4、《ProtelDXP实用教程》赵志刚吴海彬主编

清华大学出版社2007.8

5、《传感器与传感技术应用》丁镇生主编

电子工业出版社2007.3

 

附录

主程序如下所示:

main()

{unsignedcharTempH,TempL,i,j,m;

relay=1;

ch451_init();//初始化451

ch451_write(0x0403);//开显示、键盘

ch451_write(0x580);//设置BCD译码

EA=1;//开中断

while

(1)

{EX1=1;//允许键盘中断

flag=0;

if(setb==1)

{

Set_temp();

}

str[0]=TempH/100;//百位温度

ch451_write(CH451_DIG0|str[0]);

str[1]=(TempH%100)/10;//十位温度

ch451_write(CH451_DIG1|str[1]);

str[2]=(TempH%100)%10;//个位温度,带小数点

ch451_write(CH451_DIG2|str[2]);

ch451_write(CH451_DIG3|0x0c);

for(i=0;i<3;i++)

{

if(str[i]>showtemp[i])//则停止加热

{

m=1;

i=i+3;

}

elseif(str[i]

{

m=0;

i=i+3;

}

elsem=m;//继续比较

}

relay=m;

{

temp=ReadTemperature();

TempH=temp>>4;

TempL=temp&0x0F;

TempL=TempL*6/10;//小数近似处理

}

}

}

}

温度采集子程序如下所示:

AJMPP10

ORG33H

P10:

NOP

MOV091H,#01H;---置p1.0为高阻输入

MOV092H,#00H

MOV0C6H,#00H;---结果位清零

MOV0BEH,#00H

MOV0C5H,#0E8H;---开始ADC转换

P20:

MOVA,#010H;---判断ADC转换完成否

ANLA,0C5H

JZP20

MOV0C5H,#00H;结束ADC转换

;*********************************

;整理检测到的A/D十位二进制数

MOVA,0C6H

ANLA,#0C0H

SWAPA

CLRC

RRCA

CLRC

RRCA

MOVR6,A

MOVA,0C6H

CLRC

RLCA

CLRC

RLCA

MOVR7,A

MOVA,0BEH

ANLA,#03H

ORLA,R7

MOVR7,A

RET

END

A/D转换子程序如下所示:

#include

//#defineAD574POL2

//#defineAD57420V

unsignedcharDisTab[]={

0xfc,0x60,0xda,0xf2,0x66,0xb6,0xbe,0xe0,0xfe,0xf6,

0xfd,0x61,0xdb,0xf3,0x67,0xb7,0xbf,0xe1,0xff,0xf7,0x00,0x02,

};

unsignedcharDisBuffer[9]={0,20,20,20,20,20,20,20,};

#defineAD574DataP1

sbitAD574_A0=P0^0;

sbitAD574_RC=P0^1;

sbitAD574_STS=P0^2;

#defineADC_8AD574_A0=0;//

#defineOut_H8AD574_A0=0;//高八位输出

#defineOut_L4AD574_A0=1;//低四位输出

#defineAD574_StartAD574_RC=0;

#defineAD574_ReadAD574_RC=1;

unsignedintAD574value;

voidSelDis(void)

{

unsignedinti;

for(i=0;i<8;i++)

{

SBUF=DisTab[DisBuffer[i]];

while(!

TI);TI=0;

}

for(i=0;i<10000;i++);

}

voidAD574Convert(void)//双极

{

unsignedcharh8,l4;

ADC_8;

AD574_Start;//启动转换

while(AD574_STS==1);//等待转换结束

AD574_Read;

Out_H8;

h8=AD574Data;

Out_L4;

l4=AD574Data;

}

键盘/显示子程序如下所示:

voidSet_temp(void)//设定保温点

{unsignedchari;

ch451_write(CH451_DIG0|showtemp[0]);//显示原来设定温度

ch451_write(CH451_DIG1|showtemp[1]);

ch451_write(CH451_DIG2|showtemp[2]);//设定温度

ch451_write(CH451_TWINKLE|1);//闪烁

EX1=1;//允许键盘中断

while(flag==0);

EX1=0;//禁止键盘中断

flag=0;

showtemp[0]=ch451_key;//保存数据

ch451_write(CH451_DIG0|showtemp[0]);//显示键值

ch451_write(CH451_TWINKLE);//停止闪烁

ch451_write(CH451_TWINKLE|2);

EX1=1;//允许键盘中断

while(flag==0);

EX1=0;//禁止键盘中断

flag=0;

showtemp[1]=ch451_key;

ch451_write(CH451_DIG1|showtemp[1]);

ch451_write(CH451_TWINKLE);

ch451_write(CH451_TWINKLE|4);

EX1=1;//允许键盘中断

while(flag==0);

EX1=0;//禁止键盘中断

flag=0;

showtemp[2]=ch451_key;

ch451_write(CH451_DIG2|showtemp[2]);

ch451_write(CH451_TWINKLE);

setb=0;

}

//********************************************************************

//键盘中断读取键值并且转换为二进制代码

//********************************************************************

voidch451_inter()interrupt2using1

{unsignedchari;

unsignedcharkeycode1,keycode;//定义命令字,和数据存储器

keycode1=0x07;//输入读451命令字

ch451_load=0;

for(i=0;i<4;i++)

{ch451_din=keycode1&1;//送入最低位

ch451_dclk=0;

keycode1>>=1;//往右移一位

ch451_dclk=1;//产生时钟上升沿锁通知CH451输入位数据

}

ch451_load=1;//产生加载上升沿通知CH451处理命令数?

keycode=0;//清除keycode

keycode1=0;

ch451_dclk=0;//产生时钟下升沿通知CH451输出下一位

ch451_dclk=1;

for(i=0;i<3;i++)//输出行数有四行第一行0

{

keycode1<<=1;

keycode1|=ch451_dout;

ch451_dclk=0;

ch451_dclk=1;

}

for(i=0;i<3;i++)//输出列数四列第一列为0

{

keycode<<=1;

keycode|=ch451_dout;

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 高等教育 > 法学

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1