基于某AD590的温度计设计

基于某AD590的温度计设计
基于某AD590的温度计设计

东 北 石 油 大 学

课 程 设 计

2014年7 月 8日

课 程

单片机课程设计 题 目 基于AD590的温度及设计

院 系 电气信息工程学院测控系 专业班级 测控11-1 学生姓名 申哲宁 学生学号 110601240118

指导教师 陆敬祎 张岩

东北石油大学课程设计任务书

课程单片机课程设计

题目基于AD590的温度及设计

专业测控技术与仪器姓名申哲宁学号110601240118 一、任务

设计一款基于AD590温度传感器,采用A/D转换器设计的温度监测系统。

二、设计要求

[1] 使用AD590将温度信号转换成模拟信号,再由0809转换成数字信号显示;

[2] 在Proteus环境下仿真课程设计内容,实现对温度计模拟现实温度;

[3] 提交规范的课程设计报告;

[4] 提交该课程设计的电路图和源程序;

三、参考资料

[1]范立南.单片机原理及应用教程[M].2006.1.

[2] 刘瑞新.单片机原理及应用教程[M].2003.7.

[3] 马建国、孟宪元.电子设计自动化技术基础[M].清华大学出版.2006.1.

[4] 姜威.实用电子系统设计基础[M].2008.1.

[5] 张靖武.单片机系统的PROTEUS设计与仿真[M].2007.4.

[6] 赵海雁.《AD590温度传感器》.测试技术学报.1997.11.

[7] 刘燕,兰志强. 《AD590集成电路温度传感器的特性测量与应用》.中国仪器

仪表,2005.6.

[8] 张新安.《用AD590制作高精度数字温度计》.实用电子制作,2007.8.

完成期限2014.6.30 至2014.7.9

指导教师陆敬祎张岩

专业负责人曹广华

2014年6月30 日

目录

第1章绪论 (3)

1.1 温度传感器AD590概述 (3)

1.2 温度计技术状况 (3)

1.3 本设计任务 (3)

第2 章总体方案论证 (4)

2.1 温度采集模块 (4)

2.2 A/D转换模块 (6)

2.3 温度值显示模块 (7)

第3章系统硬件设计 (8)

3.1 温度测量采集及加热电路模块 (8)

3.2并行A/D(模数)转换模块 (9)

3.3 标度转换的算法 (9)

3.4 数码管动态显示模块 (10)

第4章系统软件设计 (11)

4.1 驱动程序流程图 (11)

第5章系统调试与仿真结果 (13)

5.1 系统调试 (13)

结论 (15)

参考文献 (16)

附录1 程序 (17)

第1章绪论

温度测量领域的新技术不断涌现,主要表现在以下两方面:(1)温度传感器正从分立元件向集成化、智能化、系统化的方向发展;(2)在温度测量系统中普遍采用线性化处理、自动温度补偿等项新技术。

我们常见的数字温度计一般使用集成温度传感器作为温度采集元件,集成温度传感器实际上是一种半导体传感器,用晶体管的PN结的端电压与温度的线性关系制成。具有体积小,线性好、精度适中、灵敏度高、使用方便等优点。本设计中用的AD590就是一种集成传感器。

1.1 温度传感器AD590概述

AD590是AD公司设计生产的一款双端集成电路温度传感器,其输出电流与绝对温度成比例。再4~30V电源电压范围内,该器件可充当一个高阻抗恒流调节器,,调节系数为1μA/K。片内薄膜电阻经过激光调整,可用于校准器件,使该器件在298.2K(25℃)时输出298.2μA电流。

1.2 温度计技术状况

随着人们生活水平的不断提高,单片机控制无疑是人们追求的目标之一,它所给人带来的方便也是不可否定的,其中数字温度计就是一个典型的例子,但人们对它的要求越来越高,要为现代人工作、科研、生活、提供更好的更方便的设施就需要从数单片机技术入手,一切向着数字化控制,智能化控制方向发展。

1.3 本设计任务

总体的设计思路是分为测量电路部分和数字显示部分两部分分别进行设计。测量电路是对信号的采集与放大,即温度的采集放大部分。测量电路的设计要求是电路能具有良好的稳定性和测量精度,以及实现摄氏温度测量。数字显示部分又可分为A/D转换与译码显示。故采用AD590+放大器+A/D转换器(ADC0809)+AT89C51+LED显示器组合出温度计。

第2 章总体方案论证

本系统采用单片机AT89C51为LED显示屏的控制核心,系统主要包括LED 驱动模块、数据存储模块、PC机通信模块等。下面对各模块的设计逐一进行论证比较。

2.1 温度采集模块

将T-DETECT接到ADC0809的模拟信号输入端IN-0端口,然后用T-CON 控制电路加热与否,接高电平时开始加热。不需要进行其他的控制。

2.1.1 AD590的介绍

AD590是AD公司利用PN结构正向电流与温度的关系制成的电流输出型两端温度传感器.(热敏器件)

AD590是美国模拟器件公司生产的单片集成两端感温电流源。它的主要特性如下:

1、流过器件的电流(mA)等于器件所处环境的热力学温度(开尔文)度数,即:mA/K式中:—流过器件(AD590)的电流,单位为mA;T—热力学温度,单位为K。

2、AD590的测温范围为-55℃~+150℃。

3、AD590的电源电压范围为4V~30V。电源电压可在4V~6V范围变化,电流变化1mA,相当于温度变化1K。AD590可以承受44V正向电压和20V反向电压,因而器件反接也不会被损坏。

4、输出电阻为710MW。

5、精度高。AD590共有I、J、K、L、M五档,其中M档精度最高,在-55℃~+150℃范围内,非线性误差为±0.3℃。

AD590温度感测器是一种已经IC化的温度感测器,它会将温度转换为电流,在8051的各种课本中常看到它,相当常用到。

其规格如下:

温度每增加1℃,它会增加1μA输出电流。

可量测范围-55℃至150℃。

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

AD590的输出电流值说明如下:

其输出电流是以绝对温度零度(-273℃)为基准,每增加1℃,它会增加1μA输出电流,因此在室温25℃时,其输出电流Io=(273+25)=298μA。

Vo的值为Io乘上10K,以室温25℃而言,输出值为2.98V(10K×298μA)。

量测Vo时,不可分出任何电流,否则量测值会不准。

AD590的输出电流I=(273+T)μA(T为摄氏温度),因此量测的电压V为(273+T)μA ×10K= (2.73+T/100)V。为了将电压量测出来又需使输出电流I不分流出来,我们使用电压追随器其输出电压V2等于输入电压V。

由于一般电源供应较多零件之后,电源是带杂讯的,因此我们使用齐纳二极体作为稳压零件,再利用可变电阻分压,其输出电压V1需调整至2.73V。

接下来我们使用差动放大器其输出Vo为(100K/10K)×(V2-V1)=T/10V。如果现在为摄氏28度,输出电压为2.8V。

图1 AD590的封装及其基本应用电路

图2 AD590内部电路原理图

2.2 A/D转换模块

ADC0809的三个I/O口分别为EOC、CLK和CS端口,其中CLK为时钟、CS为片选、EOC为转换结束状态信号。

其中,RD与WR分别与单片机的P3.6与P3.7口相连接,片选CS接地,CLK接500kHz的数字信号,因为本设计未采用中断模式,也未采用检测转换结束状态信号,所以EOC可不接。

本模块采用的方案是根据ADC0809的时序图,用单片机的P3.6和P3.7口分别控制ADC0809的RD与WR,使其在特定的时间内不断置位与复位。从而使ADC0809不断重复的转换数据,并输出给单片机。以单片机的P0口接收数据,并存储到变量temp中。

2.2.1 ADC0809介绍

(1)ADC0809的主要特点

ADC0809模数转换器,ADC0809是8通道8位

CMOS逐次逼近式A/D转换芯片,片内有模拟量通道

选择开关及相应的通道锁存、译码电路,A/D转换后

的数据由三态锁存器输出,由于片内没有时钟需外接

时钟信号。

芯片的引脚如图21-1,各引脚功能如下:

IN0~IN7:八路模拟信号输入端。

ADD-A、ADD-B、ADD-C:三位地址码输入端。

CLOCK:外部时钟输入端。CLOCK输入频率范

围在10~1280KHz,典型值为640KHz,此时A/D转图9 adc0809

换时间为100us。51单片机ALE直接或分频后可与CLOCK相连。

D0~D7:数字量输出端。

OE:A/D转换结果输出允许控制端。

当OE为高电平时,允许A/D转换结果从D0~D7端输出。图21-1 ADC0809引脚

ALE:地址锁存允许信号输入端。

八路模拟通道地址由A、B、C输入,在ALE信号有效时将该八路地址锁存。

START:启动A/D转换信号输入端。

当START端输入一个正脉冲时,将进行A/D转换。

EOC:A/D转换结束信号输出端。

当A/D转换结束后,EOC输出高电平。

Vref(+)、Vref(-):正负基准电压输入端。

基准正电压的典型值为+5V。

(2)ADC0809芯片的工作原理

ADC0809带有片内系统时钟,该时钟与I/OCLOCK是独立工作的,无需特殊的速度或相位匹配。当CS为高时,数据输D端处于高阻状态,此时I/O CLOCK不起作用。这种CS控制作用允许在同时使用多片ADC0809时,共用I /OcLOCK,以减少多路(片)A/D使用时的I/O控制端口。一组通常的控制时序操作图如下:

图3 TLC549的工作时序

2.3 温度值显示模块

本设计所用数码管为高电位有效的数码管。如图,将数码管的控制位接到单片机的P3.0-P3.3中。数据位接到单片机的P2口。编写程序轮流给P3.0-P3.3置高电位,同时给P2口输送相应的段码。达到数码管动态扫描的效果。使其快速扫描,利用人的视觉暂留现象,和数码管的余晖,实现数码管的动态显示。

2.4 总体硬件组成框图

图4 总体硬件组成框图

第3章系统硬件设计

温度采集系统由温度采集模块、A/D转换模块和温度值显示模块三大部分组成。其中温度采集模块主要用AD590采集温度,并输出一个模拟电压信号,ADC0809接收到模拟信号后,进行A/D转换把模拟信号转换位数字信号,并行输出(一个时钟下降沿输出一次),单片机接到数据后存入累加器A,经过一定的转化,输入到七位数码管中,并动态扫描显示出来。

3.1 温度测量采集及加热电路模块

图5是AD590的基本链接。温度的变化引起电流I

的变化,通过Rl和R2的分压可得到V O=1mv/K。适当调

整R2可校准输出U0的精度。

在Proteus中我用了滑动变阻器代替了AD590了。

图5 温度测量采集及加热电路原理图

图6 用滑动变阻器代替输入模拟信号电路

3.2并行A/D(模数)转换模块

ADC0809的三个I/O口分别为EOC、CLK和CS端口,其中CLK为时钟、CS为片选、EOC为转换结束状态信号。

其中,RD与WR分别与单片机的P3.6与P3.7口相连接,片选CS接地,CLK接500kHz的数字信号,因为本设计未采用中断模式,也未采用检测转换结束状态信号,所以EOC可不接。

本模块采用的方案是根据ADC0809的时序图,用单片机的P3.6和P3.7口分别控制ADC0809的RD与WR,使其在特定的时间内不断置位与复位。从而使ADC0809不断重复的转换数据,并输出给单片机。以单片机的P0口接收数据,并存储到变量temp中。

图7 并行模数转换电路

3.3 标度转换的算法

ADC0809设定的工作温度为0℃~67℃,温度与电压成正比。当设定量程与67℃接近时测量所得温度与实际温度才能相符。

ADC0809的A/D输出为00H到FFH,可进行256等分,以此算法设定最小分度为0.2562℃,量程为0℃~67.0℃,比较符合要求。

这样通过标度转换将储存的数据转换并存入双精度型的温度变量t中,然后通过一系列算法,将t中的各位数分别转换为相应的段码。

3.4 数码管动态显示模块

本设计所用数码管为高电位有效的数码管。如图,将数码管的控制位接到单片机的P3.0-P3.3中。数据位接到单片机的P2口。编写程序轮流给P3.0-P3.3置高电位,同时给P2口输送相应的段码。达到数码管动态扫描的效果。使其快速扫描,利用人的视觉暂留现象,和数码管的余晖,实现数码管的动态显示。

图8 数码管显示模块

第4章系统软件设计

软件是该LED显示屏控制系统的重要组成部分,在系统的软件设计中我们也才用了模块化设计,将系统的各部分功能编写成子模块的形式,这样增强了系统软件的可读性和可移植性。

4.1 驱动程序流程图

图4-1 驱动程序流程图

本系统中下位机(单片机89C51)的主要功能就是实现LED显示屏上字样的移位、显示、数据的读取等功能。其主程序流程如图4-1所示。

第5章系统调试与仿真结果

5.1 系统调试

根据系统设计方案,本系统的调试共分为三大部分:仿真电路调试,程序调试和程序和仿真电路联调。由于在系统设计中采用模块设计法,所以方便对各电路模块功能进行逐级测试。

5.1.1仿真电路调试

由于Proteus软件中不包含AD590温度传感器,经老师指点以滑动变阻器代替了一下,从网上查知adc0809不可进行仿真,故用0808代替。

5.1.2程序调试

P口的P在编写程序未大写,定义字母时有落写。一开始位显示程序算错了,造成了家的困扰,后仔细检查后才发现:

bai=(datas*501/255)/100;

she=(datas*501/255)/10%10;

ge=(datas*501/255)%10;

还有就是注意ALE置零。

5.1.3 联调

将调试好的仿真电路和程序进行联调,主要调试系统的实现功能。调试过程中滑动变阻器有点问题,经过再三改变延迟等元素仍未能准确的表示滑动变阻器中输出的电压。

5.2 仿真结果

结论

此次课程设计至此已经接近尾声,一周的时间虽然很短暂,但在这一个星期的设计过程中收获颇丰。这次课程设计给了我很多启发,同时也培养了我对陌生问题的分析和解决的能力。

在本次设计的过程中,我发现很多的问题,虽然以前还做过这样的设计但这次设计真的让我长进了很多,单片机课程设计重点就在于软件算法的设计,需要有很巧妙的程序算法,虽然以前写过几次程序,但我觉的写好一个程序并不是一件简单的事,只有我们去试着做了,才能真正的掌握,学习的理论有些东西是很难理解的,更谈不上掌握。

从这次的课程设计中,我真真正正的意识到,在以后的学习中,要理论联系实际,把我们所学的理论知识用到实际当中,学习单机片机更是如此,程序只有在经常的写与读的过程中才能提高,这就是我在这次课程设计中的最大收获。

很感谢学校和老师给我们安排了这次课程设计,让我真正感受到的是合作的重要,许多时候都是同学间的讨论,老师的指导中的一句半句启发了我,就出现的让人欣喜的结果;基础知识同样很重要,在以后的学习中要加强对基础知识的学习。

参考文献

[1] 范立南.单片机原理及应用教程[M].2006.1.

[2] 刘瑞新.单片机原理及应用教程[M].2003.7.

[3] 马建国、孟宪元.电子设计自动化技术基础[M].清华大学出版.2006.1.

[4] 姜威.实用电子系统设计基础[M].2008.1.

[5] 张靖武.单片机系统的PROTEUS设计与仿真[M].2007.4.

[6] 赵海雁.《AD590温度传感器》.测试技术学报.1997.11.

[7] 刘燕,兰志强. 《AD590集成电路温度传感器的特性测量与应用》.中国仪器

仪表,2005.6.

[8] 张新安.《用AD590制作高精度数字温度计》.实用电子制作,2007.8.

[9] 汪明珠,毛德梅等.《基于AD590的温度测控电路及应用》.皖西学院报,2009.2.

[10]蒋敏兰,胡生清等.《AD590温度传感器的非线性补偿及应用》.传感器技术,

2001.2.

附录1 程序

#include

#include

#define uchar unsigned char

#define uint unsigned int

sbit ST=P2^0;

sbit OE=P2^2;

sbit ALE=P2^3;

sbit EOC=P2^1;

sbit CLK=P2^4;

long int datas,bai,she,ge;

uchar duan;

uchar code num[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f}; uchar code num_dot[]={0xbf,0x86,0xdb,0xcf,0xe6,0xed};

uchar code wei[]={0x0d,0x0b,0x07};

void delay(uint z)

{

uchar i;

while(z--)

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

}

void display()

{

uchar i=0;

bai=(datas*501/255)/100;

she=(datas*501/255)/10 % 10;

ge=(datas*501/255) % 10;

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

{

P3=wei[i];

if(i==0){duan=num_dot[bai];} else if(i==1){duan=num[she];} else if(i==2){duan=num[ge];} P0=duan;

delay(2);

}

}

void main()

{

TMOD=0x02;

TH0=0x216;

TL0=0x216;

EA=1;

ET0=1;

TR0=1;

while(1)

{

ST=OE=0;

ALE=1;

ST=1;

ALE=0;

ST=0;

while(!EOC);

OE=1;

datas=P1;

display();

}

}

void inter_1() interrupt 1 {

CLK=~CLK;

}

相关主题
相关文档
最新文档