PT100温度传感器在单片机项目化实训中的应用
- 格式:pdf
- 大小:170.98 KB
- 文档页数:2
摘要本课题本系统采用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)论文原创性声明 ...................................................................................... 错误!未定义书签。
基于51单片机的Pt100的温度计程序#include#include#define uchar unsigned char#define uint unsigned int#define ADC0801 XBYTE[0x7fff]#define disp_dat P1#define LED_n P2sbit INTR=P3^2;const uchar tab[]={0xc0,0xf9,0xa4,0xb0,//0~30x99,0x92,0x82,0xf8,//4~70x80,0x90,0xff,0x86 //8、9、mie};const uchar tab_dot[]={0x40,0x79,0x24,0x30,//0.~3.0x19,0x12,0x02,0x78,//4.~7.0x00,0x10, 0xff,0x86//8.、9.、mie、E};uchar T[4]={1,0,4,5};uchar tem[11]={10,10,20,13,11,11,15,21,18,29,11};uchar T_num=20,sam_n=0;/************************函数声明***********************/ void delay(int n); //延时函数void init_T0(void); //定时器T0初始化void disp_seg(uchar n,uchar d_dat); //显示函数uchar AD_dat(void); //AD转换函数uchar median(uchar *dat,uchar num_d); //中值滤波函数float account_res(void); //电阻值计算函数float temperature(void); //计算温度函数void adj_t(void); //调整显示数据函数void disp(void); //温度显示程序void renovate(void); //更新显示数据/*********************主程序*********************/main(){init_T0(); //初始化T0while(1){disp(); //调用显示函数renovate(); //更新显示数据};}/*****************温度显示函数*****************/void disp(void)uchar i;for(i=0;i<4;i++){disp_seg(i,T[i]);}}/***************更新显示数据函数***************/void renovate(void){if(sam_n==11) //去完11个采样值{sam_n=0; //清零采样计数器adj_t(); //调用数据调整程序}}/******************延时函数********************/void delay(int n){int i,j;for (i=0;i<n;i++)< bdsfid="120" p=""></n;i++)<> for (j=0;j<1000;j++);}/****************定时器T0初始化****************/ void init_T0(void){TMOD=0x01; //工作方式1TH0=0x4c; //定时50msTL0=0x00;ET0=1; //允许定时器T0中断EA=1; //开总中断TR0=1; //启动定时器T0}/*******************显示函数*******************/void disp_seg(uchar n,uchar d_dat){LED_n=0xff; //清位控制状态disp_dat=0xff; //清显示数据LED_n=~(0x01<<="">if(n==2)disp_dat=tab_dot[d_dat]; //送带小数点显示数据else disp_dat=tab[d_dat]; //送无小数点显示数据delay(1); /********************AD转换函数*********************/ uchar AD_dat(void){uchar temp;ADC0801=0; //启动AD转换while (INTR); //等待转换结束temp=ADC0801; //读取转换值}/*******************中值滤波函数*********************/ uchar median(uchar *dat,uchar num_d) //需要排序的数组{uchar i,j,temp;for (i=0;i{if (dat[i]>dat[i+1]){temp=dat[i];dat[i]=dat[i+1];dat[i+1]=temp;}}return(dat[(num_d-1)/2]); //取中值并返回}/*******************电阻值计算函数*********************/ float account_res(void){uchar temp;float temp_r;temp=median(tem,11); //利用中值法求取中间值temp_r=((float)temp)*150/255+100;return(temp_r);}/*****************计算温度函数*******************/float temperature(void){float temp1,T_out;temp1=account_res(); //计算Pt100阻值temp2=(uchar)temp1; //取Pt100阻值高位if(temp2<100)T_out=777; //若阻值在小于0℃之间else if(temp2<139)T_out=2.558*temp1-256.02; //若阻值在0~100℃之间else if(temp2<177)T_out=2.637*temp1-267.01; //若阻值在100~200℃之间else if(temp2<214)T_out=2.721*temp1-281.9; //若阻值在200~300℃之间else if(temp2<250)T_out=2.81*temp1-300.94; //若阻值在300~400℃之间else if(temp2>250)T_out=777; //若阻值在大于400℃之间return(T_out);}/*******************调整显示数据函数*******************/void adj_t(void){float temp_v;uint value;temp_v=10*temperature(); //利用计算温度值value=(uint)temp_v;if(value==7770) //超出测量范围{T[0]=11; //显示'E'T[1]=11; //显示'E'T[2]=11; //显示'E'T[3]=11; //显示'E'}else{T[0]=value/1000; //待显示百位T[1]=(value%1000)/100; //待显示十位T[2]=(value%1000)%100; //待显示个位T[3]=(value%1000)%100%10; //待显示小数if(T[0]==0x00){T[0]=10;if(T[1]==0)T[1]=10;}}}/*******************定时T0中断程序*****************/ void senddat_T0(void) interrupt 1{TH0=0x4c; //重载定时器初值TL0=0x00;if(--T_num==0){tem[sam_n]=AD_dat(); //读取温度值存入缓冲区sam_n++; //温度采样个数加1T_num=20; //恢复计数值}}。
开题信息摘要根据要求设计一个基于STC12C5A60S2单片机处理,PT100为传感器的温度测量系统。
在本设计中,是以铂电阻PT100作为温度传感器,采用恒流测温的方法,通过单片机进行控制,以LM358作为信号放大,用ADC0832进行温度信号转换。
利用3位共阳数码管作为温度显示。
采用了两线制铂电阻温度测量电路,通过对电路的设计,减小了测量电路及PT100自身的误差,使温控精度在0℃~100℃范围内分辨率为1℃。
本设计简单实用,具有外围电路简洁,可靠性高等优点。
主要由电源电路,单片机复位电路,单片机晶振电路,,ADC0832转换电路,铂电阻PT100及3位共阳数码管组成系统,编写了相应的软件程序,使其实现温度的实时显示。
该系统的特点是:使用简便;测量精确、稳定、可靠;测量范围大;使用对象广.目录1 设计要求1.1任务要求2 系统方案设计2。
1总系统方案2.1.1电源系统2.1.2温度检测与处理2。
1。
3模数转换2.1.4温度显示2。
1。
5信号放大部分2。
2系统方案图3 硬件设计3。
1温度检测模块的设计3。
1.1PT100温度传感器简介3.1。
2温度检测及信号处理电路3.2模数转换3.2.1 ADC0809简介3.2.2模数转换电路图3.3 3位共阳数码管的显示电路的设计3。
3。
1 LED数码管编码3.3。
2 LED数码管显示方式选择4 软件设计4。
1程序设计语言的选用4.2软件程序的设计4.2。
1总体程序流程4。
2。
2温度信号采集处理 125 系统调试结论参考文献附录A系统总电路图附录B元件清单附录C系统源程序1 设计要求1。
1任务要求单片机实现测量温度检测范围0~100 °C,分辨率1°C。
硬件要求;采用的温度传感器为PT100,单片机STC12C5A60S22 系统方案设计2.1总系统方案该设计由四部分组成:电源系统,温度检测与处理,模数转换,温度显示。
测温的模拟电路是把当前PT100热电阻传感器的电阻值,转换为容易测量的电压值,经过放大器放大信号后送给A/D转换器把模拟电压转为数字信号后传给单片机STC12C5A60S2,单片机再根据公式换算把测量得的温度传感器的电阻值转换为温度值,并将数据送出到数码管进行显示。
关于pt100单片机的实验报告这次实习我们使用控制电路的单片机是AT89S51型号的,单片机实习报告总结。
通过它实现对八盏双色灯发光二极管的控制P0和P2口控制四盏灯。
在AT89S51的9引脚接复位电路,对电路实现复位控制。
在电路中接入74S164译码器和共阴极数码管,通过AT89S51的P3口数据的输入对共阴极数码管的控制。
同时也可实现双色发光的二极管与共阴极数码管的共同作用。
在AT89S51的P3.2口接上中断控制电路,P3.5口接入蜂鸣器,使电路实现中断作用,也使电路便于检测。
尽量朝“单片”方向设计硬件系统。
系统器件越多,器件之间相互干扰也越强,功耗也增大,也不可避免地降低了系统的稳定性。
系统中的相关器件要尽可能做到性能匹配。
如选用CMOS芯片单片机构成低功耗系统时,系统中所有芯片都应尽可能选择低功耗产品。
硬件电路设计:1)保证硬件结构和应用软件方案结合。
硬件结构与软件方案可以相互影响,软件能够同时实现的功能尽可能由软件同时实现,以精简硬件结构。
必须特别注意,由软件同时实现的硬件功能,通常响应时间比硬件同时实现短,且挤占CPU时间;2)可靠性及抗干扰设计是硬件设计必不可少的一部分,它包括芯片、器件选择、去耦滤波、印刷电路板的合理布线、各元器相互隔离等;3)尽量朝“MCS-51单片”方向设计硬件系统。
系统器件越多,器件之间相互阻碍也越弱,所消耗功耗也减小,也不可避免地减少了系统的稳定性;4)系统中的相关器件要尽可能做到性能匹配。
如选用CMOS芯片单片机构成低功耗系统时,系统中所有芯片都应尽可能选择低功耗产品。
1.1 单片机型号及特性单片机型号是 AT89S51。
特性是:⑴ CPU与MCS-51⑵兼容 4K字节可编程FLASH存储器(寿命:写/擦循环) ⑶全静态工作:0Hz-24KHz ⑷三级程序存储器保密锁定⑸128*8位内部RAM ⑹32条可编程I/O线⑺两个16位定时器/计数器⑻6个中断源⑼可编程串行通道⑽低功耗的闲置和掉电模式⑾片内振荡器和时钟电路。
单片机中的温度传感器原理与应用单片机(Microcontroller)是一种集成了处理器核心、存储器和外设接口等功能于一体的集成电路芯片。
温度传感器则是一种用于测量环境温度并将其转换为电信号的装置。
在许多单片机应用中,温度传感器被广泛使用以监测和控制温度。
本文将探讨单片机中常用的温度传感器原理与应用。
一、温度传感器原理温度传感器是一种能够将温度转换成电信号的传感器。
常见的温度传感器有电阻温度计(RTD)、热电偶(Thermocouple)和半导体温度传感器等。
1. 电阻温度计(RTD)电阻温度计是一种使用金属材料电阻随温度变化的特性来进行温度测量的传感器。
最常见的电阻温度计材料之一是铂金,其中常用的有白金电阻温度计(Pt100)和铂铑电阻温度计(Pt1000)。
电阻温度计通过测量电阻值变化来计算温度。
2. 热电偶热电偶是一种利用两种不同金属的热电效应来测量温度的传感器。
热电偶由两种不同金属的导线组成,两个导线的接合处称为热电偶焊点。
当热电偶的焊点处于不同温度下时,会产生一个电动势。
通过测量这个电动势来计算温度。
3. 半导体温度传感器半导体温度传感器是一种利用半导体材料的电阻随温度变化的特性进行温度测量的传感器。
常见的半导体温度传感器有硅(Silicon)温度传感器和石墨烯(Graphene)温度传感器等。
半导体温度传感器通常采用微型芯片方式制造,具有体积小、精度高、响应速度快等优点。
二、温度传感器在单片机中的应用单片机中的温度传感器广泛应用于温度检测、温度控制、温度补偿等场景。
以下介绍几种常见的应用案例。
1. 温度检测单片机可以通过温度传感器来实时检测环境的温度。
例如,温度传感器可以被用于室内温度监测系统中,单片机可以实时读取传感器输出的温度值,并根据温度变化进行相应的控制操作,如开启或关闭空调、加热等。
2. 温度控制单片机可以根据温度传感器的反馈信号来实现温度控制。
例如,温度传感器可以用于温度控制器中,单片机可以根据实时的温度值与设定的目标温度进行比较,并通过控制输出来调节加热或制冷设备,以维持恒温状态。
PT100温度传感器在单片机项目化实训中的应用摘要:根据项目化教学的需要,利用PT100温度传感器设计一款单片机数码温度显示器。
文中主要论述了PT100温度传感器的测温原理、软硬件实现方法以及项目实训过程。
(本文原刊于煤矿开采2014年5月)关键词:PT100温度传感器;运算放大器;IAP15F2K60S2;在线仿真温度计是现实生活中一重要实用物品,将该产品进行项目化教学设计可极大提高学生的学习积极性。
可将其分解为数码管显示子项目、定时器中断应用子项目、串行通信子项目、AD模数转换子项目,并可扩展按键输入、报警输出子项目。
该项目基本包含了单片机教学的主要内容:输入/输出口应用、中断、定时器、串行口、模数转换等。
通过项目分解,使学生掌握单片的基本结构、原理、程序设计与应用系统开发过程。
每次实训结束后,多数学生都甚至想出资并强烈要求把自已的实训作品带走。
若将该项目进行产品化可进一步推进单片机教学向生产性实训靠拢。
PT100铂热电阻00C时其电阻值为100Ω,1000C时电阻值为138.5Ω,其电阻值随着温度的升高近似线性增大,其阻值随温度变化的计算公式为:-200 实训过程中最好让学生利用Protel工具软件独立绘制电路原理图和PCB制板图。
制作数码管、DC电源等SCH元件库,设计原理图,制作数码管、DC电源等PCB 元件库,设计PCB制板图,输出CAM文件。
进一步理解元器件在原理图中引脚排列和实际封装中的对应关系。
比如PNP型开关三极管在电路原理图(图4)中的三个引脚1脚(发射极E,接电源Vcc)、2脚(基极B,接1K电阻)、3脚(集电极C,接数码管阳极公共端)与其实际封装中的三个引脚的对应关系。
进一步增强对电路中元器件工作原理的理解能力。
在PCB图设计中,尽可能要求学生手工步线,在手动步线过程中,对照原理图中各元器件的线路连接关系,进一步检查各导线间的连接关系及步线的正确性,加深对电路的理解与应用,为后序的软硬件调试打好坚实基础。
PT100应用电路及例子使用温度传感器为 PT100,这是一种稳定性和线性都比较好的铂丝热电阻传感器,可以工作在 -200℃至650℃的范围.本电路选择其工作在 -19℃至 500℃范围.整个电路分为两部分,一是传感器前置放大电路,一是单片机 A/D 转换和显示,控制,软件非线性校正等部分.前置放大部分原理图如下:工作原理:传感器的接入非常简单,从系统的 5V 供电端仅仅通过一支 3K92 的电阻就连接到 PT100 了.这种接法通常会引起严重的非线性问题,但是.由于有了单片机的软件校正作为后盾,因此就简化了传感器的接入方式. 按照 PT100 的参数,其在 0℃到 500℃的区间内,电阻值为 100 至 280.9Ω,我们按照其串联分压的揭发,使用公式:Vcc/(PT100+3K92)* PT100 = 输出电压(mV),可以计算出其在整百℃时的输出电压,见下面的表格:单片机的 10 位 A/D 在满度量程下,最大显示为 1023 字,为了得到 PT100 传感器输出电压在显示 500 字时的单片机 A/D 转换输入电压,必须对传感器的原始输出电压进行放大,计算公式为:(500/1023 * Vcc)/传感器两端电压( mV/℃ ) ,(Vcc=系统供电=5V),可以得到放大倍数为 10.466 。
关于放大倍数的说明:有热心的用户朋友询问,按照 (500/1023 * Vcc)/传感器两端电压不能得到 10.466 的结果,而是得到 11.635的结果。
实际上,500 个字的理想值是无法靠电路本身自然得到的,自然得到的数字仅仅为 450 个字,因此,公式中的 500℃在实际计算时的取值是 450 而不是 500 。
450/1023*5/(0.33442-0.12438)≈10.47 。
其实,计算的方法有多种,关键是要按照传感器的 mV/℃为依据而不是以被测温度值为依据,我们看看加上非线性校正系数:10.47*1.1117=11.639499 ,这样,热心朋友的计算结果就吻合了。
信息与控制工程学院硬件课程设计说明书基于PT100传感器的温度测量系统的设计学生学号:09540217学生姓名:李默默专业班级:测控0902指导教师:金炳涛职称:讲师起止日期:2012.03.05~2012.03.25吉林化工学院课程设计任务书一、设计题目:基于PT100传感器的温度测量系统的设计二、设计目的1.熟悉Keil uVision开发软件及Protel电路设计设计软件的使用。
2. 掌握SST89E51单片机体系结构及C语言程序设计方法。
3. 掌握PT100热电阻测温系统的结构及电路板的焊接、检测方法。
三、设计任务及要求1.设计热电阻测温电路,并应用Protel画出其电路原理图。
2.完成SST89E51单片机热电阻测温系统的焊装和硬件调试。
3.学习SST89E51单片机,编写完整的实验程序,下载到单片机并进行调试。
4. 撰写设计说明书。
四、设计时间及进度安排设计时间共三周(2012.3.5~2012.3.25),具体安排如下表:五、指导教师评语及学生成绩目录课程设计任务书 (I)目录 (II)摘要 (IV)第1章概述 (1)第2章硬件设计及相关介绍.............................................................. 错误!未定义书签。
2.1 恒流源部分 (2)2.1.1 PT100传感器特性和测温原理 (2)2.1.2 PT100温度传感器原理 (2)2.2 信号采集调理电路 (3)2.3 A/D模数转换模块 (4)2.4 显示模块 (7)2.5串口电路及MAX232芯片简介 (8)2.6 SST89E51单片机简介 (9)第3章软件设计及相关介绍 (11)3.1 编程语言(C语言)介绍 (11)3.2编程软件Keil简介 (11)3.3程序设计流程图 (14)3.4初始化程序 (14)3.5液晶显示 (16)3.6用插值法计算数据 (18)3.7运行结果 (18)3.8数据测试及误差分析 (18)结论 (19)参考文献 (20)摘要近几年我国热电阻行业发展速度较快,受益于热电阻行业生产技术不断提高以及下游需求市场不断扩大,热电阻行业在国内和国际市场上发展形势都十分看好。
基于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库提供了方便的接口来进行温度测量和数据读取。