原创 硬件设计-红外测温TMP006

2015-2-2 08:45 2853 20 24 分类: MCU/ 嵌入式 文集: 硬件设计

    最近搞了一个红外测温,在网上找了很久,用的比较多的芯片是MLX90614,在淘宝上看看其价格还挺贵的-几十块,还有一个比较便宜的芯片是TI的TMP006,这个芯片体积小、价格也便宜,官网上也就1.5美元,关键是可以申请免费样品啊!于是就申请了10个。

    按照TMP006的layout指导,画了一块小板子。如下
20141230091935437.jpg
   样品和板子到了,就焊几块吧!用热风*吹了3块,有两个芯片引脚短路,有个没短路。然后调程序,死活不能正确的读到芯片ID,怀疑焊接不好。后来将芯片中间那块敷铜用刀片给割了,再用热风*吹,吹了两个都可以正确读到芯片的两个ID。
   关于程序,我有一个IO模拟IIC的程序,单片机是用的STM32。TMP006的寄存器还是比较简单,总共就5个,其中2个是制造商ID(5449h)和设备ID(0067h),调试时,能正确读出这两个,那硬件和IIC就没问题了。还有三个是配置寄存器、设备自身温度寄存器、目标传感电压。测温主要就靠自身温度和目标传感电压计算而出的。
20141230093650707.jpg
 
   读出寄存器00和01的值,转换成自身温度Tdie(单位)和目标传感电压Vobj(单位nV),再根据下图公式计算出目标温度
20141230094417210.jpg
 
读Tdie和Vobj模块如下:
typedef struct
{
        float Tdie;
        short int  Vobj;
}TMP006_TypeDef;
TMP006_TypeDef Tmp006;
void TMP006_Read(void)
{
unsigned char RxData[2] ;
 
do
{
//读配置寄存器
IIC_Read(TMP006_ADDRESS,CONF_REG,RxData,2);
}
while((RxData[1]&0x80)!=0x80); //等待转换完成
// 
IIC_Read(TMP006_ADDRESS,TEMPERATURE_REG,RxData,2);      
Tmp006.Tdie=((RxData[0]<<8)+RxData[1])*0.0078125 + 273.15;
 
IIC_Read(TMP006_ADDRESS,VOBJECT_REG,RxData,2);      
Tmp006.Vobj=(RxData[0]<<8)+RxData[1]; 
}
读Tobj计算模块如下:
float TMP006_Tobj(void)
{
float Vos = 0;
float Tobj = 0; //单位
float fvobj = 0;
float S = 0;
float temp = 0; //红外转换电压值 单位nV
TMP006_Read(); //读取Tdie和Vobj
S = S0*(1+a1*(Tmp006.Tdie-Tref)+a2*(Tmp006.Tdie-Tref)*(Tmp006.Tdie-Tref));
Vos = b0+b1*(Tmp006.Tdie-Tref)+b2*(Tmp006.Tdie-Tref)*(Tmp006.Tdie-Tref);
if(Tmp006.Vobj >= 0x8000) temp = -(0xffff-Tmp006.Vobj)*156.25;
else temp = Tmp006.Vobj*156.25;
temp *= 1e-009;
fvobj = (temp-Vos) + c2*(temp-Vos)*(temp-Vos);
Tobj = sqrt(sqrt(Tmp006.Tdie*Tmp006.Tdie*Tmp006.Tdie*Tmp006.Tdie + (fvobj/S))); //单位
return (Tobj-273.15); //单位℃
}
   本打算隔着玻璃测温度,后发现普通的玻璃远红外透不过去,3um波长以上的基本都透不过了,换成温度也就是700℃以下的波长基本穿不过去。所以如果要么订制透远红外的玻璃或者亚克力也行。还有一个问题,就是关于物体的发射率,越亮的物体发射率越接近0,越黑的物体越接近1.所以红外测温时,要根据被测物来调整发射率,上面计算公式中的S0就是用来校准物体的发射率的。我就没有去校准,用了一个典型的值:Typical values for S0 are between 5 × 10–14 and 7 × 10–14
.
   在TI文档中,还介绍了被测物体与传感器的距离,在什么样的条件下,测出的温度比较接近目标温度。其实TMP006的视角有180°,在淘宝上有红外测温*和红外测温笔,基本上红外测温*的视角比较小,故可远距离测。红外测温笔视角应该和TMP006差不多,所以最好靠着测才准确。
     实物图:
1.jpg
   完整代码见附件!代码对应ADR0与ADR1接地
   官网资料链接:http://www.ti.com.cn/product/cn/TMP006/samplebuy
   其他论坛相关链接:http://bbs.eeworld.com.cn/thread-341966-1-1.html
   在
  • TMP006 User Guide中写出来测量精度和距离的问题,发热面越大越靠近传感器,精度越高(缺点就是这个是180°的视角)。下面有个图:

20150202084217367.jpg
  

文章评论4条评论)

登录后参与讨论

用户1443729 2015-9-7 10:58

挺实用。下拉。谢谢

用户1835514 2015-4-20 17:49

123

用户1527862 2015-2-2 08:48

在TMP006 User Guide中给出了测量精度越距离的关系,因为芯片的视角是180°,所以靠的的越近精度越高,文中我添加了最后一个图,可以看出来。

风来 2015-1-24 17:40

无接触式测人体温感觉精度高不高,距离最大能到多少。
相关推荐阅读
用户1527862 2015-11-04 08:42
开关电源(5)-如何入门2
反激式开关电源 第一步确定Lp,之前的文章中提到如何确定。 第二步确定Np,前面有2个重要的公式,确定Np需要第三个重要的公式了,法拉第电磁感应定律E=nΔΦ/Δt...
用户1527862 2015-10-19 14:15
开关电源(4)- 变压器同名端测量
      有的变压器次级线比较粗,而没有焊接到骨架引脚上,只是简单的做了记号,发现有搞错记号的!     现终于找到一个测量变压器同名端的方法,需要一台示波器。示波器通常有个输出校验的端...
用户1527862 2015-10-14 15:58
开关电源(3)-元器件选择注意点
1、肖特基二极管       它的阳极和阴极之间往往存在很大的电容。肖特基二极管两端电压的每次改变(当肖特基两端电压几乎没有电压的时候,变化最大)的时候,这个电容都一定会被充电和放电。流...
用户1527862 2015-10-13 12:14
开关电源(2)-占空比为何小于0.5
一直不清楚为什么反激式开关电源占空比要小于0.5,今天知道了那么一点点!占空比大于50%时系统可能出现不稳定性,可能会产生次谐波振荡;另外,在电路拓扑结构选择上也有局限,在升压型和降压-升压型电路中,...
用户1527862 2015-10-12 11:46
开关电源(1)-如何入门
  在我们的设计电路中,不可缺少的部分就是电源了,以前做电路电源是用工频变压器降压然后整流,后来流行开关电源了,就直接买开关电源模块。 一直很好奇这开关电源模块,想把它直接画在自己设计的电路中...
用户1527862 2015-03-13 14:28
电磁炉入门(6)-硬件分析:线盘
    前面介绍过电磁炉基本原理,主要是LC震荡,这个L就指的是线盘,关于线盘总结一下个人经验:       1、线盘必须用多股线圈绕制而成,为了是防止高频趋肤效应,下面的公式是计算趋肤深...
我要评论
4
20
关闭 站长推荐上一条 /2 下一条