温度测控仪设计毕业设计_第1页
温度测控仪设计毕业设计_第2页
温度测控仪设计毕业设计_第3页
温度测控仪设计毕业设计_第4页
温度测控仪设计毕业设计_第5页
已阅读5页,还剩33页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、温度测控仪设计学生:XXX 指导教师:XXX内容摘要:本文主要介绍了智能温度测量仪的设计,包括硬件和软件的设计。先对该测量仪进行概括性介绍,然后介绍该测量仪在硬件设计上的主要器件:“Pt100热电阻”、AT89C51单片机和LCD显示器以及描述测量仪的总体结构原理。在本设计中,是以铂电阻PT100作为温度传感器,采用恒流测温的方法,通过单片机进行控制,用放大器、A/D转换器进行温度信号的采集。总体来说,该设计是切实可行的。 关键词:温度 Pt100热电阻 AT89C51单片机 LCD显示器Design of and control instrumentAbstract: This paper

2、describes the design of the intelligent temperature measuring instrument, including hardware and software design. Be the first general description of the measuring instrument, and then describes the hardware design of the measuring instrument's main device: "Pt100 thermal resistance",

3、AT89C51 microcontroller and LCD display, and describe the principle of measuring the overall structure. In this design, as is the PT100 platinum resistance temperature sensor, temperature measurement using constant current method, through the microcontroller to control, amplifier, A/D converter for

4、temperature signal acquisition. Overall, the design is feasible. Keywords: temperature Pt100 thermal resistance AT89C51 microcontroller LCD monitor.目 录前言11 总体硬件方案设计11.1 温度传感器的放大电路设计21.2 TLC549 模数转化电路设计41.3 显示电路设计51.4 无线发送与接收模块的选择与设计51.5 键盘设计62 总体的软件程序的设计62.1 温度数据采集和数据处理子程序的设计62.2 温度显示、保存处理的子程序设计72.3

5、 无线发送与接受的子程序的设计72.4 十组温度查询的子程序设计93 调试与结果分析103.1 调试仪器及方法103.3 软、硬件调试与故障原因分析104 结束语10附录1:硬件原理图及PCB板12附录2:软件程序代码13参考文献34温度测控仪的设计前言随着工业生产效率的不断提高,自动化水平与范围也不断扩大,因而对温度检测技术的要求也愈来愈高, 现在工业上通用的温度检测范围为2003000,而今后要求能测量超高温度与超低温度。尤其是液化气体的极低温度测量更为迫切,入10K以下温度测量为当今研究的重要课题。温度检测技术将会由点测温发展到线、面,甚至立体的测温。应用范围已经从土业领域延伸到环境保护

6、、家用电器、汽车工业以及航天工业领域。发展新型产品利用以前的检测技术生产处适应于不同场合、不同工况要求的新型产品,以满足用户需要。同时利用新的检测技术制造出新的产品。对许多场合中的温度检测器有特殊要求,入防硫、防爆、耐磨等性能要求;又如移动物体和高速旋转物体的测温、钢水的连续测温、火焰温度检测等。因此,本设计方向就是在温度测量远距离传送和保存方面进行有效的探索。1 总体硬件方案设计本系统分为两大部分,一部分为温度采集模块、51单片机及发送模块,另一部分为远距离数据的接收模块与51单片机。温度采集及发送部分:本设计利用AD590进行温度的测量,在经过电压跟随器,放大电路放大、调整之后通过A/D转

7、换器TLC549将模拟电压信号转化为数字信号,A/D转换之后的数据送到单片机1进行处理,单片机1控制液晶显示器,将温度值在液晶显示器上进行显示,在通过PT2262进行无线发送。接收及显示部分:用SC2272进行无线接收,接收后的数据送到单片机2,单片机2控制液晶显示器进行显示。单片机1显示模块A/D采集模块AD590温度测量PT2262发送 图1-1 发送模块框架图 显示模块单片机2PT2272接收 图1-2 接收模块框架图1.1 温度传感器的放大电路设计AD590是美国模拟器件公司生产的单片集成两端感温电流源,它会将温度转换为电流,在8051的各种课本中经常看到。其规格如下: 度每增加1,它

8、会增加1A输出电流 可测量范围-55至150 供电电压范围+4V至+30VAD590的管脚图及元件符号如下图所示: 图 1.1-1 AD590管脚图AD590的输出电流值说明如下: 其输出电流是以绝对温度零度(-273)为基准,每增加1,它会增加1A输出电流,因此在室温25时,其输出电流Iout=(273+25)=298A。AD590基本应用电路: 图 1.1-2 基本应用电路 AD590的输出电流I=(273+T)uA(T为摄氏温度),因此测量的电压为(273+T)A×10K=(2.73+T/100)V。为了将电压测量出来又务须使输出电流I不分流出来,我们使用电压跟随器其输出电压V

9、2等于输入电压V。 由于一般电源供应教多器件之后,电源是带杂波的,因此我们使用齐纳二极管作为稳压元件,再利用可变电阻分压,其输出电压V1需调整至2.73V。 接下来我们使用差动放大器其输出Vo1为(100K/10K)×(V2-V1)=T/10,如果现在为摄氏28,输出电压为2.8V,输出电压接AD转换器,那么AD转换输出的数字量就和摄氏温度成线形比例关系。 通过R9和R12进行分压,V0=T/20,因为测试温度不大于100,使得最终输出最大Vo为(1/2)×10=5V;能在A/D转换器TCL549的输入电压范围输入0.3VVCC +0.3V之内。温度采集电路图采用智能化间歇

10、数据采集,即首先把温度变化值分为报警温度、预警温度、准预警温度、正常温度四个档次。当温度处于正常情况下时,温度采集周期为30min,若某一点的温度有变化,当接近准预警点时,采集周期变化为10min,若温度仍有提高达到预警温度,则采集周期为3min,一旦出现报警温度,系统进入实时采集状态,并发出报警。 图1-3 温度采集电路 1.2 TLC549 模数转化电路设计TLC549是8位串行A/D转换器芯片,可与通用微处理器、控制器通过CLK、CS、DATA OUT三条口线进行串行接口。具有4MHz片内系统时钟和软、硬件控制电路,转换时间最长17s, TLC549为40 000次/s。总失调误差最大为

11、±0.5LSB,典型功耗值为6mW。采用差分参考电压高阻输入,抗干扰,可按比例量程校准转换范围,VREF-接地,VREF+VREF-1V,可用于较小信号的采样。 其工作原理为:TLC549均有片内系统时钟,该时钟与I/O CLOCK是独立工作的,无须特殊的速度或相位匹配。其工作时序如图2所示。当CS为高时,数据输出(DATA OUT)端处于高阻状态,此时I/O CLOCK不起作用。这种CS控制作用允许在同时使用多片TLC549时,共用I/O CLOCK,以减少多路(片)A/D并用时的I/O控制端口。将V0的电压值输入TLC549进行AD转换,从芯片的DO脚输出,然后由单片机读取。两个

12、4148二极管是进行电源稳压的,R7,R8进行参考电压设置,基本上等于5V。图1.2-1 模数转换电路1.3 显示电路设计1602液晶已经包括在单片机学习板内了,在这里只稍微介绍它的引脚功能。D0D7是命令/数据口,接单片机的P1口,由单片机读(写)命令(数据),RS是命令/数据的选择端口,RW是读/写的选择端口,E是1602的使能端。1602有它自己的字库,用户只需写入相应的代码并控制好1602给出的时序就可以在液晶屏上显示希望得到的字符或图像了。图1.3-1 液晶显示屏1.4 无线发送与接收模块的选择与设计PT2262 、SC2272是一种CMOS工艺制造的编码电路。采集的温度信号可以通过

13、PT2262编码,通过17脚输出到射频发射模块的数据输入端发射出去,与此同时射频接收模块接收后将数据送到解码芯片SC2272,其地址经过核对与SC2272的地址匹配后,SC2272的VT脚才输出高电平,与此同时PT2262相应的数据脚也输出高电平。图1.4-1 PT2262引脚图图1.4-2 PT2262时序图1.5 键盘设计独立键盘也包括在单片机学习板内,P3.2接单片机的外部中断。 图1.5-1 独立键盘引脚图2 总体的软件程序的设计2.1 温度数据采集和数据处理子程序的设计经AD590采集的温度转化为了电压值,然后经放大电路处理后,使输出电压V=T/20,这样才能保证TLC549的输入电

14、压不大于基准电压。在硬件调试时,基准电压设置成5V,所以在程序处理时要将从TLC549得到的数字值乘以5/255才能得到电压V,然后再乘以20才能得到温度(此时的温度是双精度型的)。中值滤波是为了得到很短时间的温度平均值,有稳定数值的作用。开启转换 将转换的结果进行中值滤波将得到的电压转换为温度返回图2.1-1 温度采集和处理流程图2.2 温度显示、保存处理的子程序设计每一次温度采集后将温度的百位、十位、个位、小数位(一位)分离出来(一位)部分分离出来将温度的整数部分和小数(一位)部分分离出来调用温度显示模块的子程序,写百、十、个、小数的地址和它们的值将得到的整数和小数放入AT24C02的中相

15、邻的两个单元中,总共分配20个单元,一轮后,放入的数值将覆盖前面的数值。 图2.2-1 温度显示和保存流程图因为采集到的每个温度值都是0100摄氏度之间的任意值,为了使精度达到0.1,我们只保留一位小数(在二进制表示中只占低4位)。将温度分解成整数部分和小数部分,是为了方便存储和发送。本设计只保存10组温度。2.3 无线发送与接受的子程序的设计因为选用的发送模块是集成PT2262无线射频芯片PC-T2A,所以只能利用其6位数据口中的4位,将温度分解发送。经计算每编码发送都需要发送34次接收端才能接收到有效数据,所以在程序中适当对发送使能端置高进行延时。发送完4位数据后也需要延时,给接收端处理数

16、据时间,防止乱码。调用发射子程序发送整数的高四位延时给接收端数据处理一些时间防止乱码发送整数的低四位延时给接收端数据处理一些时间防止乱码发送小数的低四位延时给接收端数据处理一些时间防止乱码返回图2.3-1 无线发送流程图选用的接收模块是与集成SC2272的PCR1B-2芯片。当接收到的编码地址与之相匹配的时候,SC2272的VT端从低电平变为高电平,然后马上恢复低电平。所以利用其下降沿可以触发单片机2的外部中断0进行温度接受处理。SC2272需要接收三次才能得到一个完整的温度值。VT端的下降沿触发外部中断0进行中断次数判断 1 2 3重新计数读取整数低四位并和高四位合并读取整数高四位调用显示子

17、程序显示温度读取小数低四位返回图2.3-2 无线接收处理流程图2.4 十组温度查询的子程序设计因为独立键盘接的是单片机1的外部中断0,所以当它按下去时的产生的下降沿触发外部中断,在中断处理程序中根据中断次数读取储存的温度。在中断处理程序中关中断是为了消除按键抖动触发另一次中断。键盘触发中断关中断根据中断次数读取相应的温度调用液晶显示子函数显示温度开中断返回 图2.4-1 温度查询流程3 调试与结果分析3.1 调试仪器及方法 测试仪器:数字万用表,示波器,函数信号发生器测试方法:硬件调试时,利用函数信号发生器,与示波器根据原理调相应的线路的电压值,达到与AD590采到的温度,及TLC549转化进

18、行相对应。根据理论原理的分析,输入一信号,利用示波器去跟踪观察PT2262 ,SC2272各引脚的高低电平是否合理正确,即意味着在无线传输中两芯片的地址是否匹配?达到正确的发送与接受。3.3 软、硬件调试与故障原因分析调试过程:一开始测试的温度误差很大,经检查发现是采温部分的TLC549的参考电压与程序处理中的参考电压不匹配,经调试硬件和程序,得出误差较小的温度值。发送后,发现接受模块无法显示,经检查发现接收模块的SC-2272的VT端驱动能力较差,不能与单片机的TTL电平匹配,于是我们就用C9018三极管增强它的驱动能力,使得接受模块有温度显示,但是发现接受显示乱码,经示波器检查发现在发送温

19、度时由于PT2262芯片的发送使能端默认接地,导致不受单片机控制,接受模块无法正确接收温度数据。所以我们将PT2262的发送使能端与默认的地剪断,让其受单片机控制。最终实现了温度的无线传送。4 结束语本次课程设计完成的是基于集成温度传感器AD590的温度测量及其无线传送的设计,并通过LCD1602显示温度值,通过半个月的不断努力、克服各种困难,最终实现了任务目标。本次设计主要是对在温度测量的智能化、集成化方面的探索,这也是温度测试发展的趋势。同时,也是测控技术未来发展的趋势。设计是理论知识与实践的完美结合,对于现代大学生的实践能力是个很好的培养。短短的半个月的设计虽然短暂,但是它给我们的收获确

20、实难忘,不仅仅在智能仪器方面有了很大的进步,而且在传感器,单片机等方面也学到了不少在上课学不到的知识。这段时间我们查阅到很多关于课程设计的书籍,对我们帮助也很大。以前很盲目的东西,现在明白了很多。也对我们专业动手实践的兴趣提高了很多。有了这些经历对于我们日后工作一定会有很大帮助。令我们终身受益。在课程设计的过程中也可以看到我们的不足,如原理知识掌握不实,曾经学过的知识如今却不会应用,软件的应用也不熟练,希望日后提供给我们更多的锻炼机会来培养我们的实践能力。本设计是在XX老师的悉心指导下完成的。孙活老师作为一名优秀的、经验丰富的教师,具有丰富的知识和经验,在整个论文实验和论文写作过程中,对我进行

21、了耐心的指导和帮助,提出严格要求,引导我不断开阔思路,为我答疑解惑,鼓励我大胆创新,使我在这一段宝贵的时光中,既增长了知识、开阔了视野、锻炼了心态,又培养了良好的实验习惯和科研精神。在此,我向我的指导老师表示最诚挚的谢意!附录1:硬件原理图及PCB板附录2:软件程序代码发送模块代码:#include<reg52.h>#include<intrins.h>#define uchar unsigned char#define uint unsigned int/*TLC549引脚设置*/sbit SCLK=P20;sbit DO=P21;sbit CS=P22;/*1602

22、引脚设置*/sbit RS=P25;sbit RW=P26;sbit E=P27;/*PT2262引脚设置*/sbit D1=P10;sbit D2=P11;sbit D3=P12;sbit D4=P13;sbit TE=P23;/*AT24C02引脚设置*/sbit scl=P15;sbit sda=P36;/*按键设置*/sbit front=P32;uchar code lie1="NOW T:"uchar code lie2="10PreT:"uchar xdata xiaoshu,zhengshu,cishu,xuhao;/定义两个变量,分别存

23、放温度的整数部分和小数部分/* 温度采集模块子函数*/* 名称 : delay(uint z)* 功能 : 延时,延时时间大概为z毫秒。* 输入 : 无* 输出 : 无*/void delay(uint z) uint x,y; for(x=z;x>0;x-) for(y=110;y>0;y-);/* 名称 : ad549(void)* 功能 : 将AD590采集的温度电压化为8位的数字量。* 输入 : 温度电压* 输出 : 对应TLC549中参考电压的数字量*/uint TLC549(void)/把模拟量转换成数字量,参考的是REF。仅仅是数字量,不是真实电压值。 uchar t

24、emp,i;/定义存放数据和变量 CS=1; SCLK=0;/初始化 CS=0;/DO输出最高位 _nop_(); _nop_();/两个机器周期满足了1.4微秒 for(i=0;i<8;i+)/串行数据移位输入 temp<<=1; temp|=DO; SCLK=1; _nop_();/时序控制看芯片资料 SCLK=0; _nop_(); CS=1; for(i=0;i<17;i+) _nop_(); return(temp);/* 名称 : average(void)* 功能 : 将TLC549转换完成的数字量换成电压值,并通过一定的关系,化为温度值,精度为0.1。*

25、 输入 : 温度电压对应average(void)* 输出 : AD590采集的温度值*/double average(void)/定义一个数组,存放25个AD采样的数据,然后取平均值,这种方法叫做中值滤波,作用是使输出稳定,并把数据换成电压。 uchar i; uint temp; double temp1,j,average125; for(i=0;i<25;i+) temp=TLC549(); j=(double)temp)*20*5/255;/根据电路图可知REF=5V,AD输出时8位的数据,所以要分成255份。 average1i=j; delay(1);/采样间隔随要求定。

26、for(i=0;i<25;i+) temp1+=average1i; temp1=temp1/25;/一定要注意不同类型间的赋值和计算必须用强制转换。还有一个特别重要的C51FPS.LIB文件必须要在安装目录下的LIB文件夹内。 return(temp1);/* 液晶显示模块子函数*/* 名称 : convert(uchar input)* 功能 : 实验板上把D0D7的位置弄反了!需要转过来* 输入 : 需在液晶屏上显示的值,或是1602的命令值* 输出 : 对应实验板上的"正常值"*/uchar convert(uchar input)/实验板上把D0D7的位置弄

27、反了!需要转过来 uchar i,temp,output; for(i=0;i<8;i+) temp=input&0x01; input>>=1; output|=temp; if(i<7) output<<=1; return(output);/* 名称 : order(uchar o)* 功能 : 控制1602液晶显示功能* 输入 : 1602液晶的命令值或数据指针地址* 输出 : 无*/void order(uchar o) RS=0; RW=0; P0=convert(o); E=0; delay(5); E=1; delay(5); RS=

28、1;/* 名称 : shuju(uchar s)* 功能 : 将需显示的数值显示在1602液晶上* 输入 : 字符* 输出 : 无*/void shuju(uchar s) RS=1; RW=0; P0=convert(s);/一定要放在en=0前面 否则会出现乱码。 E=0; delay(5); E=1; delay(5); RS=0;/* 名称 : init()* 功能 : 液晶屏初始化* 输入 : 无* 输出 : 无*/void init(void) uchar i; order(0x38);/设置16*2显示,5*7点阵,8位数据接口 order(0x06);/当读写一个字符后地址指针

29、加1,光标向后移1 order(0x0c);/开显示屏,不显示光标 order(0x01);/数据指针清零,显示屏清空 /*在液晶屏上显示的上行为"NOW T: °C",下行为"10Pre T: °C"*/ order(0x80); for(i=0;i<6;i+) shuju(lie1i); order(0x80+0x40); for(i=0;i<7;i+) shuju(lie2i); order(0x80+0x0c); shuju(0xdf);/ shuju(0x43);/C order(0x80+0x40+0x0e);

30、 shuju(0xdf);/ shuju(0x43);/C/* 名称 : fasongzhengshu(uchar s)* 功能 : 发送温度的整数部分* 输入 : 无* 输出 : 无*/void fasongzhengshu(uchar s) P1=s; /1=0x37; /TE=0; /while(1); P1=_cror_(P1,4);/先发高四位 TE=0; /允许PT2262发送数据 delay(300); /经计算发45次需要80s TE=1; delay(950); P1=_cror_(P1,4);/再发第四位 TE=0;/允许PT2262发送数据 delay(300); TE=

31、1; delay(950);/* 名称 : fasongxiaoshu(uchar s)* 功能 : 发送温度的小数部分* 输入 : 无* 输出 : 无*/void fasongxiaoshu(uchar s)/09只有4位 /P1=0xaa; /TE=0; /while(1); P1=s; TE=0;/允许PT2262发送数据 delay(300); TE=1; delay(950);/* AT24C02断电保存子函数*/* 名称 : start(void)* 功能 : 启动I2C总线* 输入 : 无* 输出 : 无*/void start(void)/I2C开始 sda=1; _nop_(

32、); scl=1; _nop_(); sda=0; _nop_();/* 名称 : stop()* 功能 : 停止I2C总线* 输入 : 无* 输出 : 无*/void stop(void)/I2C停止 sda=0; _nop_(); scl=1; _nop_(); sda=1; _nop_();/* 名称 : write_data(uchar date)* 功能 : 写一个字节* 输入 : date(需要写入的值)* 输出 : 无*/void write_data(uchar date)/AT24C02SC中I2C总线写数据程序规则 uchar i; scl=0; for(i=0;i<

33、8;i+) _nop_(); _nop_(); date<<=1; sda=CY; _nop_(); _nop_(); scl=1; _nop_(); _nop_(); scl=0; _nop_(); _nop_(); sda=1; _nop_(); _nop_();/* 名称 : read_data()* 功能 : 读一个字节* 输入 : 无* 输出 : 读出的值*/uchar read_data(void)/AT24C02SC中I2C总线读数据程序规则 uchar k,j,i; scl=0; _nop_(); _nop_(); sda=1; for(i=0;i<8;i+)

34、 _nop_(); _nop_(); scl=1; _nop_(); _nop_(); if(sda=1) j=1; else j=0; k=(k<<1)|j; scl=0; _nop_(); _nop_(); return(k);/* 名称 : yingda(void)* 功能 : I2C总线时钟* 输入 : 无* 输出 : 无*/void yingda(void) uchar i=0; scl=1; _nop_(); _nop_(); _nop_(); _nop_(); while(sda=1&&i<250) i+; scl=0; _nop_(); _no

35、p_(); _nop_(); _nop_();/* 名称 : writedata(uchar address,uchar info)* 功能 : 向24c02中写值* 输入 : address(要在这个地址读取值)* 输出 : 无*/void writedata(uchar address,uchar info) start(); write_data(0xa0); yingda(); write_data(address); yingda(); write_data(info); yingda(); stop();/* 名称 : readdata(uchar address)* 功能 : 从

36、AT24c02中读出数据* 输入 : address(地址)* 输出 : 地址对应的值*/uchar readdata(uchar address) uchar t; start(); write_data(0xa0); yingda(); write_data(address); yingda(); start(); write_data(0xa1); yingda(); t=read_data(); stop(); return(t);/* 名称 : readwendu()* 功能 : 在按键中断中读出温度* 输入 : address(地址)* 输出 : 无*/void readwendu

37、(void) uchar part3,part4,temp1,i; part3=readdata(cishu); part4=readdata(cishu+1); temp1=cishu/2; /*温度在1602上显示*/ order(0x80+0x40+7);/显示序号 shuju(0x30+temp1); order(0x80+0x40+9);/显示温度 百位 temp1=part3/100; shuju(0x30+temp1); temp1=part3%100/10;/显示温度 十位 shuju(0x30+temp1); temp1=part3%10;/显示温度 个位 shuju(0x3

38、0+temp1); shuju(0xa5);/小数点 temp1=part4;/显示温度 小数位 shuju(0x30+temp1);/* 主函数*/main() double temperature; uchar temp,s; init();/液晶初始化 EA=1;/开中断 EX0=1; IT0=1;/外部中断0设置成下降沿触发 cishu=0; while(1) temperature=average();/可以对temperature进行适当的调节 zhengshu=(uchar)temperature;/需发送的整数部分 xiaoshu=(uint)(temperature*10)%

39、10;/需发送的小数部分 /*温度在1602上显示*/ order(0x80+6); temp=(uchar)temperature)/100; shuju(0x30+temp); temp=(uchar)temperature)%100/10; shuju(0x30+temp); temp=(uchar)temperature)%10; shuju(0x30+temp); temp=(uint)(temperature*10)%10; shuju(0xa5);/小数点 shuju(0x30+temp); /*将温度保存在AT24C02中*/ writedata(s,zhengshu); s+; delay(100);/给写数据一点反应时间 writedata(s,xiaoshu); s+; if(s=20) s=0;

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论