首页资源分类应用技术测试测量 > 红外温度传感器介绍

红外温度传感器介绍

已有 445005个资源

下载专区

上传者其他资源

文档信息举报收藏

标    签:红外温度传感器

分    享:

文档简介

红外温度传感器原理介绍

文档预览

 自然界一切温度高于绝对零度(-273.15℃)的物体。由于分子的热运动都在不停地向周围空间辐射包括红外波段在内的电磁波。其辐射能量密度与物体本身的温度关系符合普朗克(Plank)定律。红外测温的原理是一样的,都是根据普朗克原理。一般理解红外测量的是物体的温度.其实测的是目标物与传感器或者说是物体与环境温度之间的差值。物体辐射能量的大小直接与该物体的温度有关.具体地说,是与该物体热力学温度的4次方成正比.用公式可表达为: #嵌入式研究网a href=\"http://www.cnemb.com\">http://www.cnemb.comcghdddEKMGfghb5654fmMH     E=δε(T4-T4o) (1) #嵌入式研究网a href=\"http://www.cnemb.com\">http://www.cnemb.comcghdddEKMGfghb5654fmMH   式中,E是辐射出射度.单位是W/m3; #嵌入式研究网a href=\"http://www.cnemb.com\">http://www.cnemb.comcghdddEKMGfghb5654fmMH   δ是斯蒂芬一波尔兹曼常数,5.67x10-8W/(m2·K4); #嵌入式研究网a href=\"http://www.cnemb.com\">http://www.cnemb.comcghdddEKMGfghb5654fmMH   ε是物体的辐射率: #嵌入式研究网a href=\"http://www.cnemb.com\">http://www.cnemb.comcghdddEKMGfghb5654fmMH   T是物体的温度(K); #嵌入式研究网a href=\"http://www.cnemb.com\">http://www.cnemb.comcghdddEKMGfghb5654fmMH   To是物体周围的环境温度(K)。 #嵌入式研究网a href=\"http://www.cnemb.com\">http://www.cnemb.comcghdddEKMGfghb5654fmMH #嵌入式研究网a href=\"http://www.cnemb.com\">http://www.cnemb.comcghdddEKMGfghb5654fmMH     人体主要辐射波长为9 μm—10 μm的红外线.通过对人体自身辐射红外能量的测量便能准确地测定人体表面温度。由于该波长范围内的光线不被空气所吸收,因而也可利用人体辐射的红外能量精确地测量人体表面温度。 #嵌入式研究网a href=\"http://www.cnemb.com\">http://www.cnemb.comcghdddEKMGfghb5654fmMH #嵌入式研究网a href=\"http://www.cnemb.com\">http://www.cnemb.comcghdddEKMGfghb5654fmMH    红外测温仪工作原理:红外测温仪由光学系统,光电探测器,信号大器及信号处理.显示输出等部分组成。光学系统汇聚其视场内的目标红外辐射能量,红外能量聚焦在光电探测器上并转变为相应的电信号,该信号再经换算转变为被测目标的温度值 红外测温模块输出的有效数据就是温度值,只需要把这些数据换算成10进制就可以了 #i nclude #define uchar unsigned char #define uint  unsigned int  /*----------------------------------工程说明-------------------------------------- ; 工程名称: ZyTemp.Uv2 ; 功能描述: 测量环境温度和目标温度,并用键盘控制显示温度值, ;               按K1,显示目标温度 ;               按K2,显示环境温度 ;   IDE环境:   Keil uVision3 V3.31 ; 硬件连接:    VCC-------VCC                ;               P1.0------Data ;               P1.2------Clk ;               P1.4------ACK              ;               GND-------GND ;------------------------------------定义接口------------------------------------*/ sbit TN_Data = P1^0; sbit TN_Clk  = P1^2; sbit TN_ACK  = P1^4; sbit key_1 = P2^2; sbit key_2 = P2^3; /*-----------------------------------变量列表------------------------------------*/ unsigned char code keytab_1[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0x88,0x83,0xc6,0xa1,0x86,0x8e,0x89};//H: 0x89;//L: 0x87;//P: 0x8a;//Q: 0X98; unsigned char code keytab_2[]={0xef,0xdf,0xbf,0x7f}; uchar  ReadData[5],iShow[5]; /*-----------------------------------函数列表------------------------------------*/ void display_1(uchar i,uchar num);                  //定位显示单个字符 void display_2(void);                               //定位显示四个字符 void TN_ReadData(uchar Flag);                       //读数据  void TN_GetData(void);                              //计算数据 /*----------------------------------主程序入口-----------------------------------*/ void main() {     TN_ACK=1;  while(1)  {   if(!key_1)   {    TN_ACK=0;    TN_ReadData(0x4c);      //目标温度的第一个字节为0x4c   }   else if(!key_2)   {    TN_ACK=0;    TN_ReadData(0x66);      //环境温度的第一个字节为0x66   }   if((ReadData[0]==0x4c)&&(ReadData[4]==0x0d)) //每帧的最后一个字节为0x0d   {    TN_GetData();    display_2();   }   else if((ReadData[0]==0x66)&&(ReadData[4]==0x0d)) //每帧的最后一个字节为0x0d   {    TN_GetData();    display_2();   }     } } /*------------------------------定位显示单个字符-------------------------------*/ void display_1(uchar i,uchar num)   {       P0=keytab_1[i];     P2=keytab_2[num]; } /*------------------------------定位显示四个字符-------------------------------*/ void display_2(void) {  uchar kk;  display_1(iShow[3]&0x0f,3);    //显示十位  for(kk=200;kk>0;kk--);         //延时  display_1(iShow[2]&0x0f,2);    //显示个位  for(kk=200;kk>0;kk--);         //延时  display_1(iShow[1]&0x0f,1);    //显示小数第一位  for(kk=200;kk>0;kk--);         //延时  display_1(iShow[0]&0x0f,0);    //显示小数第二位  for(kk=200;kk>0;kk--);         //延时 } /*------------------------------------读数据-------------------------------------*/ void TN_ReadData(uchar Flag)  {  uchar i,j,k;  bit  BitState=0;  for(k=0;k<7;k++)                        //每次发七帧  {    for(j=0;j<5;j++)                       //每帧五个字节   {    for(i=0;i<8;i++)    {     while(TN_Clk);     BitState= TN_Data;     ReadData[j]=ReadData[j]<<1;     ReadData[j]=ReadData[j]|BitState;                 while(!TN_Clk);        }   }      if(ReadData[0]==Flag)  k=8;  }  TN_ACK=1; } /*-----------------------------------计算数据------------------------------------*/ void  TN_GetData(void) {  int Temp;  Temp=(ReadData[1]<<8)|ReadData[2];  Temp = Temp/16 - 273.15;  Temp=Temp*100;                    //温度值乘100,以方便计算小数点后两位  iShow[4]=Temp/10000;              //计算温度值的百位数  iShow[3]=(Temp/1000);             //计算温度值的十位数  iShow[3]=iShow[3]%10;                         iShow[2]=(Temp/100);              //计算温度值的个位数  iShow[2]=iShow[2]%10;  iShow[1]=(Temp/10);               //计算温度值的小数点后第一位数  iShow[1]=iShow[1]%10;  iShow[0]=(Temp);                  //计算温度值的小数点后第二位数                          iShow[0]=iShow[0]%10; } char data BUFFER[1]={0};//定时器计数变量 Sbit PR=P2^2; //定义播放/录音的控制端口 Sbit EOM=P2^2; //定义结束信号 Sbit PD=P2^4; //定义芯片电源开关 Sbit CE=P2^5; //定义片选 Void play(void) { PD=1; //打开芯片电源开关 CE=0; //选中该芯片 PR=1; //开始播放 While (! EOM); //等待播放内容结束信号 Delays(); //延时 PD=0; CE=0; PR=0; } Main() { EA=1;IT=1;ET0=1; //开中断 TMOD=0x01; //T0 方式 1 计时 1 秒 TH0=- 5000/256;TL0=- 5000%256; TR0=1; //开中断 , 启动定时 For(;;); } /* 定时计数器 0 的中断服务子程序 */ Void timer0(void) interrupt 1 using1 { TH0=- 5000/256; //定时器 T0 的高 4 位赋值 TL0=- 5000%256; //定时器 T0 的低 4 位赋值 BUFFER[0]=BUFFER[0]+1; //百分秒进位 If(BUFFER[0]=1000) Play(); //调用播放子程序 }

Top_arrow
回到顶部
EEWORLD下载中心所有资源均来自网友分享,如有侵权,请发送举报邮件到客服邮箱bbs_service@eeworld.com.cn 或通过站内短信息或QQ:273568022联系管理员 高员外,我们会尽快处理。