基于PT100温度监测的设计
基于PT100铂热电阻的高精度温度实时监测系统
Hi g h p r e c i s i o n t e mp e r a t u r e me a s u r i ng a nd
mo ni t o r i ng s y s t e m b a s e d o n PT1 0 0
W e i Ha o di
测 试 与监 控 系 统 , 采用 O P 4 8 4 集 成 运 放 和 基 准 源 TL 4 3 1设 计 恒 流 源 为 热 电 阻 提 供 激 励 , 热 电 阻 产 生 的输 出 电 压 经 信 号 调 理 放 大电路 进 行 放 大 , 再 送 入 AD 变 换 器 TL C 2 5 7 4进 行 模 数 转 换 , 同 时 采 用 微 控 制 器 AT me g a 1 2 8通 过 R S 2 3 2接 口 芯 片 MAX 2 3 2 接收 P C上 位 机 发 送 的 控 制 命 令 , 可 以实 现温 度采 集启 动 与 停 止 、 采集周期 、 精 度 等 的命 令 控 制 。该 系 统 消 除 了 热 电
阻连 接 导 线 带 来 的 测 量 误 差 , 具有采集精度高 、 人 机 交 互 能 力 强 等 优 点 ,同 时 系 统 电 路设 计 简 单 实 用 , 性能稳定可靠 。
关键 词 : P T 1 0 0铂 热 电阻 ; 测 试与监控 ; 信 号 调 理 与放 大
中 图分 类 号 :TN7 9 +2 文献标识码 : A 国家 标 准 学 科 分 类代 码 : 5 1 0 . 4 0 1 0
wi r e h i g h p r e c i s i o n t e mp e r a t u r e me a s u r i n g a n d mo n i t o r i n g s y s t e m u s i n g P T1 0 0 wa s d e s i g n e d .Af t e r e x i t e d b y a c o n s t a n t c u r r e n t
毕业设计-基于PT100热电阻温度传感器和AT89C51单片机的温度检测系统设计
摘要本课题本系统采用PT100热电阻温度传感器和单片机组成可靠性高、功耗低的温度检测系统。
以AT89C51单片机系统为核心,对单点的温度进行实时检测。
采用模拟温度传感器PT100对温度进行检测;采用串型模数转换器ADC0809进行A/D转换把温度信号调解转换为电压信号与AT89C51单片机接口设置LED八段数码管实时显示温度值。
本设计包括温度传感器、A/D转换模块、数据传输模块、温度显示模块四个部分。
关键词:单片机,PT100热电阻,ADC0809,温度检测The design of Single Chip MicrocomputerTemperature Detection SystemBased on the Resistive Thermal Detector of PT100AbstractThis article AT89C51 monolithic integrated circuit which produces by ATMEL Corporation is the core, can inspect a single point of the temperature in real time. The adoption of the serial A/D for temperature signals into voltage signal mediation AT89C51 Single-Ship Compute interfaces with the eighth LED digital display of real-time temperature. The design includes four parts of the temperature sensor and the A / D converter module and the data transmission modules and the temperature display module. Each part functions and the process was described in the Paper in detail.Key words:Single-Ship Computer; Resistive Thermal Detector of PT100; ADC0809; Measure-temperature目录摘要 (I)Abstract (II)1 绪论 (1)1.1 课题背景 (1)1.2 方案论证 (2)1.2.1 单片机选型 (2)1.2.2 模数转换器选型 (3)1.2.3 显示方案确定 (3)2 硬件设计 (4)2.1 温度信号的获取与放大 (4)2.1.1 元件介绍 (4)2.1.2 放大电路设计 (4)2.2 模数转换单元 (5)2.2.1 8位串行A/D转换器ADC0809 (5)2.2.2 模数转换单元电路的设计 (7)2.3 键盘电路的设计 (8)2.4 LED显示电路的设计 (8)2.4.1 LED数码管原理 (9)2.4.2 LED数码管编码方式 (9)2.4.3 LED数码管显示方式和典型应用 (10)2.4.4 LED数码管的原理图 (11)2.5 声光报警电路 (12)2.6 单片机接口电路 (13)2.6.1单片机的时钟电路 (13)2.6.2复位电路和复位状态 (13)3 软件设计 (16)3.1 程序设计语言的选用 (16)3.2 软件程序的设计 (16)3.2.1 程序流程 (16)3.2.2 键盘管理 (17)3.2.3 LED显示 (18)3.2.4 模拟量的采集与处理 (18)3.3源程序 (22)4 抗干扰设计 (29)4.1 用于单片机系统的干扰抑制元件 (29)4.2 提高单片机系统抗干扰能力的主要手段 (29)5 结论 (31)致谢 (32)参考文献 (33)论文原创性声明 ...................................................................................... 错误!未定义书签。
基于Pt100铂电阻的数字温度计的设计
目录摘要 (2)1 绪言 (4)1.1课题背景 (4)1.2国内外研究的发展及现状 (5)1.3本课题研究的内容 (8)2总体设计方案 (8)2.1提出总体设计方案 (8)2.2总体设计方案论证 (9)3 铂电阻理论基础 (9)3.1铂电阻的选取 (9)3.2铂电阻温度的测量方法 (12)4 整体电路 (14)4.1放大电路设计 (14)4.2温度显示电路理论及设计 (15)4.3AD转换模块 (17)4.4AT89C51单片机系统电路图 (18)4.5系统程序设计 (19)5.仿真结果 (21)总结 (21)参考文献 (22)摘要温度计量是计量学的一个重要分支,它在国民经济各领域中占有重要的地位。
人们的日常生活、工农业生产和科学实验等许多方面都与温度测量有着十分密切的关系。
1871年,西门子(Sir william Siemens)发现了铂电阻测温原理,制造出第一支铂电阻温度计。
1887年,卡伦德(Hugh Callendar)改进了铂电阻温度计的工艺和研制测温电桥并得到了著名的卡伦德公式。
之后,铂电阻温度计成为国际温标的标准仪器,并一直沿用至今。
金属热电阻是一种广泛应用的温度传感器。
它以测量精确,线性好,重复性好,测量范围大,体积小等的点被用在很多场合,其中铂电阻传感器被定为测温的基准。
金属热电阻特别是铜、铁等热电阻的大量使用,将给使用者在传感器的标定造成重复性的麻烦。
因为传感器的标定既复杂又要求苛刻,且成本较高。
为了解决这个问题我采用了一种方便的以精密铂电阻为标准传感器的金属热电阻的来作为温度传感器。
本文采用atmega16单片机作为处理的核心部分;用pt100作为温度传感器,由于atmega16单片机自带有A/D转换功能,把采集到的温度经放大后直接送到atmega16单片机,经过atmega16单片机处理后送到显示器,显示器将显示采集的温度,这样就能够达到题目的要求,而且其准确性也较高。
基于PT100的数字温度计的设计
1 引言
在工农业生产中,温度检测及其控制占有举足轻重的地位,随着现代信息 技术的飞速发展和传统工业改造的逐步实现 ,能够独立工作的温度检测和显示 系统已经应用于诸多领域。 要达到较高的测量精度需要很好的解决引线误差补偿 问题、 多点测量切换误差问题和放大电路零点漂移误差等问题,使温度检测复杂 化。模拟信号在长距离传输过程中,抗电磁干扰时令设计者伤脑筋的问题,对于 多点温度检测的场合,各被检测点到监测装置之间引线距离往往不同,此外,各 感元件参数的不一致,这些都是造成误差的原因,并且难以完全清除。 单片机以其功能强、体积小、可靠性高、造价低和开发周期短等优点,成为 自动化和各个测控领域中必不可少且广泛应用的器件, 尤其在日常生活中也发挥 越来越大的作用。采用单片机对温度采集进行控制,不仅具有控制方便、组态简 单和灵活性大等优点, 而且可以大幅度提高被控数据的技术指标,从而能够大大 提高产品的质量和数量。 由于科学技术的飞速发展, 特别是微电子加工技术,计算机技术及信息处理 技术的发展, 人们对信息资源的需求日益增长,作为提供信息的传感技术及传感 器愈来愈引起人们的重视, 而综合各种技术的传感器技术也进入到一个飞速的发 展阶段。要及时正确地获取各种信息,解决工程、生产及科研中遇到的各种具体 的检查问题, 就必须合理选择和善于应用各种传感器及传感技术。如最简单的温 度的测量,有热电偶、光纤温度传感器等等。但是,热电阻是开发早、种类多、 发展较成熟的感元器。 热电阻由半导体陶瓷材料组成,利用的原理是温度引起电 阻变化。热电阻器是感元件的一类,按照温度系数不同分为正温度系数热电阻器 和负温度系数热电阻器。 热电阻器的典型特点是对温度感,不同的温度下表现出 不同的电阻值。 正温度系数热电阻器在温度越高时电阻值越大,负温度系数热电 阻器在温度越高时电阻值越低, 它们同属于半导体器件。随着半导体技术的不断 发展,热电阻作为一种新型感温元件应用越来越广泛。他具有体积小、灵度高、 重量轻、热惯性小、寿命长以及价格便宜等优点,最重要的是作为温度传感器的 热电阻的灵度非常高,这是其他测温传感器所不能比拟的。
基于PT100热敏电阻的数字温度计
基于PT100热敏电阻的数字温度计嵌入式设计基于热敏电阻的数字温度计设计院(系) 专业班级指导老师学生姓名成绩2015年 7月 10日目录第一章绪论................................................... 1 第二章设计要求及构思 (2)2.1设计要求 (2)2.2设计构思 (2)第三章总体程序流程图.......................................... 4 第四章原理框图 (5)4.1PT100铂热电阻: (5)4.2信号放大电路 (5)4.4主芯片电路图 (7)4.5 四位数码管 (8)第五章仿真电路图 (9)第六章心得体会 (11)参考文献 ..................................................... 12 附录程序代码 (13)第一章绪论随着以知识经济为特征的信息化时代的到来人们对仪器仪表的认识更加深入,温度作为一个重要的物理量,是工业生产过程中最普遍,最重要的工艺参数之一。
随着工业的不断发展,对温度的测量的要求也越来越高,而且测量的范围也越来越广,对温度的检测技术的要求也越来越高,因此,温度测量及其测量技术的研究也是一个很重要的课题。
目前温度计按测使用的温度计种类繁多,应用范围也比较广泛,大致可以包括以下几种方法:1,利用物体热胀冷缩原理制成的温度计2,利用热电效应技术制成的温度检测元件3,利用热阻效应技术制成的温度计4,利用热辐射原理制成的高温计5,利用声学原理进行温度测量本系统的温度测量采用的就是热阻效应。
温度测量模块主要为温度测量电桥,当温度发生变化时,电桥失去平衡,从而在电桥输出端有电压输出,但该电压很小。
将输出的微弱电压信号通过OP07放大,将放大后的信号输入AD转换芯片,进行A/D转换后,就可以用单片机进行数据的处理,在显示电路上,就可以将被测温度显示出来。
基于PT100热电阻的单片机温度检测系统设计
基于PT100热电阻的单片机温度检测系统设计摘要本文介绍了一种基于PT100热电阻的单片机温度检测系统设计。
该系统采用了Maxim的MAX31865芯片来测量PT100热电阻的电阻值,并通过单片机将电阻值转换为温度值。
该系统可以实现高精度的温度测量,并且具有较低的功耗和较高的稳定性。
背景在许多工业应用中,需要对温度进行精确的测量。
PT100热电阻是一种常用的温度传感器,它的电阻值随着温度的变化而变化。
由于PT100热电阻的电阻值变化很小,因此需要使用高精度的电路来进行测量。
单片机是一种常见的控制器,它可以方便地集成多种功能。
将单片机与PT100热电阻结合使用,可以实现精确的温度测量,并且具有较低的功耗和较高的稳定性。
设计硬件设计硬件设计采用了MAX31865芯片来测量PT100热电阻的电阻值。
MAX31865是一种高精度热电偶转换器,可以方便地测量PT100热电阻的电阻值。
MAX31865还提供了冗余检测和安全防护功能,可以提高系统的可靠性。
MAX31865芯片的引脚与单片机的引脚连接如下:MAX31865引脚单片机引脚SDI MOSISDO MISOSCK SCLKCS SS其中,MOSI、MISO、SCLK和SS是SPI总线的引脚,用于与MAX31865进行通信。
单片机的中断引脚连接到MAX31865的RDY引脚,用于检测MAX31865是否准备好进行测量。
PT100热电阻的引脚连接到MAX31865的RTD+和RTD-引脚。
为了减小测量误差,应尽量将RTD+和RTD-的长度保持一致,并且尽可能靠近MAX31865芯片。
软件设计软件设计采用了Arduino环境,可以方便地进行程序开发和调试。
首先需要初始化SPI总线和MAX31865芯片。
可以使用Arduino的SPI库来初始化SPI总线,使用MAX31865库来初始化MAX31865芯片。
MAX31865库提供了方便的接口来进行温度测量和数据读取。
基于pt100的温度测量显示
基于PT100的温度测量显示
一、功能要求
利用PT100热电阻测量水温(0-100。
C),并将结果显示出来,保留一位小数。
二、PT100介绍
Pt100 温度传感器为正温度系数热敏电阻传感器,主要技术参数如下:测量范围:-200℃~+850℃;
允许偏差值△℃:A 级±(0.15+0.002│t│), B 级±(0.30+0.005│t│);
最小置入深度:热电阻的最小置入深度≥200mm;
允通电流≤ 5mA。
另外,Pt100 温度传感器还具有抗振动、稳定性好、准确度高、耐高压等优点。
铂热电阻的线性较好,在0~100 摄氏度之间变化时,最大非线性偏差小于0.5 摄氏度。
1、铂热电阻阻值与温度关系
式中,A=0.00390802;B=-0.000000580;C=0.0000000000042735。
可见Pt100 在常温0~100摄氏度之间变化时线性度非常好,其阻值表达式可近似简化为:RPt=100(1+At),当温度变化1 摄氏度,Pt100 阻值近似变化0.39 欧。
2、分度表
三、原理图
四、仪用放大器原理
仪用放大器是由运放1A 、2A 按同向输入接法组成第一级差分放大电路运放3A 组成第二级差分放大电路。
在第一级电路中1v 、2v 分别加到1A 和2A 的同相端1R 和两个2R 组成的反馈网络引入了负反馈,两运放1A 、2A 的两输入端形成虚短和虚断
在仪用放大器中 常2R、3R和4R为给定值1R用可变电阻代替调节1R的值 可改变电压增益vA。
基于PT100传感器的温度测量系统的设计
R=Ro(1+αT)
其中α=0.00392,Ro为100Ω(在0℃的电阻值),T为摄氏温度。因此白金作成的电阻式温度检测器,又称为PT100。
PT100是电阻式温度传感器,测温的本质其实是测量传感器的电阻,通常是将电阻的变化转换成电压或电流等模拟信号,然后再将模拟信号转换成数字信号,再由处理器换算出相应温度。
具体的需求对象可以从以下几个方面进行表述:
1、在人类社会进入知识经济时代、信息技术高速发展的背景下,热电阻及其测量控制技术得到日益广泛应用,给热电阻行业的快速发展提供了良好契机。热电阻是信息产业的源头和组成部分,是信息技术的重要基础。
2、热电阻广泛应用于装备、改造传统产业的工艺流程的测量和控制,是现代化大型重点成套装备的重要组成部分,是信息化带动工业化的重要纽带。
图3.2 信号采集调理电路
根据运放的“虚短”、“虚断”作用,电压信号放大转换为可以输入A/D转换器的合适电压值。
2.3 A/D模数转换模块
2.3.1 ICL7135功能介绍
ICL7135是一种四位半的双积分A/D转换器,可以转换出±20000个数字量选通控BCD码输出,与单片机接口十分方便。它具有精度高(相当于14位A/D转换),价格低的优点。其转换速度与时钟频率相关,每个转换周期均有:自校准(调零),正向积分(被测模拟电压积分),反向积分(基准电压积分)和过零检测四个阶段组成,其中自校准时间为10001个脉冲,正向积分时间为10001个脉冲,反向积分直至电压到零为止(最大不超过20001个脉冲)。故设计者可以采用从正向积分开始计数脉冲个数,到反向积分为零时停止计数。将计数的脉冲个数减10000,即得到对应的模拟量。具体电路如图2.3所示。
pt100测温方案
PT100测温方案引言PT100是一种常用的温度传感器,通过测量电阻的变化来实时监测环境温度。
本文档旨在介绍PT100测温方案的基本原理、工作原理和应用场景。
背景随着现代工业的发展和对温度精度要求的提高,传统的温度测量方法已经不能满足需求。
PT100作为一种非常精准、稳定可靠的温度传感器,被广泛应用于工业控制、环境监测、医学设备等领域。
PT100测温原理PT100是基于铂电阻温度传感器的一种类型,其工作原理基于铂电阻随温度变化而改变的特性。
PT100的电阻值随温度线性变化,当温度升高时,电阻值也随之增加。
PT100采用的电阻材料主要是铂金(Pt),因为铂金具有较低的温度系数和较高的抗腐蚀性能。
一般情况下,PT100电阻值在0℃时为100Ω,随着温度的升高,其电阻值也会相应增大。
PT100测温方案电路连接PT100温度传感器通常使用三线制进行连接。
三线制是为了消除线路电阻对测量精度的影响。
具体的电路连接如下:•一条线连接传感器的一个端口•另一条线连接传感器的另一个端口•第三条线是连接传感器的中间点和测量设备的接地点温度测量原理PT100测温方案基于电流-电压转换原理。
在PT100传感器两端施加一个恒定电流,测量传感器两端的电压,通过电阻和电压的关系计算出温度值。
为了减小线路电阻对测量结果的影响,通常使用差分放大器进行信号放大和抗干扰。
该放大器可以消除线路中的噪声并提高测量精度。
温度标定为了保证温度测量的准确性,通常需要进行温度标定,即将电阻值与温度之间的关系建立一个准确的转换函数。
标定时可使用标准温度源和精确的测量设备,将不同温度下的电阻值与实际温度相对应。
标定过程中需要考虑线路电阻、放大器增益的影响,并根据标定数据进行修正,以确保测量结果的准确性。
温度补偿由于传输线路的电阻和连接器的接触不良等原因,传感器两端的电阻可能发生变化,进而影响到温度测量结果。
为了解决这个问题,可以采用温度补偿技术。
温度补偿通常通过引入额外的温度传感器来实现。
基于PT100的温度监控系统设计
3 Z 字型翻转机构
图 3 Z 字型翻转机构 Z 字型翻转机构由一个油压缸和两个连杆组成, 油压缸底 部与车底盘用铰链连接, 顶部与连杆 1 用铰链连接, 连杆 1 底 部与车厢底盘连接, 顶部与连杆 2 用铰链连接, 连杆 2 与车厢 顶部用铰链连接。连杆 1 与连杆 2 的尺寸以及油压缸与连杆 1 相连的位置决定了车厢的翻转角度。可通过改变这些尺寸 来改变车厢所需的翻转角度。 3.1 缺点 它在运动过程中, 如果没有很好地控制油压缸的行程, 会 使得连杆 1 和连杆 2 运动过程中行程死角, 造成机构失效, 所 以解决好这个问题是是否能够很好地运用此机构的关键。 3.2 优点 (1)此机构在运动过程中, 连杆 2 相当于二杆机构, 具有很好 的受压能力。 连杆 1、 连杆 2 与油油压缸共同承受车厢以及车厢 内垃圾的重量, 所以具有很好的承受能力, 不易造成机构的损坏。
新型的温度监控系统。该系统以单片机 STC89C52 作为温度监控的核心, PT100 采集温度, 外加恒流源, 经过放 大、 A/D 转换, 送给单片机进行处理, 1602 液晶显示, 由 超温发出报警, 用无线遥控调节超温报警的上限。该监 控系统很好的解决了精度低, 高温报警上限不可调的问题。实验结果表明, 该系统设计方案是可行的。 关键词: PT100 超温报警 无线遥控 文献标识码: A 文章编号: 1007-3973 2012) ( 008-056-02 来采集温度信号, 外加恒流源将采集的信号转换成电压, 再经 过放大和 A/D 转换, 送给单片机进行处理, 由液晶显示被测温 度, 如果超温则发出报警, 另外通过无线遥控模块调节超温报 警上限。 3 硬件设计 完善的硬件设计是系统正常工作的基础,基于 PT100 的 温 度 监 控 系 统,硬 件 主 要 由 以 下 四 个 模 块 构 成,单 片 机 STC89C52、 测温模块、 显示模块、 无线遥控模块和超温报警模 块。系统硬件框图如图 1 所示。 中图分类号: TP212 1 引言 温度是作为被测量与控制的重要参数之一, 很多的生产过 程都是在特定的温度范围内进行的, 这就需要控制与测量温度。 铂电阻是一种常用的测温元件之一, 具有测温范围广, 准确度 高, 可靠性好等优点。本文选用 PT100 铂电阻, 设计了系统的 软硬件, 为温度监控提供了一种新的思路。 该系统提高了监控 温度的精度, 可以根据实际需要调节高温报警的上限。 2 基本工作原理 PT100 铂电阻的阻值随着温度的变化而变化, 利用此特点
PT100铂热电阻温度测量系统设计
PT100铂热电阻温度测量系统设计
无论在工业、农业、科学研究、国防和人们日常生活的各个方面,温度
测量和控制都是极为重要的课题。
温度测量系统在单片机系统设计中应用广泛,
根据单片机系统设计要求的不同,温度测量系统的设计也有所不同,有采用集
成芯片的,也有采用恒流源器件和恒压源器件的。
本系统选用PT100 铂热电阻
作为温度信号采集元件,来进行温度测量系统设计。
1 基本工作原理
PT100 铂热电阻的阻值随着温度的变化而变化,利用这一特点来采集温度信号,将采集到的信号转换成电压信号;再经过A/D 转换成数字信号并由单片
机系统读取;单片机系统把读取到的数字信号进行识别处理,并换算成与温度
对应的数字信号,最后再由液晶显示器显示输出温度值。
2 硬件设计
硬件组成主要包括恒流源电路、电压放大、A/D 转换接口电路、光耦隔离
电路、液晶显示电路5 个组成部分。
2.1 恒流源电路
恒流源电路如图1 所示。
其中芯片OP07 为运算放大器,它和5 个电阻组成
恒流源电路,在VIN+处输出1 mA 的工作电流。
图中DGND=5 V,VMC=0 V,有4 个节点分别是NET1,NET2,NET3,NET4。
设流过R110 的电流为Ia,流过R114 的电流为Ib,单位为mA,方向都向右。
则根据运放的虚断和虚短,则有方程:
DGND-(R111+R110)×Ia+R114×Ib-R113×((DGND-R111×Ia)/R112)-(VDGND- R111×Ia)=0
代入数据,有:。
基于PT100的数字温度计设计
郑州轻工业学院传感器及应用系统课程设计说明书数字温度计设计姓名:专业班级:学号:指导老师:时间:郑州轻工业学院课程设计任务书题目数字温度计设计专业、班级电子信息工程09-1 学号姓名主要内容、基本要求、主要参考资料等:一、主要内容:(1)整体电路设计(画出电路组成框图);(2)信号检测电路设计;(3)信号号放大电路设计,电路参数选取、数据计算;(4)A / D转换电路设计(5)显示电路设计。
二、基本本要求:(1)采用热电阻传感器组成测量电路;(2)电路组成:测量电桥、运算放大电路、A / D转换、显示电路;(3)测量范围为-199.9 ~ +199.9℃, 不进行非线性校正;(4)假设在实验装置上进行模拟实验,测量出需经实验确定的参数或系数;(5)写出5000字左右的工作原理说明,附系统图一张。
采用热电阻传感器。
三、主要参考资料:完成期限:2012年 6月11 日-2012年 6月15日指导教师签章:专业负责人签章:2012年 6 月 8 日数字温度计设计电子信息工程09 级 1 班指导老师:摘要:本文在查阅、分析了现有的几种不同的测温原理,分析确定了热敏电阻测温,并对基于热敏电阻的数字温度计的设计进行了深入探讨和研究。
该系统分为测温模块、信号放大模块、A/D转换模块和控制显示模块,并分别对其进行方案分析,最终确定数字温度计系统的系统构架和设计方案;在硬件电路中,详细阐述了各模块电路的工作原理,分析了以AT89C51单片机为主控单元的系统硬件和软件设计,并对该系统进行误差分析,使我们对于系统的各种性能有了进一步认识。
本设计采用AT89C51单片机,TLC2543 A/D转换器,OP07放大器,铂电阻PT100、LCD1602及电源模块组成系统,并设计了相应的软件流程图,使其实现温度的实时显示。
该系统的优点是:使用简便;测量精确、稳定、可靠;测量范围大;使用对象广。
关键词:PT100 ;测温;单片机;数字温度计目录1 概述 (1)2 系统硬件电路设计 (2)2.1电源模块 (2)2.2信号采集模块 (2)2.3信号调理放大模块 (4)2.4 A/D转换模块 (5)2.5单片机控制模块 (7)2.6液晶显示模块 (8)3 系统软件设计 (10)3.1软件总体流程设计 (10)3.2系统软件实现原理 (10)3.3系统程序构建 (10)4总结与展望 (12)参考文献 (13)附录:总原理图 (14)1概述改革开放以来,人们的生活水平逐渐提高,国民经济也取得了长足的发展。
基于PT100热敏电阻的数字温度计
嵌入式设计基于热敏电阻的数字温度计设计院(系)___________________专业__________________班级___________________指导老师____________________学生姓名____________________成绩___________________2015年7月10日第一章绪论 (1)第二章设计要求及构思 (1)2.1设计要求 (1)2.2设计构思 (2)第三章总体程序流程图 (3)第四章原理框图 (4)4.1PT100伯热电阻: (4)4.2信号放大电路 (4)4.4主芯片电路图 (6)4.5四位数码管 (7)第五章仿真电路图 (8)第六章心得体会 (10)参考文献 (11)附录程序代码 (12)第一章绪论随着以知识经济为特征的信息化时代的到来人们对仪器仪表的认识更加深入,温度作为一个重要的物理量,是工业生产过程中最普遍,最重要的工艺参数之一。
随着工业的不断发展,对温度的测量的要求也越来越高,而且测量的范围也越来越广,对温度的检测技术的要求也越来越高,因此,温度测量及其测量技术的研究也是一个很重要的课题。
目前温度计按测使用的温度计种类繁多,应用范围也比较广泛,大致可以包括以下儿种方法:1,利用物体热胀冷缩原理制成的温度计2,利用热电效应技术制成的温度检测元件3,利用热阻效应技术制成的温度计4,利用热辐射原理制成的高温计5,利用声学原理进行温度测量本系统的温度测量采用的就是热阻效应。
温度测量模块主要为温度测量电桥,当温度发生变化时,电桥失去平衡,从而在电桥输出端有电压输出,但该电压很小。
将输出的微弱电压信号通过OP07放大,将放大后的信号输入AD转换芯片,进行A/D转换后,就可以用单片机进行数据的处理,在显示电路上,就可以将被测温度显示出来。
第二章设计要求及构思2.1设计要求1.系统硬件设计(1)使用热敏电阻PT100;(2)单片机采用MCS51系列;(3)LED数码管显示温度。
基于Pt100温度测温设计
基于Pt100温度测温设计
Pt100的电阻随着问的变化而变化,通过测量其电阻来推算被测物体温度的温度传感器(模拟式温度传感器)。
它是典型的接触式、模拟量输出的温度传感器,具有灵敏度高、稳定性好等优点,是工业上常的温度测量装置。
系统功能定义及设计思路:本系统采用WZP型Pt100进行设计,温度的测量范围设置为
-200~850℃之间,精确到0.1℃
经过模拟电路将电阻值转换为电压,然后经过放大电路处理后再送到A/D转换器中,显示采用拓普微LCD240128液晶屏
硬件工作原理:本系统硬件电路包括单片机模块、A/D处理模块、温度测量电路、显示模块等4部分。
系统软件开发流程:
1.主程序
2.A/D转换
3.温度转换
4.显示
5.T0中断子程序。
基于PT100的温度测试仪
第一章概述第二章设计方案与论证本设计设计的温度测量系统是把热电阻信号通过传感器检测转变为电压信号,经过信号采集电路转换成A/D输入的标准信号。
之后A/D将模拟电压信号变转换成数字信号,然后送入单片机(MCU)进行处理和运算,单片机将处理的数据通过LED数码管显示。
整体方案设计流程图如下。
传感器选择温度测量的方案有很多种,可以采用传统的分立式传感器、模拟集成传感器以及新兴的智能型传感器。
方案一:采用模拟分立元件如电容、电感或晶体管等非线形元件,该方案设计电路简单易懂,操作简单,且价格便宜,但采用分立元件分散性大,不便于集成数字化,而且测量误差大。
方案二:采用温度传感器通过温度传感器采集温度信号,经信号放大器放大后,送到A/D转换芯片,将模拟量转化为数字量,传送给单片机控制系统,最后经过LED显示温度。
热电阻也是最常用的一种温度传感器。
它的主要特点是测量精度高,性能稳定,使用方便,测量范围为-200℃~850℃,完全满足要求,考虑到铂电阻的测量精确度是最高的,所以我们设计最终选择铂电阻Pt100作为传感器。
该方案采用热电阻Pt100做为温度传感器、OP07作为信号放大器,对于温度信号的采集具有大范围、高精度的特点。
相对与方案一,在功能、性能、可操作性等方面都有较大的提升。
在这里我选用方案二完成本次设计。
放大器选择Op07是一种低噪声,非斩波稳零的双极性运算放大器。
由于OP07具有非常低的输入失调电压(对于OP07A最大为25μV),所以OP07在很多应用场合不需要额外的调零措施。
OP07同时具有输入偏置电流低(OP07A为±2nA)和开环增益高(对于OP07A为300V/mV)的特点,这种低失调、高开环增益的特性使得OP07特别适用于高增益的测量设备和放大传感器的微弱信号等方面。
宽的输入电压范围(最少±13V)与高达110dB(OP07A)的共模抑制比和高输入阻抗的结合,在同相电路阻态中提供了很高的精度,即使在很高的闭环增益下,也能保持极好的线性和增益精度。
基于PT100的温度测量系统设计
摘要本文首先简要介绍了铂电阻PT100的特性以及测温的方法,在此基础上阐述了基于PT100的温度测量系统设计。
在本设计中,是以铂电阻PT100作为温度传感器,采用恒流测温的方法,通过单片机进行控制,用放大器、A/D转换器进行温度信号的采集。
另外,还设计了时钟电路模块,能实现对温度的实时测量。
本设计采用了两线制铂电阻温度测量电路,通过对电路的设计,减小了测量电路及PT100自身的误差,使温控精度在0℃~100℃范围内达到±0.1℃。
本文采用AT89S51单片机,TLC2543 A/D转换器,DS1302时钟芯片,AD620放大器,铂电阻PT100及6位数码管组成系统,编写了相应的软件程序,使其实现温度的实时显示。
该系统的特点是:使用简便;测量精确、稳定、可靠;测量范围大;使用对象广。
关键词:PT100 单片机温度测量DS1302AbstractThis article briefly describes the characteristics of PT100 platinum resistance and temperature measurement method, on the basis it describes the design of temperature measurement system based on PT100. In this design, it is use a PT100 platinum resistance as temperature sensor, in order to acquisition the temperature signal, it use of constant-current temperature measurement method and use single-chip control, Amplifier, A / D converter. In addition, it designs a clock circuit modules to achieve real-time measurement of temperature.It can still improve the perform used two-wire temperature circuit and reduce the measurement eror. The temperature precision is reached ±0.1℃between 0℃~100℃.The system contains SCM(AT89S51), analog to digital convert department (TLC2543), DS1302 chip, AD620 amplifier, PT100 platinum, LED Digital tube with six, write the corresponding software program to achieve real-time temperature display. The system is simple , accurate , stable and wide range.Keywords:PT100 SCM Temperature Measures DS1302目录前言 (1)第一章方案设计与论证 (2)第一节传感器的选择 (2)第二节方案论证 (3)第三节系统的工作原理 (3)第四节系统框图 (4)第二章硬件设计 (5)第一节PT100传感器特性和测温原理 (5)第二节信号调理电路 (6)第三节恒流源电路的设计 (6)第四节放大电路的设计 (7)第五节A/D转换器的选择与设计电路 (9)第六节DS1302时钟电路设计 (12)第七节单片机控制电路 (14)第八节按键和显示电路 (14)第三章软件设计........................................................................... 错误!未定义书签。
基于PT100传感器测温设计
基于PT100传感器测温设计08自动化袁康洪200807201127PT100传感器特性和测温原理电阻式温度传感器(RTD, Resistance Temperature Detector)是指一种物质材料作成的电阻,它会随温度的改变而改变电阻值。
PT100温度传感器是一种以铂(Pt)做成的电阻式温度传感器,属于正电阻系数,其电阻阻值与温度的关系可以近似用下式表示:在0~600℃范围内:Rt =R0 (1+At+Bt2)在-200~0℃范围内:Rt =R0 (1+At+Bt2+C(t-100)t3)式中A、B、C 为常数,A=3.96847×10-3;B=-5.847×10-7;C=-4.22×10-12;由于它的电阻—温度关系的线性度非常好,因此在测量较小范围内其电阻和温度变化的关系式如下:R=Ro(1+αT)其中α=0.00392, Ro为100Ω(在0℃的电阻值),T为华氏温度,因此铂做成的电阻式温度传感器,又称为PT100。
PT100温度传感器的测量范围广:-200℃~+600℃,偏差小,响应时间短,还具有抗振动、稳定性好、准确度高、耐高压等优点,其得到了广泛的应用,本设计即采用PT100作为温度传感器。
主要技术指标:1. 测温范围:-200~600摄氏度;2. 测温精度:0.5摄氏度;3. 稳定性:0.5摄氏度Pt100是电阻式温度传感器,测温的本质其实是测量传感器的电阻,通常是将电阻的变化转换成电压或电流等模拟信号,然后再将模拟信号转换成数字信号,再由处理器换算出相应温度。
设计方案:采用惠斯顿电桥,电桥的四个电阻中三个是恒定的,另一个用Pt100 热电阻,当Pt100电阻值变化时,测试端产生一个电势差,由此电势差换算出温度。
测温原理:电路采用TL431和电位器VR1调节产生4.096V的参考电源;采用R1、R2、VR2、Pt100构成测量电桥(其中R1=R2,VR2为100Ω精密电阻),当Pt100的电阻值和VR2的电阻值不相等时,电桥输出一个mV级的压差信号,这个压差信号经过运放LM324放大后输出期望大小的电压信号,该信号可直接连AD转换芯片。
基于PT100温度测量系统设计DSP实现
基于PT100温度测量系统设计DSP实现基于PT100温度测量系统设计1绪论1.1设计⽬的1 通过课程设计加深对DSP软件有关知识的学习与应⽤。
2 学习汇编语⾔并能熟练掌握与应⽤3 熟练DSP与电路的结合分析1.2设计任务1完成PT100温度转换电路设计2使⽤TMS320C5509数据采集3 计算出温度2 设计原理2.1 PT100传感器介绍温度传感器从使⽤的⾓度⼤致可分为接触式和⾮接触式两⼤类,前者是让温度传感器直接与待测物体接触,⽽后者是使温度传感器与待测物体离开⼀定的距离,检测从待测物体放射出的红外线,达到测温的⽬的。
在接触式和⾮接触式两⼤类温度传感器中,相⽐运⽤多的是接触式传感器,⾮接触式传感器⼀般在⽐较特殊的场合才使⽤,⽬前得到⼴泛使⽤的接触式温度传感器主要有热电式传感器,其中将温度变化转换为电阻变化的称为热电阻传感器,将温度变化转换为热电势变化的称为热电偶传感器。
热电阻传感器可分为⾦属热电阻式和半导体热电阻式两⼤类,前者简称热电阻,后者简称热敏电阻。
常⽤的热电阻材料有铂、铜、镍、铁等,它具有⾼温度系数、⾼电阻率、化学、物理性能稳定、良好的线性输出特性等,常⽤的热电阻如PT100、PT1000等。
热电偶是⽬前接触式测温中应⽤也⼗分⼴泛的热电式传感器,它具有结构简单、制造⽅便、测温范围宽、热惯性⼩、准确度⾼、输出信号便于远传等优点。
常⽤的热电偶材料有铂铑-铂、铱铑-铱、镍铁-镍铜、铜-康铜等,各种不同材料的热电偶使⽤在不同的测温范围场合。
热电偶的使⽤误差主要来⾃于分度误差、延伸导线误差、动态误差以及使⽤的仪表误差等。
⾮接触式温度传感器主要是被测物体通过热辐射能量来反映物体温度的⾼低,这种测温⽅法可避免与⾼温被测体接触,测温不破坏温度场,测温范围宽,精度⾼,反应速度快,既可测近距离⼩⽬标的温度,⼜可测远距离⼤⾯积⽬标的温度。
⽬前运⽤受限的主要原因⼀是价格相对较贵,⼆是⾮接触式温度传感器的输出同样存在⾮线性的问题,⽽且其输出受与被测量物体的距离、环境温度等多种其它因素的影响。
PT100温度检测系统思路及软硬件
PT100测温原理框图如图1所示。
图1 系统设计框图系统是基于PT100的温度检测设计,PT100模拟温度传感器对环境温度进行采集,然后把采集的数据经A/D转换后传给单片机,单片机接收数据并处理后,在液晶屏上显示测量的温度值。
1、系统主要硬件设计1.1电源电路系统采用3节5号干电池串联,电压接近4.5V,刚好满足设计的电源电压要求。
电源处理芯片的选择方面考虑的重点是效率高、工作电压低、体积小、价格便宜,经过仔细对比后,选择了TL431作为本系统的电源处理芯片。
TL431是一个有良好的热稳定性能的三端可调分流基准源。
它的输出电压用两个电阻就可以任意的设置葱Verf2.5~36V范围内的任何值。
在本设计中用作桥式测温电路的参考电压。
在很多应用中用它代替稳压二极管,例如,数字电压表,运放电路,可调压电源,开关电源等。
在TL431与电源引脚间加上一个100Ω电阻用于限流,地引脚端直接接地,电压输出2.5V接到桥式测温电路作为基准电压,注意基准电压必须稳定,否则会影响测温的准确性。
LM1117是具有稳定的电压输出的校准器,可以输出稳定的1.2V,1.5V,1.8V,2.5V,2.85V,3.3V,5V等电压。
设计中用LM1117稳压至3.3V为A /D模数转换器、放大器提供稳定的电压保证。
在电源和地引脚之间加上电容C4和C5用于去耦滤波。
Intersil公司生产的ICL7660是提供双电压的COMS集成芯片,它在提供正负电压方面有独特的优势。
ICL7660可以提供+1.5~+10V和-1.5~-10V的正负电压。
ICL7660正输出电压Vout+和负输出电压分别接入INA126电源的正负极。
电源模块的电路原理如图2所示。
图2 电源电路图图2中VCC5是电源电压,经过LM1117芯片输出为3.3V,为INA126(仪表放大器)、ADS7816和ICL7660供电。
经过TL431输出2.490V的电压,为桥式放大电路和ADS7816提供稳定的基准电压。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
温度监测的设计电信科技08-2 韦一、课程设计内容(1)实时检测温度—50°C—180°C环境温度范围:室温—20°C—60°C;测量精度:2.5%±1字;(2)用LCD1602显示其温度(小数点保留两位);(3)将温度上传到上位PC机显示。
二、系统方案2.1基本原理根据检测温度范围的要求,本设计采用铂热敏电阻PT100作为温度传感器,温度测量范围在-200~850之内。
热敏电阻的电阻值随着环境温度的变化而变化,其电阻值与环境温度有某种关系。
本设计使用的电阻——温度的关系如下:在负温区(-200~0°C)范围:Rt=R0(1+At+Bt^2+C(t-100)T^2)在正温区(0~850°C)范围内:Rt=R0(1+At+Bt^2)式中:Rt——温度t时刻铂热敏电阻的电阻值;R0——温度0°C的铂热敏电阻的电阻值;t——介质的温度;A、B、C——有关的常数,其值如下:A=3.90502*10^-3B= -5.80195*e-7C=-4.2735*e-12铂热敏电阻的允许误差如下:电阻——温度的关系如下表:利用电桥平衡原理,已知另外三个电阻的阻值和电桥的供电电压,再测出电的桥两端的电压差,就可计算出连入电桥中的铂热敏电阻的电阻值。
电桥两端电压差通过放大电路后,经过A/D转换,利用单片机读取A/D的数据,便可得到放大后的电压值,通过放大电路输入和输出的关系,可得到电桥两端的电压差,这样就可计算出铂热敏电阻的电阻值。
通过铂热敏电阻阻值与环境温度有某种关系,可将电阻值转换为温度,这一系列的计算,可由单片机完成,最后将温度值送到显示电路显示,或者作为后期的数据处理。
2.2原理框图如图2.2所示:含有铂热敏电阻PT100的电桥放大电路A/D转换器单片机显示部分送到PC机图2.2三、硬件电路原理图(1)电桥和放大电路部分如图3.1所示,U7是TL431稳压管,为电桥提供稳定的电压,供电电压为+5V,由直流激励源U7(k)提供。
电阻R3、R2、R4、RV和热敏电阻TR2构成电桥,RV 为电位器,主要用于校正温度,各电阻的取值如图3.1所示。
热敏电阻TR2的接法由二线制、三线制、四线制,三线制和四线制常用于远程测量,可有效地减小图3.1甚至消除导线电阻带来的误差,本次设计不做实物,所以采用二线制接法。
U6为集成运放,本设计采用OP275,OP275是高精度集成运放,可有效的减小放大误差,其供电电压最大可达正负22V,而电阻R6、R7决定了放大电路的放大倍数。
由电阻分压知,VRT2=5*R3/(R3+ RT2)=5* R3/(1300+ RT2) (1)由虚短知,U6A第2、3脚电压和VR4电压相等,V2=V3=VTR2 (2)由虚断知,U6B第6脚没有电流流过,则流过R6和R7上的电流相等(V6-VR6)/R6=(V7-VR7)/R7 (3)由虚断知,U6B第5脚没有电流流过,V5=VR4 (4)电阻R4两端电压VR4=5*R2/(R4+R2+RV1)=5*170/1470 (5)由虚短知,U6B第3脚和第2脚电压相等,V1=V2 (6)由(1)(2)(3)(4)(5)(6)得,(V7-VR7)/100=(VR7-V1)/3.3最后化简得:RT2=1300(5*170/1470-3.3(V7-5*170/1470)/100)/(5+3.3(V7-5*170/1470)/100 )-5*170/1470) (7)可见测测出R7,就可得出RT2的值。
(2)A/D转换器A/D的选择:由于测量精度为2.5%±1字,检测温度范围是—50°C—180°C,则(180+50)/0.025=9200,而2^12=4096,2^14=16384,所以应选择14位以上的A/D可满足精度要求。
如图3.2所示,这部分是A/D芯片与周围的元件。
由于proteus仿真库找不到14位的A/D,所以选择16位的A/D芯片ADS7825。
找到ADS7825的使用手册,可知ADS7825有两种工作模式,即平行和串行模式(见附录B:ADS7825部分使用手册),为了节约单片机的I/O口,本次设计采用串行模式,串行模式如图3.2所示的接法,图3.2(3)单片机及显示部分如图3.3所示,此部分包含了时钟电路、复位电路和LCD显示电路,时钟源采用12MHz的晶振,显示电路采用LCD1602。
图3.3(4)发送数据部分及程序下载接口如图3.4所示,通过串口与PC机进行数据传输,串口连接所使用的芯片是MAX232。
程序下载接口采用ISP专用下载接口,使用专用下载器对芯片进行烧录。
图3.5(5)电源部分电源部分采用正负15V、5V、10V的稳压芯片,正负15V用于供给运放芯片,5V用于供给单片机和电桥,而10V作为AD芯片的参考电压,使用的稳压芯片有LM7805、LM7810、LM7815、LM7915. 四、软件设计(1)流程图①LCD 写命令流程图如图4.1所示: ②LCD 数据写入流程图如图4.2所示:图4.1 图4.2③LCD 清屏流程图如图4.3所示: ④LCD 单字符写入流程图如图4.4所示:图4.3图4.4⑤LCD 字符串写入流程图如图4.5所示:图4.5⑥LCD 初始化流程图如图4.6所示: ⑦ADS7825初始化流程图如图4.7所示:图4.7 ⑧T0中断服务程序流程图如图4.8所示:图4.6 图4.8 ⑨读ADS7825流程图如图4.9所示: ⑩电压转换为温度流程图如图4.10所示:图4.10PC 机流程图如图4.11所示:图4.9 图4.11⑿显示函数流程图如图4.12所示: ⒀主函数流程图如图4.13所示:图4.12 图4.13(2)程序源代码见附录A 。
(3)程序说明①LCD程序:LCD1602是常用的显示模块,其使用方法和程序在这里就不多说明。
②ADS7825的读取ADS7825的数据读取程序设计主要的根据芯片手册上提供的相关内容(更多详细信息请参考ADS7825芯片手册)编写的,具体程序代码见附录A程序代码中的read_ad()函数,只要程序符合相关芯片的时序要求(ADS7825相关时序图见附录B),就能正确的读取数据。
③相关公式利用电压计算铂热敏电阻的电阻值的公式在硬件原理图说明里已经给出。
由于供给A/D转换器的参考电压为10V,其转换关系如下:实际电压值=读取数据*10/65535热敏电阻电阻值——温度公式在系统方案中给出,由于温度与电阻值是平方关系,需要解二次方程才能得到温度值,为了避免计算平方根,不能用求根公式,用换元法虽然可行,但算法比较复杂,相比之下,迭代法的算法比较简单,虽然计算大,却有很好的效果。
为了避免大量计算,减轻CPU的负担,采用牛顿迭代法,迭代公式如下:X0=x-f(x)/df(x)式中X0为所求的温度值,x为温度的初始值,f(x)为温度的函数,df(x)为函数f(x)的导函数。
如图4-15所示,在PC机上运行迭代算法,r为扩大100倍后电阻测量值,x 的初始值取50,温度为180度时最大迭代次数也只有4次。
详细的算法代码见附录A中程序代码的iteration和voltage_to_temperature函数。
更多说明见附录A中程序代码的注释。
五、系统调试与仿真系统调试与仿真,采用软件仿真工具——proteus。
图4-15确保系统能正常显示温度值后,把热敏电阻的温度调到0度,然后在LCD显示热敏电阻的电阻值,理论上对应的电阻值应是100Ω,此时显示的不是100Ω,调节电位器RV1和稍微改动R2的电阻值,使显示的电阻值为100Ω。
由热敏电阻电阻值与温度的关系知,温度大于0度时,Rt=R0(1+At+Bt^2)使用时,将系数A和B扩大100倍。
经测量,温度测量值和标准值如下表:(部分)表5.1温度测量值(°C) 温度标准值(°C) 绝对误差相对误差-49.91 -50 0.09 1.80e-3-42.03 -42.11 0.08 1.90e-3-36.93 -37.01 0.08 2.16e-3从40度以上有些温度值绝对误差超过0.1,我们要求绝对误差小于0.1,故使用软件修正的方法进行修正。
这里通简单的修改热敏电阻电阻值与温度的关系公式中A的值,对40度以上的温度修正,修正后的40度以上温度测量值和标准值如下表:(部分,A=3.90822e-3)一下是测量一些结果图T=180.01度时,显示如图5.1所示。
图5.1 图5.2图5.3图5.4(上)图5.5(下)(40C以上A=38.97352)图5.6(40C以上A=38.97352)由于本次设计未做实物,故不做更精细的修正,最终采用:A1=39.0502 (40度一下)A2=38.97352(40度以上)六、结论七、总结通过对单片机原理课程的学习,对本次设计有很大的帮助,而通过本次设计,让我们牢牢地掌握单片机的应用。
不仅如此,我们还学到了温度测量的基本原理、软硬件之间的兼容、系统的调试和仿真方法、EDA工具的使用和A/D转换器ADS7825芯片的使用等。
遗憾的是本次设计未做实物,系统的调试甚至系统的方案还只是纸上谈兵,而实际当中会和理论上有很大的区别。
本次设计只是用EDA 工具仿真,虽然到比较满意的结果,但这成为本次设计最大的缺点。
从仿真结果来看,本次设计的结果与理论上有较好的对应,但本次设计也忽略了许多因素:1.不计铂热敏电阻的线电阻,不适于远程温度测量;2.电桥电路部分只通过一个电位器调整,虽然还有软件补偿,但这是远远不够的,实际上还采用合适的补偿电路,放大电路主要采用运算放大器,放大倍数会有一定的误差,因此也要加补偿电路;3.此次设计不考虑系统的功耗和成本,所选的元件很随意。
不太符合实际;4.从软件设计上看,对温度的校正校简单,若采用PID算法,会得到很好的效果;5.实际测量时,数据存在抖动,而硬件和程序中都没有相关的处理。
总地来说,本次设计展示了用模拟温度传感器来测量温度及显示,其精度完全可与数字温度传感器相媲美,而用模拟温度传感器的系统,温度校正可以通过硬件校正和软件校正,对于采用模拟温度传感器的系统,只能用软件校正的方法。
另外选择高精度的A/D转换器,可得到更高精度的温度值。
附录A:程序源代码#include <reg52.h>#include <intrins.h>#define uint unsigned int#define uchar unsigned char#define ulong unsigned long//--------------------------------------------/*定义ADC控制端口*/sbit RC = P2^3;sbit CS = P2^4;sbit BUSY = P2^5;sbit SYNC = P2^6;sbit CLK = P1^3;sbit SDATA = P1^2;//---------------------------------------------/*定义LCD控制端口*/sbit lcd_rs_port = P2^0;sbit lcd_rw_port = P2^1;sbit lcd_en_port = P2^2;#define lcd_data_port P0//---------------------------------------------/*公式数据定义*/#define R2 1300.0#define R3 1300.0#define R4 170.0 //把R4和RV1和并为R4#define R6 3.3#define R7 100.0#define bridge_voltage 5.0//---------------------------------------------float A; //电阻——温度公式中的系数A //---------------------------------------------/*延时1us函数*/void delay_us(uint n){if (n == 0){return ;}while (--n);}/*延时1ms函数*/void delay_ms(uchar i){uchar a, b;for (a = 1; a < i; a++){for (b = 1; b; b++){ ; }}}//-----------------------------------------------------------/*显示屏命令写入函数*/void LCD_write_com(uchar com){lcd_rs_port=0;lcd_rw_port=0;lcd_en_port=1;lcd_data_port = com;delay_us(5);lcd_en_port=0;}//----------------------------------------------------------/*显示屏数据写入函数*/void LCD_write_data(uchar lcd_data){lcd_rs_port=1;lcd_rw_port=0;lcd_en_port=1;lcd_data_port = lcd_data;delay_us(5);lcd_en_port=0;}//------------------------------------------------------------/*显示屏清空显示*/void LCD_clear(void){LCD_write_com(0x01);delay_ms(5);}//------------------------------------------------------------/*显示屏字符串写入函数*/void LCD_write_str(uchar x,uchar y,uchar *s){if (y == 0){LCD_write_com(0x80 + x); //写第一行}else{LCD_write_com(0xC0 + x); //写第二行}while (*s){LCD_write_data( *s);s ++;}}//------------------------------------------------------------/*显示屏单字符写入函数*/void LCD_write_char(uchar x,uchar y,uchar lcd_data){if (y == 0){LCD_write_com(0x80 + x);}else{LCD_write_com(0xC0 + x);}LCD_write_data(lcd_data);}//-------------------------------------------------------------/*显示屏初始化函数*/void LCD_init(void){delay_us(100);LCD_write_com(0x38); //显示模式设置*LCD_write_com(0x08); //显示关闭LCD_write_com(0x01); //显示清屏LCD_write_com(0x06); //显示光标移动设置delay_ms(5);LCD_write_com(0x0C); //显示开及光标设置}//---------------------------------------------------------------/*ADS7825初始化*/void ad_init(){TMOD = 0x22; //读AD数据前利用T0产生AD时钟TH0 = 0xf7; //频率约为100KHz-300KHzTL0 = 0xf7;EA = 1;ET0 = 1;TR0 = 1;CS = 1;RC = 0;delay_us(30);CS = 0; //启动转换delay_us(10);CS = 1;}//--------------------------------------------------------------/*读AD数据*/long read_ad(){uchar i,j=1;long int ad_data;ad_init();RC = 0;if(BUSY==1) //判断数据转换是否完成{TR0 = 0; //关闭T0,往后的时钟由程序控制CLK = 0;delay_us(1);CS = 0;RC = 1;delay_us(1);CLK = 1;delay_us(1);CLK = 0;delay_us(1);CLK = 1;delay_us(5);while(j) //等待数据同步信号{if(SYNC==0){ad_data = 0;for(i=1;i<=18;i++) //16位数据在低16位{ad_data = ad_data<<1;CLK = 0;if(SDATA==1){ad_data=ad_data|0x0001;} //读数据delay_us(1);CLK = 1;}j=0;}}}//EA = 1;CS = 1;CLK = 1;return ad_data;}//----------------------------------------------------------------------/*AD数据转换为电压值*/ulong voltage_conversion(){float voltage;long Vo;Vo = read_ad(); //读ADvoltage = 10000.0*Vo/65535.0;return voltage;}//---------------------------------------------------------------/*牛顿迭代公式*/float iteration(float x,float Rx){double x1,f,df;f = 10000-Rx+x*A-x*x*0.0058; //温度的函数,系数扩大100倍df = -2*x*0.0058+A; //函数f的导函数x1=x-f/df; //牛顿迭代公式return(x1);}//----------------------------------------------------------------/*电压转换为温度*/ulong voltage_to_temperature(){double x0=50.0,e=0.001,d; //温度初值为50,迭代精度为0.001float Rx,temp,v,Rx_numerator,Rx_denominator;v = voltage_conversion(); //取电压值Rx_numerator=100.0*R3*(1000.0*bridge_voltage*R4/(R2+R4)-1.0*R6*(v-1000.0*bridge_voltage*R4/(R2+R4))/R 7); //系统原理中公式(7)的分子(扩大100倍)Rx_denominator=1000.0*bridge_voltage+R6*(v-1000.0*bridge_voltage*R4/(R2+R4))/R7-1000.0*bridge_voltage*R4/(R2+R4); //系统原理中公式(7)的分母Rx = 1.0*Rx_numerator/Rx_denominator; //热敏电阻电阻值if(Rx>=8036&&Rx<=11549)A = 39.0502; //-50—40度,A的取值if(Rx>11549&&Rx<=16828)A = 38.97352; //40—180度,A的取值if(Rx>=8036&&Rx<=16828){do{temp=iteration(x0,Rx); //测量范围内计算温度值if(x0>temp)d=x0-temp;else{d=temp-x0;}x0=temp;}while(d>=e); //满足精度时退出循环temp=100.0*temp+5000; //把温度范围变为0—23000return temp;}elsetemp=24000;return temp; //温度超出范围}//-----------------------------------------------------------/*串口初始化*/void s_init(){TMOD = 0x22;TL1 = 0xf3;TH1 = 0xf3;TR1 = 1;SCON = 0x40;TI = 0;}//-----------------------------------------------------------/*发送一个数据*/void send_data(uchar sda){TI=0;SBUF = sda;while(!TI);TI=0;}//-----------------------------------------------------------/*发送字符串*/void send_str(uchar *str){while(*str!='\0'){send_data(*str);str++;}}//--------------------------------------------------void show_and_send(){long i;uchar da1,da2,da3,da4,da5,j;i = voltage_to_temperature(); //取温度值LCD_clear();if((i<=5000)&&(i>=0)){i = 5000-i;j = 1;} //判断是否为负值else if((i>5000)&&(i<=23500)){i = i-5000;j = 0;} //判断是否为正值else if(i==24000) //判断是否超出范围{ j=2;LCD_write_str(0,1,"More than range!"); //显示超出范围send_str("The current temperature more than range!");send_str("\r\n");}da1 = '0'+i/10000; //提取各位数的数值da2 = '0'+i%10000/1000;da3 = '0'+i%10000%1000/100;da4 = '0'+i%10000%1000%100/10;da5 = '0'+i%10000%1000%100%10;LCD_write_str(2,0,"Temperature:");if(j==1) //显示负温度值{LCD_write_char(4,1,'-');LCD_write_char(5,1,da1);LCD_write_char(6,1,da2);LCD_write_char(7,1,da3);LCD_write_char(8,1,'.');LCD_write_char(9,1,da4);LCD_write_char(10,1,da5);send_str("The current temperature is:"); //送数据到PC机send_str("\r\n");send_data('-');send_data(da1);send_data(da2);send_data(da3);send_data('.');send_data(da4);send_data(da5);send_str("\r\n");}else if(j==0) //显示正温度值{LCD_write_char(5,1,da1);LCD_write_char(6,1,da2);LCD_write_char(7,1,da3);LCD_write_char(8,1,'.');LCD_write_char(9,1,da4);LCD_write_char(10,1,da5);send_str("The current temperature is:");send_str("\r\n");send_data(da1);send_data(da2);send_data(da3);send_data('.');send_data(da4);send_data(da5);send_str("\r\n");}delay_ms(250);}//--------------------------------------------------/*主函数*/void main(void){LCD_init(); //LCD初始化s_init(); //串口通信初始化while (1){show_and_send(); //显示和发送数据}}//---------------------------------------------------/* 定时器中断子程序*/void Timer1(void) interrupt 1 using 1{CLK = ~CLK; //为AD提供时钟}附录B:ADS7825部分使用手册(续附录B)。