您好,欢迎访问三七文档
当前位置:首页 > 电子/通信 > 综合/其它 > 基于PN结的温度测量系统
沈阳理工大学课程设计专用纸1一.设计原理与总体方案1.1二极管(PN结)特性晶体二极管为一个由p型半导体和n型半导体形成的p-n结,在其界面处两侧形互相抑消作用使载流子的扩散电流增加引起了正向电流,并且和电压成指数关系。理想PN结的正向电流IF和正向压降VF存在如下关系:IF=Is*exp【-e*Vf/(k*T)】式中,-e为电子电量;k为玻耳兹曼常数;T为绝对温度;Is为反向饱和电流,与PN结材料的禁带宽度及温度有关.在此基础上得出PN结的正向电压Vf与热力学温度T之间的关系,从而证明半导体PN结在某个温度范围内是性能优良的温度传感器。温度对二极管的性能有较大的影响,温度升高时,反向电流将呈指数规律增加,如硅二极管温度每增加8℃,反向电流将约增加一倍;锗二极管温度每增加12℃,反向电流大约增加一倍。另外,温度升高时,二极管的正向压降将减小,每增加1℃,正向压降VD大约减小2mV,即具有负的温度系数。这些可以从下图所示二极管的伏安特性曲线上看出。据资料介绍:在恒流模式下,If=If0,1n=If/If0=0,有:S=(Vg0-Vf0)/T0-(kB/q)*(1+1nT/T0).因1nT/T0是T的缓变函数,S的模随着T增加而上升,但在不宽的温度范围内,S近似常数。1.2主要电路方案分析为保证整个温度测量范围内PN结的正向电流恒定,PN结的正向偏置采用恒流源驱动。采用三极管的特性和特殊电路,让通过二极管的电流始终在100uA左右。采用电桥连接方式使放大器放大传感器变化电压的差值。电桥通过两个电阻和二极管并联构成,从而向放大器正负两端输入电压。通过理论分析及仿真实验研究选择合适的电桥电路参数。PN结的结电压变化是一个微弱信号,结电压在温度每变化1度时大约变化2mv左右,所以需要进行放大后才能被后续电路处理。采用三运放高共模抑制比放大电路,放大电桥两端的差模信号。设计中可采用三个独立的运放来构成放大电路,也可采用仪用放大器AD620,根据电路实际情况来设置。(AD620的电源提供范围为正负2.3V到正负18V,低功耗,精确度高)。采用一阶无源RC低通滤波器,截至频率为50HZ。半导体二极管的温度特性曲线沈阳理工大学课程设计专用纸2采用8位的AD转换元件AD0809,这样可以使用其8位数据线与CPU进行并口通信。因为AD0809对于本设计来说,精度已经达到,所以未用采用SPI通信的12位AD7841等多位的AD转换器件。采用单片机STC89C52(32个IO口,8KB的Flash等)。而未用本身带有10位AD的ARM处理器,因为其对本设计而言会有很多硬件资源剩余,而且不熟悉其操作更会增加程序设计难度。所以综合考虑,对本设计而言,一般单片机的性价比更高。采用液晶LCD1602,可设置8位数据端口,2行显示,5*7点阵等。1.3DS18B20介绍DS18B20为一款单总线测温器件,它具有线路简单,体积小的特点。由于DS18B20采用的是1-Wire总线协议方式,即在一根数据线实现数据的双向传输,而对STC89C51单片机来说,硬件上并不支持单总线协议,因此,必须采用软件的方法来模拟单总线的协议时序来完成对DS18B20芯片的访问。DS18B20有严格的通信协议来保证各位数据传输的正确性和完整性。该协议定义了几种信号的时序:初始化时序、读时序、写时序。所有时序都是将主机作为主设备,单总线器件作为从设备。而每一次命令和数据的传输都是从主机主动启动写时序开始,如果要求单总线器件回送数据,在进行写命令后,主机需启动读时序完成数据接收。数据和命令的传输都是低位在先。1.4实验原理设计整体思路:当通过PN结(以后用二极管表示)的电流恒定后,二极管两端的电压变化就主要与其感受的环境温度有关,所以以此来研究二极管的电压和温度特性。通过电桥设置,将温度选择一个基准,即电压随温度变化的基准,当温度变化时,电压就会相对基准有个差值。将差值信号放大,滤波,输入单片机处理和采用温度传感器18B20标定温度值,得到一个AD值和温度对应的表,然后用二极管测温度,得到AD值采用查表非线性处理得到温度值,结果和18B20测温结果对比显示在液晶上。非线性处理方法原理:将非线性的图形取一些采样点,通过这些采样点相邻之间直线相连就近似得到该曲线。我们的实验目的之一就是得到二极管电压-温度特性曲线。二极管测温原理:由文献资料我们已知了PN结的温度电压变化特性是指数关系。现假设我们测得N个温度值(可用18b20测得)y1,y2,……,yn以及的对应的AD采样值x1,x2,……,xn。在N值足够大的情况下,我们认为相邻两点是线性的关系,因此,具体某测量点对应的温度值可用以下方法获得:首先,我们需要知道未知值x那两个x值的中间,然后根据我们已知坐标(x0,y0)与(x1,y1),要得到[x0,x1]区间内某一沈阳理工大学课程设计专用纸3位置x在直线上的值。根据图中所示,我们得到假设方程两边的值为α,那么这个值就是插值系数—从x0到x的距离与从x0到x1距离的比值。由于x值已知,所以可以从公式得到α的值。二.硬件设计2.1电源部分沈阳理工大学课程设计专用纸42.2电桥和放大部分接线图:567411U1:BLM324R110kR210kR310kR410kR510kR610k+5v+5V+5VINT050%RV510k121314411U1:DLM324321411U1:ALM324C10.1ufR730k24%RV410k+5vQ3NPNQ4NPNR83kD2DIODER940kR1020kC20.1uFC3470u为保证整个温度测量范围内二极管的正向电流恒定,其正向偏置采用恒流源驱动。当三极管Q1正常工作时,其Ube=0.7V,通过三极管集电极端的电流I=(VDD-0.7v)/R1,只要VDD和R1恒定,I就一定。那么由Q1和Q2两个三极管参数几乎一样,镜像得到通过二极管D1的电流值就为I,那么就一定了。通过R3和R4在R4两端产生一个恒定基准电压(比如15度时VDD减去二极管的电压值),从而当温度变化时,电桥两端就会有一电压差。采用LM324自己搭建三运放高共模抑制比放大电路。从下表我们可以看出所测电路输出值与输入值的关系,在差值为0.1V到0.50V范围内,输出放大5倍,在差值为0.6V以上就有一些非线性关系。根据电路设计方案,当差值大于0.90V以上时U值不随U0-U1变化而变化,U最大值为3.23V。能够满足设计要求。从理论上说,我们将0到100℃对应放大后的值为0.5V到3V,那么所有值都在其线性区域内,由资料介绍二极管的温度特性分析,每变化1℃就会使差值增加1mv,那么最多变化200mv,这样三运放放大倍数为12.5倍。由差模增益:3211U1-U0dRVRRUK调节硬件电路得到。电路输出值与输入值的关系如下图:沈阳理工大学课程设计专用纸52.3AD采样及显示部分XTAL218XTAL119ALE30EA31PSEN29RST9P0.0/AD039P0.1/AD138P0.2/AD237P0.3/AD336P0.4/AD435P0.5/AD534P0.6/AD633P0.7/AD732P1.0/T21P1.1/T2EX2P1.23P1.34P1.45P1.56P1.67P1.78P3.0/RXD10P3.1/TXD11P3.2/INT012P3.3/INT113P3.4/T014P3.7/RD17P3.6/WR16P3.5/T115P2.7/A1528P2.0/A821P2.1/A922P2.2/A1023P2.3/A1124P2.4/A1225P2.5/A1326P2.6/A1427U1AT89C52X112MHzC122pFC222pFC320uFR11k+5V+5V+5V234567891RP110K+5VD714D613D512D411D310D29D18D07E6RW5RS4VSS1VDD2VEE3LCDLM016LAD0AD1AD2AD3AD4AD5AD6AD7AD7AD6AD5AD4AD3AD2AD1AD0+5VALESTARTOEALESTARTOEEOCEOCOUT121ADDB24ADDA25ADDC23VREF(+)12VREF(-)16IN31IN42IN53IN64IN75START6OUT58EOC7OE9CLOCK10OUT220OUT714OUT615OUT817OUT418OUT319IN228IN127IN026ALE22U2ADC0808AD_CLK16.0DQ2VCC3GND1U3DS18B2018B2018b20AD_CLKAD_INRV11k由于采用8位的ADC0809,其参考电压为3v,理论上输入的电压为0.875v到3v(对应温度为15°~100°),经过单片机由数码管动态显示温度。三.程序设计3.1温度传感器18B20标定温度当DS18B20在完成一个读时序过程,至少需要60us才能完成。写0时序和写1时序的要求不同,当要写0时序时,单总线要被拉低至少60us,保证DS18B20能够在15us到45us之间能够正确地采样IO总线上的“0”电平,当要写1时序时,单总线被拉低之后,在15us之内就得释放单总线。沈阳理工大学课程设计专用纸63.2流程图及程序代码开始初始化液晶显示欢迎画面取12次AD采样值进行软件滤波处理显示1N4007测出的温度值初始化18b20读取18b20测出的温度值显示18b20测出的温度结束温度程序流程图进行线性插值处理沈阳理工大学课程设计专用纸7开始初始化液晶显示欢迎画面启动AD转换读取AD的值是否已进行12次AD转换对12次AD采样值进行冒泡法排序去掉最大最小值取10次采样值的平均值显示AD采样值初始化18b20读取18b20测出的温度值显示18b20测出的温度结束否是标定温度程序流程图沈阳理工大学课程设计专用纸8程序代码:#includereg51.H#includeLCD1602.hsbitAL=P2^3;sbitSTART=P2^4;sbitEOC=P2^6;sbitOUTE=P2^5;sbitAD_CLK=P2^7;sbitDQ=P3^0;//定义通信端口unsignedcharTempBuffer[10];//unsignedcharADBuffer[10];//存显示的字符/***********T0中断服务程序************/voidt0(void)interrupt1using0{AD_CLK=~AD_CLK;}voidIntToT(unsignedintt,unsignedchar*str,unsignedcharn){unsignedchara[5];unsignedchari,j;a[0]=(t/1000)%10;//取得整数值到数组a[1]=(t/100)%10;a[2]=-2;//a[3]=(t/10)%10;a[4]=(t/1)%10;for(i=0;i5;i++)//转成ASCII码a[i]=a[i]+'0';for(i=0;a[i]=='0'&&i=3;i++);for(j=5-n;ji;j++)//填充空格{*str='';str++;}for(i=0;i5;i++){*str=a[i];str++;}//加入有效的数字*str='\0';}voidDelay1ms(unsignedintcount){unsignedinti,j;for(i=0;icount;i++)for(j=0;j120;j++);}/********************18b20采集温度程序***********************///延时函数voiddelay(unsignedinti)沈阳理工大学课程设计专用纸9{while(i--);}//初始化函数voidInit_DS18B20(void){unsignedcharx=0;DQ=1;//DQ复位delay(8);//稍做延时DQ=0;//单片机将DQ拉低delay(80);
本文标题:基于PN结的温度测量系统
链接地址:https://www.777doc.com/doc-2571649 .html