1、天津大学网络教育学院专科毕业论文1多功能智能化温度测量仪设计一、引言温度是日常生活、工业、医学、环境保护、化工、石油等领域最常遇到的一个物理量,也是工业控制中主要的被控参数之一。对温度的测量与控制在现代工业中也是运用的越来越广泛。而传感器主要用于测量和控制系统,它的性能好坏直接影响系统的性能。因此,不仅必须掌握各类传感器的结构、原理及其性能指标,还必须懂得传感器经过适当的接口电路调整才能满足信号的处理、显示和控制的要求,而且只有通过对传感器应用实例的原理和智能传感器实例的分析了解,才能将传感器和信息通信与信息处理结合起来,适应传感器的生产、研制、开发和应用。另一方面,传感器的被测信号来自于各个
2、应用领域,每个领域都为了改革生产力、提高工效和时效,各自都在开发研制适合应用的传感器,于是种类繁多的新型传感器及传感器系统不断涌现。温度传感器是其中重要的一类传器。其发展速度之快,以及其应用之广。并且还有很大潜力为了提高对传感器的认识和了解,尤其是对温度传感器的深入研究以及其用法与用途,基于实用、广泛和典型的原则而设计了本系统。本文利用单片机结合温度传感器技术而开发设计了这一温度测量系统。文中将传感器理论与单片机实际应用有机结合,详细地讲述了利用热电阻作为温度传感器来测量实时的温度,以及实现热电转换的原理过程。本设计系统包括温度传感器,信号放大电路,A/D 转换模块,数据处理与控制模块,温度显
3、示五个部分。文中对每个部分功能、实现过程作了详细介绍。整个系统的核心是进行温度测量与显示,完成了课题所有要求。 。1、PT100 温度传感器温度传感器从使用的角度大致可分为接触式和非接触式两大类,前者是让温度传感器直接与待测物体接触,而后者是使温度传感器与待测物体离开一定的距离,检测从待测物体放射出的红外线,达到测温的目的。在接触式和非接触式两大类温度传感器中,相比运用多的是接触式传感器,非接触式传感器一般在比较特殊的场合才使用,目前得到广泛使用的接触式温度传感器主要有热电式传感器,其中将温度变化转换为电阻变化的称为热电阻传感器,将温度变天津大学网络教育学院专科毕业论文2化转换为热电势变化的称
4、为热电偶传感器。热电阻传感器可分为金属热电阻式和半导体热电阻式两大类,前者简称热电阻,后者简称热敏电阻。常用的热电阻材料有铂、铜、镍、铁等,它具有高温度系数、高电阻率、化学、物理性能稳定、良好的线性输出特性等,常用的热电阻如 PT100、PT1000 等。近年来各半导体厂商陆续开发了数字式的温度传感器,如 DALLAS 公司 DS18B20,MAXIM 公司的MAX6576、MAX6577,ADI 公司的 AD7416 等,这些芯片的显著优点是与单片机的接口简单,如 DS18B20 该温度传感器为单总线技术,MAXIM 公司的 2种温度传感器一个为频率输出,一个为周期输出,其本质均为数字输出,
5、而ADI 公司的 AD7416 的数字接口则为近年也比较流行的 I2C 总线,这些本身都带数字接口的温度传感器芯片给用户带来了极大的方便,但这类器件的最大缺点是测温的范围太窄,一般只有-55+125,而且温度的测量精度都不高,好的才0.5 ,一般有2左右,因此在高精度的场合不太满足用户的需要。热电偶是目前接触式测温中应用也十分广泛的热电式传感器,它具有结构简单、制造方便、测温范围宽、热惯性小、准确度高、输出信号便于远传等优点。常用的热电偶材料有铂铑-铂、铱铑-铱、镍铁-镍铜、铜-康铜等,各种不同材料的热电偶使用在不同的测温范围场合。热电偶的使用误差主要来自于分度误差、延伸导线误差、动态误差以及
6、使用的仪表误差等。非接触式温度传感器主要是被测物体通过热辐射能量来反映物体温度的高低,这种测温方法可避免与高温被测体接触,测温不破坏温度场,测温范围宽,精度高,反应速度快,既可测近距离小目标的温度,又可测远距离大面积目标的温度。目前运用受限的主要原因一是价格相对较贵,二是非接触式温度传感器的输出同样存在非线性的问题,而且其输出受与被测量物体的距离、环境温度等多种其它因素的影响。本设计的要求是采用“PT100”热电阻,测温范围是-200+600,精度 0.5%,具体的型号选为 WZP 型铂电阻。2、AT89C51 单片机AT89C51 是一种带 4K 字节闪存可编程可擦除只 读 存 储 器 (F
7、PEROMFlash Programmable and Erasable Read Only Memory)的低电压、高性能 CMOS 8 位微处理器,俗称单 片 机 。 AT89C2051 是一种带 2K 字节闪存可编程可擦除只读存天津大学网络教育学院专科毕业论文3储器的单片机。单片机的可擦除只读存储器可以反复擦除 1000 次。该器件采用ATMEL 高密度非易失存储器制造技术制造,与工业标准的 MCS-51 指令集和输出管脚相兼容。由于将多功能 8 位 CPU 和闪烁存储器组合在单个芯片中,ATMEL的 AT89C51 是一种高效微控制器,AT89C2051 是它的一种精简版本。AT89C
8、51 单片机为很多嵌入式控制系统提供了一种灵活性高且价廉的方案。3、LCD 显示器液晶显示器是一种采用了液晶控制透光度技术来实现色彩的显示器。和CRT 显示器相比,LCD 的优点是很明显的。由于通过控制是否透光来控制亮和暗,当色彩不变时,液晶也保持不变,这样就无须考虑刷新率的问题。对于画面稳定、无闪烁感的液晶显示器,刷新率不高但图像也很稳定。LCD 显示器还通过液晶控制透光度的技术原理让底板整体发光,所以它做到了真正的完全平面。4、系统总体设计介绍测温的模拟电路是把当前 PT100热电阻传感器的电阻值,转换为容易测量的电压值,经过放大器放大信号后送给 A/D 转换器把模拟电压转为数字信号后传给
9、单片机 AT89C51,单片机再根据公式换算把测量得的温度传感器的电阻值转换为温度值,并将数据送出到 LCD 显示器进行显示。本设计系统主要包括温度信号采集单元,单片机数据处理单元,温度显示单元。其中温度信号的数据采集单元部分包括温度传感器、温度信号的获取电路(采样) 、放大电路、A/D 转换电路。系统的总结构框图如图 1 所示。图 1. 系统的总结构框图本温度测量系统设计,是采用 PT100 温度传感器经过放大和 A/D 转换器送天津大学网络教育学院专科毕业论文4到单片机进行控制温度显示。另外本系统还可以通过外接电路扩展实现温度报警功能,从而更好的实现温度现场的实时控制。经过多次的修改和调试
10、测量,本设计基本符合设计要求,由于受人为因素和软硬件的限制,系统难免不了带来一些误差,但通过调节和精确计算可以减小误差。通过本次温度测量系统的设计,我对温度测量控制有了进一步的熟悉和更深入的学习。在整个设计的过程中,本设计的重点和难点是:怎样将 PT100 热电阻的非电量信号转换为单片机单片机能识别的电量信号,其中的信号如何放大及放大倍数的确定等等。二、硬件设计1、PT100 传感器特性及测温原理电阻式温度传感器(RTD, Resistance Temperature Detector)是指一种物 质材料作成的电阻,它会随温度的改变而改变电阻值。PT100 温度传感器是一种以铂(Pt)做成的电
11、阻式温度传感器,属于正电阻系 数,其电阻阻值与温度的关系可以近似用下式表示:在 0600范围内:Rt =R0 (1+At+Bt2)在-2000范围内:Rt =R0 (1+At+Bt2+C(t-100)t3)式中 A、B、C 为常数,A=3.9684710-3;B=-5.84710-7;C=-4.2210-12;由于它的电阻温度关系的线性度非常好,因此在测量较小范围内其电阻和温度变化的关系式如下:R=Ro(1+T) 其中 =0.00392, Ro 为 100(在 0的电阻值),T 为华氏温度,因此铂做成的电阻式温度传感器,又称为 PT100。PT100 温度传感器的测量范围广:-200+600,
12、偏差小,响应时间短,还具有抗振动、稳定性好、准确度高、耐高压等优点,其得到了广泛的应用,本设计即采用 PT100 作为温度传感器。天津大学网络教育学院专科毕业论文5主要技术指标:1. 测温范围:-200600 摄氏度;2. 测温精度:0.5 摄氏度;3. 稳定性:0.5 摄氏度Pt100 是电阻式温度传感器,测温的本质其实是测量传感器的电阻,通常是将电阻的变化转换成电压或电流等模拟信号,然后再将模拟信号转换成数字信号,再由处理器换算出相应温度。采用 Pt100 测量温度一般有两种方法。方案一:设计一个恒流源通过 Pt100 热电阻,通过检测 Pt100 上电压的变化来换算出温度;测温原理:通过
13、运放U1A将基准电压4.096V转换为恒流源,电流流过Pt100时在其上产生压降,再通过运放U1B将该微弱压降信号放大(图中放大倍数为10) ,即输出期望的电压信号,该信号可直接连AD转换芯片。根据虚地概念“工作于线性范围内的理想运放的两个输入端同电位” ,运放U1A的“+”端和“-”端电位V+V-4.096V;假设运放U1A的输出脚1对地电压为Vo,根据虚断概念, (0-V-)/R1+(Vo-V-)/R Pt1000,因此电阻Pt100上的压降V Pt100Vo-V-V-*R Pt100/R1,因V-和R1均不变,因此图1虚线框内的电路等效为一个恒流源流过一个Pt100电阻,电流大小为V-
14、/R1,Pt100上的压降仅和其自身变化的电阻值有关。设计及调试注意点: a. 等效恒流源输出的电流不能太大,以不超过1mA为准,以免电流大使得Pt100电阻自身发热造成测量温度不准确,试验证明,电流大于1.5mA将会有较明显的影响。b. 运放采用单一5V供电,如果测量的温度波动比较大,将运放的供电改为15V双电源供电会有较大改善。c. 电阻R2、R3的电阻值取得足够大,以增大运放的U1B的输入阻抗。天津大学网络教育学院专科毕业论文6图 2.恒流源式测温电路由于封装问题,实际原理图如下:图 3.实际原理图方案二:采用惠斯顿电桥,电桥的四个电阻中三个是恒定的,另一个用Pt100 热电阻,当 Pt
15、100 电阻值变化时,测试端产生一个电势差,由此电势差换算出温度。测温原理:电路采用TL431和电位器VR1调节产生4.096V的参考电源;采用R1、R2、VR2、Pt100构成测量电桥(其中R1R2,VR2为100精密电阻) ,当Pt100的电阻值和VR2的电阻值不相等时,电桥输出一个mV级的压差信号,这个压差信号经过运放LM324放大后输出期望大小的电压信号,该信号可直接连AD转天津大学网络教育学院专科毕业论文7换芯片。差动放大电路中R3R4、 R5R6、放大倍数R5/R3,运放采用单一5V供电。设计及调试注意点: a. 同幅度调整R1和R2的电阻值可以改变电桥输出的压差大小; b. 改变
16、R5/R3的比值即可改变电压信号的放大倍数,以便满足设计者对温度范围的要求c. 放大电路必须接成负反馈方式,否则放大电路不能正常工作。d. VR2也可为电位器,调节电位器阻值大小可以改变温度的零点设定,例如Pt100的零点温度为0,即0时电阻为100,当电位器阻值调至109.885时,温度的零点就被设定在了25。测量电位器的阻值时须在没有接入电路时调节,这是因为接入电路后测量的电阻值发生了改变。e. 理论上,运放输出的电压为输入压差信号放大倍数,但实际在电路工作时测量输出电压与输入压差信号并非这样的关系,压差信号比理论值小很多,实际输出信号为4.096*(R Pt100/(R1+RPt100)
17、- RVR2/(R1+RVR2) (1)式中电阻值以电路工作时量取的为准。 f. 电桥的正电源必须接稳定的参考基准,因为如果直接VCC的话,当网压波动造成VCC发生波动时,运放输出的信号也会发生改变,此时再到以VCC未发生波动时建立的温度-电阻表中去查表求值时就不正确了,这可以根据式(1)进行计算得知。图4.三线制接法桥式测温电路2、放大电路设计本次放大电路我选用的是 LM358,其内部包括有两个独立的、高增益、内部频率补偿的双运算放大器,适合于电源电压范围很宽的单电源使用,也适用于天津大学网络教育学院专科毕业论文8双电源工作模式,在推荐的工作条件下,电源电流与电源电压无关。它的使用范围包括传
18、感放大器、直流增益模块和其他所有可用单电源供电的使用运算放大器的场合。3、信号调理电路设计调理电路的作用是将来自于现场传感器的信号变换成前向通道中 A/D 转换器能识别的信号,作为本系统,由于温度传感器是热电阻 PT100,因此调理电路完成的是怎样将与温度有关的电阻信号变换成能被 A/D 转换器接受的电压信号。4、A/D 转换器的选择与设计电路在我们所测控的信号中均是连续变化的物理量,通常需要用计算机对这些信号进行处理,则需要将其转换成数字量,A/D 转换器就是为了将连续变化的模拟量转换成计算机能接受的数字量。根据 A/D 转换器的工作原理,常用的A/D 转换器可分为两种,双积分式 A/D 转
19、换器和逐次逼近式 A/D 转换器。a. 双积分 A/D 转换器工作原理b. 逐次逼近型 A/D 转换器工作原理在本设计系统中,为了将模拟量温度转换成数字量,采用德州仪器公司生产的 4 通道 12 位串行输出采样模数转换器 ADS7841。具体连线如下图 5 所示:图 5. A/D 转换模块5、单片机控制电路本设计是采用 AT89C51 单片机作为主控电路,AT89C51 单片机是 Atmel 公司的产品,与 Intel 公司的 MCS51 系列兼容。在 AT89C51 单片机内部有作为程天津大学网络教育学院专科毕业论文9序存储器的 Flash 存储器,其容量为 4KB,可以承受不低于 1000
20、 次的反复擦写,调试比较方便。其中 P1 口为 A/D 转换器的通信端口,P2 口为按键控制,P0 口为 LCD 的数据端口,具体电路图 6 如下:图 6. 单片机控制模块6、按键电路本次设计使用 4x4 矩阵键盘,将其行线以及列线接到单片机的 P2 口,其中列线接上拉电阻然后在通过异或逻辑门在接至单片机的 P2.0 到 P2.3 口。具体连线如下图 7 所示:图 7. 按键模块7、显示电路本次设计使用 LCD12864 来显示温度采集结果,其中将 LCD 的数据口接入单片机的 P0 口,具体接线如下图 8 所示:天津大学网络教育学院专科毕业论文10图 8. 显示模块三、软件设计进行微机测量控
21、制系统设计时,除了系统硬件设计外,大量的工作就是如何根据每个测量对象的实际需要设计应用程序。因此,软件设计在微机测量控制系统设计中占重要地位。对于本系统,软件设计更为重要。在单片机测量控制系统中,大体上可分为数据处理、过程控制两个基本类型。数据处理包括:数据的采集、数字滤波、标度变换等。过程控制程序主要是使单片机按一定的方法进行计算,然后再输出,以便达到测量控制目的。软件设计主要是对温度进行采集、显示,通过按键操作,进行时间的设置与修改。因此,整个软件可分为温度采集子程序、时钟读取程序、按键子程序、显示子程序、及系统主程序。1、软件的有关算法(1)最小二乘理论获取温度电阻公式根据误差理论,我们
22、要获得较高精度的温度测量值,办法一般有 2 个,要么采用查表法,要么建立高精度的数学模型。如果用查表法,主要有 2 个问题,如果要提高测量精度,则需要建立大量的表格,而且得提前做大量得试验来进行天津大学网络教育学院专科毕业论文11多点校正,还有一个问题是程序的通用性差,这台仪器上校正好得数据可能在另一台上不合适。而采用已知的分度表,建立数学模型,然后通过工程量(标度)变换,通过测量 A/D 转换的结果后计算得到。这里我们考虑第 2 种方法的优点,首先采用分段的方法,将测量范围分段,然后查出该段的数学模型的各个系数,然后计算出温度值,这里,由于时间的关系,我们对整个测量范围分了 3 段,分别为
23、049、5070、71100,利用分度表进行离线的数学拟合,得到各段的数学模型系数。同时,可通过再将标度值代入可粗略估计在各个测量段内的最大误差值。我们通过最小二乘法进行线性拟合,得到如下的数学模型为:T1=2.5772R-257.7708 0-49T2=2.6366R-267.01 5070T3=2.7206R-281.90 71100上述 3 个数学模型中,最大的理论误差值都小于 0.5,能够满足精度要求,实际上如果有足够的时间,我们完全可以分得再细一些,这样理论的误差将会变得更小。(2)标度变换公式的获取根据上述的线性拟合结果:T=AR-B,这里的 A、B 是上述不同温度段的系数,而 R
24、 值由于在输出为 0V 时,实际上有个对应于 100 欧姆的偏置电路,因此根据 R-R0=U/I,而 I=2.500V/1.500K,而 AD/U/G=4096/4.900V,这里的 AD 值为 A/D 转换得结果 G 为放大器的增益,本设计中的二级放大器放大的倍数为 80倍。将上述条件代入得:T=A(4.9AD/4096/G/I+100)-B2、软件流程图天津大学网络教育学院专科毕业论文12开始系统初始化PT100 温度数据采集处理读到的数据送 LCD 显示结束开始初始化函数A/D 转换器进行 A/D 转换将转换后的电压转换为温度返回图 9. 系统总流程图 图 10. 温度转换程序流程图开始
25、系统初始化调用温度子程序调用显示子程序调用扫描按键程序开始将温度数据写入到LCD读取温度值显示温度值返回图 11. 显示流程图 图 12. 主函数流程图3、主程序(1)ADS7841 驱动程序#include #include #include “delay.h“#include “ads7841.h“#include “LCD1602.h“天津大学网络教育学院专科毕业论文13/-ADS7841 控制字节-#define control_byte 0b10011000/bit val description/bit7 1 start,恒为 1/bit6,5,4 001 选择 CH0 为+IN/
26、bit4 1 选择为单端输入/bit2 X 外部 MODE 接 GND,该位无作用,恒为 12 位/bit1,0 00 转换期间 ADC 为掉电模式void port_init(void)PORTA = 0xFF;/将所有端口初始化为输入,打开上拉DDRA = 0x00;PORTB = 0xFF;DDRB = 0x00;PORTC = 0xFF;DDRC = 0x00;PORTD = 0xFF;DDRD = 0x00;PORTE = 0xFF;DDRE = 0x00;PORTF = 0xFF;DDRF = 0x00;PORTG = 0xFF;DDRG = 0x00;void main()uns
27、igned int result;天津大学网络教育学院专科毕业论文14unsigned char i,array4,table=“0123456789“;port_init(); /端口初始化LCD1602_init(); /1602 液晶初始化ads7841_init(); /ADS7841 初始化LCD_write_string(0x80,“result:“);while(1)ads7841_start(); /启动 ADS7841,即拉低 CSdelay_nus(10);result=ads7841_W_R(control_byte); /发送控制字,并得到转换数据result /屏蔽掉
28、高四位delay_nus(10);ads7841_finish(); /停止 ADS7841,即拉高 CSfor(i=0;i#include #include “delay.h“#include “ads7841.h“天津大学网络教育学院专科毕业论文16/* * 函数名称:ads7841_init()* * 函数功能:初始化 ADS7841 端口* * 备 注:无*/void ads7841_init(void)DCLK_portelse天津大学网络教育学院专科毕业论文20lcdwc(GXPOS/16)|0x80);lcdwc(0x30); /恢复为基本指令集void lcdon(void)
29、/LCD 显示开启子程序 lcdwc(0x30); /设置为基本指令集lcdwc(0x0c);void lcdoff(void) /LCD 显示关闭子程序 lcdwc(0x30); /设置为基本指令集lcdwc(0x08);void lcdgraphon(void) /绘图区域显示开启子程序 lcdwc(0x36);lcdwc(0x30); /恢复为基本指令集void lcdgraphoff(void) /绘图区域显示关闭子程序 lcdwc(0x34);lcdwc(0x30); /恢复为基本指令集void lcdwd(unsigned char d) /向液晶显示控制器写数据CSPIN=1;
30、/片选使能transbyte(0xfa); /SYNCODE=0F8H,RW=0,RS=1,D0=0天津大学网络教育学院专科毕业论文21transbyte(d /送高四位数据,低四位补零transbyte(d /送低四位数据CSPIN=0; /片选禁止void lcdwc(unsigned char c) /向液晶显示控制器送指令CSPIN=1; /片选使能transbyte(0xf8); /SYNCODE=0F8H,RW=0,RS=0,D0=0transbyte(c /送高四位数据,低四位补零transbyte(c /送低四位数据CSPIN=0; /片选禁止void transbyte(un
31、signed char d) /送 1 字节数据到液晶显示控制器子程序 unsigned char i;for(i=0;i8;i+) if(delsetransbit(0);d=1; /从高到低位送字节位数据到液晶显示控制器void transbit(bit d) /送 1 位数据到液晶显示控制器子程序天津大学网络教育学院专科毕业论文22 STDPIN = d; /先送数据到数据口线 DI_nop_();SCLKPIN = 1; /再使时钟口线发一个负脉冲_nop_();SCLKPIN = 0;_nop_();SCLKPIN = 1;四、总结本温度测量系统设计,是采用 PT100 温度传感器经过放大和 A/D 转换器送到单片机进行控制温度显示。另外本系统还可以通过外接电路扩展实现温度报警功能,从而更好的实现温度现场的实时控制。经过多次的修改和调试测量,本设计基本符合设计要求,由于受人为因素和软硬件的限制,系统难免不了带来一些误差,但通过调节和精确计算可以减小误差。通过本次温度测量系统的设计,我对温度测量控制有了进一步的熟悉和更深入的学习。在整个设计的过程中,本设计的重点和难点是:怎样将 PT100 热电阻的非电量信号转换为单片机能识别的电量信号,其中的信号如何放大及放大倍数的确定等等。五、附录总电路图天津大学网络教育学院专科毕业论文23图 13. 总电路图