基于PT100热敏电阻的数字温度计.doc_第1页
基于PT100热敏电阻的数字温度计.doc_第2页
基于PT100热敏电阻的数字温度计.doc_第3页
基于PT100热敏电阻的数字温度计.doc_第4页
基于PT100热敏电阻的数字温度计.doc_第5页
已阅读5页,还剩13页未读 继续免费阅读

下载本文档

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

文档简介

嵌入式设计 基于热敏电阻的数字温度计设计 院(系) 专 业 班 级 指导老师 学生姓名 成 绩 2015年 7月 10日目 录第一章 绪论1第二章 设计要求及构思12.1设计要求12.2设计构思2第三章 总体程序流程图3第四章 原理框图4 4.1pt100铂热电阻:44.2信号放大电路44.4主芯片电路图64.5 四位数码管7第五章 仿真电路图8第六章 心得体会10参考文献11附录 程序代码12 第一章 绪论随着以知识经济为特征的信息化时代的到来人们对仪器仪表的认识更加深入,温度作为一个重要的物理量,是工业生产过程中最普遍,最重要的工艺参数之一。随着工业的不断发展,对温度的测量的要求也越来越高,而且测量的范围也越来越广,对温度的检测技术的要求也越来越高,因此,温度测量及其测量技术的研究也是一个很重要的课题。目前温度计按测使用的温度计种类繁多,应用范围也比较广泛,大致可以包括以下几种方法:1,利用物体热胀冷缩原理制成的温度计2,利用热电效应技术制成的温度检测元件3,利用热阻效应技术制成的温度计4,利用热辐射原理制成的高温计5,利用声学原理进行温度测量本系统的温度测量采用的就是热阻效应。温度测量模块主要为温度测量电桥,当温度发生变化时,电桥失去平衡,从而在电桥输出端有电压输出,但该电压很小。将输出的微弱电压信号通过op07放大,将放大后的信号输入ad转换芯片,进行a/d转换后,就可以用单片机进行数据的处理,在显示电路上,就可以将被测温度显示出来。第二章 设计要求及构思2.1设计要求 1.系统硬件设计(1) 使用热敏电阻pt100;(2) 单片机采用mcs51系列;(3) led数码管显示温度。2. 系统软件设计(1)温度可以通过pt100热敏电阻实调程序;(2)ad转换芯片检测温度的模拟量程序;(3)led显示程序;3.系统功能l(1)测量温度范围50110;(2)精度误差小于0.5;(3)led数码管显示。2.2设计构思(1) 本题目使用铂热敏电阻pt100,其阻值会随着温度的变化而改变,pt100后的100即表示它在0时阻值为100欧姆,在110时它的阻值约为142.29欧姆,在-50它的电阻值为80.31欧姆。厂家提供有pt100在各温度下电阻值值的分度表,在0到110电阻的变化率为(142.29-100)/110 0.3845/,在-50到0电阻的变化率为(100-80.31)/50=0.3938/。向pt100输入稳恒电流,使pt100输出的电压与其内部电阻成线性关系变化。(2) 其输出的的电压是模拟信号,需要进行模数转换后才能被有效显示。查找相关模数转换元器件后暂选adc0808进行模数转换,其有效电压为05v。向pt100输入稳恒电流,再通过a/d转换后测pt100两端电压,即得到pt100的电阻值,进而算出当前的温度值。(3) 由于0.385相对于100多欧姆的电阻来说很小,即温度变化1时输出的电压变化量很小,这么小的电压不能改变adc0808输出的一个数字信号。所以要对pt100输出的电压进行放大。放大倍数是根据最大测量温度确定的,即110时输出的电压不能超过+5v,否则测量不到110的温度,最终经调试后取放大倍数为36。再将放大后的电压输入adc0808模数转换器。(4) 综上所述。采用2.49v的电压与运算放大器搭建成的恒流源对pt100进行供电,然后用运算放大器op07搭建的同相放大电路将其电压信号放大36倍后输入到adc0808中。adc0808根据输入0到5v的电压,转换成对应的十进制0到255数字。再利用电阻变化率的特性,计算出当前温度值,数码管直接显示温度。由于本设计要求测量的最大温度为110,所以本人设计时使+5v的电压对应温度110。通过电压变化量求出电阻的变化量,再通过电阻变化率的特性求出温度的变化量,然后用110与温度变化量相比较即可求得当前的温度。 第三章 总体程序流程图开始 定时器初始化0.2mspt100检测温度ancewendu给adc0808一个时钟脉冲0.2mspt100电阻变化 电压变化 仪表放大器放大电压0+5v adc0808模数转换 0255 取出模数转换后的值 计算温度数码管显示温度第四章 原理框图4.1pt100铂热电阻:图4-1 pt100铂热电阻pt100是铂热电阻,它的阻值会随着温度的变化而改变。pt后的100即表示它在0时阻值为100欧姆,在100时它的阻值约为138.5欧姆。4.2信号放大电路:v1v2 图4-2 放大电路图 采用op07搭建成仪表运算放大器,vout=(v2-v1)x(1+2r5/r4 x(r9/r7) ,其中r5=r6,r7=r8,r9=r10。本设计的放大倍数为36。4.3a/d转换电路图4-3 adc0808电路图adc0808是采样分辨率为8位的、以逐次逼近原理进行模/数转换的器件。其内部有一个8通道多路开关,它可以根据地址码锁存译码后的信号,只选通8路模拟输入信号中的一个进行a/d转换。模拟信号输入0到5v电压,8位数字输出端口输出二进制00000000到11111111,即十进制0到255,所以分辨率为5v/2550.0196v。例如输入的信号为+5v电压时,其输出为数字255。adc0808芯片有28条引脚,采用双列直插式封装,如图4-3所示。各引脚功能如下:15和2628(in0in7):8路模拟量输入端。8、14、15和1721:8位数字量输出端。22(ale):地址锁存允许信号,输入,高电平有效。6(start): a/d转换启动脉冲输入端,输入一个正脉冲(至少100ns宽)使其启动(脉冲上升沿使0809复位,下降沿启动a/d转换)。7(eoc): a/d转换结束信号,输出,当a/d转换结束时,此端输出一个高电平(转换期间一直为低电平)。9(oe):数据输出允许信号,输入,高电平有效。当a/d转换结束时,此端输入一个高电平,才能打开输出三态门,输出数字量。10(clk):时钟脉冲输入端。要求时钟频率不高于640khz。12(vref(+)和16(vref(-):参考电压输入端11(vcc):主电源输入端。13(gnd):地。2325(adda、addb、addc):3位地址输入线,用于选通8路模拟输入中的一路adc0 808/0809工作时序图如下: 图4-4 adc0808转换时序示意图 当start上收到一个启动转换命令(正脉冲)后,8位a/d转换器开始对输入端的信号进行转换,100us后转换结束,转换结果d(028-1)存入三态输出锁存缓冲器,转换结束信号eoc由低电平变为高电平,通知cpu可以读结果。cpu可用查询方式(将eoc信号接至一条i/o线上)或中断方式(eoc信号作为中断请求信号导入中断逻辑)了解a/d转换过程是否结束。 4.4主芯片电路图图4-5 8051电路图采用8051单片机作为主芯片,由于p0口内部没有上拉电阻,所以p0口作为输出要接上拉电阻。4.5 四位数码管图4-6 七段四位数码管图本设计最大显示为三位小数和一位小数,所以采用七段四位共阴数码管,其中段接8051的p0口,位接8051的p2.0p2.3口。 第五章 仿真电路图 图5-1 温度为110显示的温度图5-2 温度为112显示的温度本设计测量的最大温度为110,当温度大于110时依然显示为110。这是因为温度为110时输入adc0808的电压为最大值,即+5v,当温度大于110时,输入adc0808的有效电压依然为+5v。 图5-3 温度为91度时显示的温度随机选择-50110的一个温度,实际为91的温度,测量值为91.1,符合要求的0.5度的范围内。 图5-4 温度为0时显示的温度 温度为0时,检测的温度为-0.2。线性关系好,符合设计要求。 图5-5 -26度时所显示的温度实际温度为-26度时,测量的温度为-25.8度,符合设计要求。 图5-6 温度为-50时所显示的温度 图5-7温度为-51所显示的温度本设计测量的最小温度为-50,当温度低于-50时,输出数码管的值无效,显示为0。第六章 心得体会 参考文献1黄勤,单片机原理及应用,北京,清华大学出版社,2006年。2郭天祥,51单片机c语言教程,北京,电子工业出版社,2012年。附录 程序代码15 #include#include #define uchar unsigned char sbit star=p24; sbit eoc=p26; sbit clock=p25; sbit oe =p27; sbit p20=p20;sbit p21=p21; sbit p22=p22; sbit p23=p23; uchar getdata; double change; long int temp;uchar dispbuf6; uchar code table1=0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x40;/无小数点09,-uchar code table2=0xbf,0x86,0xdb,0xcf,0xe6,0xed,0xfd,0x87,0xff,0xef; /带小数点09;/*定时器初始化程序*/void timeinitial() tmod=0x10; /定时器1选择216 th1=(65536-200)/256; /赋初值,定时0.2毫秒 tl1=(65536-200)%256; ea=1; /开中断允许 et1=1; tr1=1; /开定时器1 /*延时程序*/ void delay(uchar i) unsigned int j; for(;i0;i-) for(j=0;j125;j+) ; /*定时/计数器1程序*/void t1(void) interrupt 3 using 0 /选用0组工作寄存器 th1=(65536-200)/256; tl1=(65536-200)%256; clock=clock; /取反,0.2ms给adc0808一个时钟脉冲 /*数码管显示程序*/ void display()/ p0=table1dispbuf3; /显示百位 p20=0; p21=1; p22=1; p23=1; delay(8); p0=0x00; p0=table1dispbuf2; /显示十位 p20=1; p21=0; p22=1; p23=1; delay(8); p0=0x00; p0=table2dispbuf1; /显示个位 p20=1; p21=1; p22=0; p23=1; delay(8); p0=0x00; p0=table1dispbuf0; /显示小数位 p20=1; p21=1; p22=1; p23=0; delay(8); p0=0x00; /*计算温度*/void pt100() double pr,avet,at,deal,u,ar; /电阻值,温度对电阻的变化量(/c),温度变化量,结果,电压,电阻变化量u=5.0/255.0*getdata; /计算某一刻的电压值ar=(5.0/255.0*getdata)/(5.0/142.29); /计算某一刻的电阻值 pr=142.29-ar;/计算电阻变化量 ,110c阻值为142.29avet=42.29/110.0; /1c=42.29/110() at=pr/avet;/温度变化量 deal=10*(110.0-at);/所得温度x10 temp=(long int)deal;/ 最终温度取整(实际值x10倍) if(u2.82) /计算并显示-500的温度 avet=(100.0-80.31)/50.0; / pr=100.0-ar; at=10*(pr/avet); temp=(long int)at; dispbuf0=temp%10; /计算小数位 dispbuf1=temp/10%10; /计算个位 dispbuf2=temp/100%10; /计算十位 dispbuf3=10; /使显示-号 / if(temp%2=0) / temp=temp-5; else /计算并显示0110的温度 dispbuf0=temp%10; dispbuf1=temp/

温馨提示

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

评论

0/150

提交评论