利用先进硅传感器实现高精度温度测量
电子行业对精度要求日益提高,温度传感也不例外。存在多种温度传感方案,各有优劣。硅温度传感器虽具良好线性度,但从未提供其他方案那样的精度。然而,硅温度传感技术的最新进展意味着现在可用硅方案实现高分辨率和高精度。
一台新冰箱
2020年3月,英国即将封锁。世界囤积食物以防超市关门,前景未卜。此时Bramble家的冰柜停止工作。肯尼·罗杰斯的歌词“You Picked a Fine Time to Leave me…”在脑海回响,我们上网寻找替代品。
几天后新冰柜送达,前面板带数字温度显示,这是Bramble太太的心愿。推荐设定-18°C,一小时后达到温度可存放食物。我对读数准确性持怀疑态度,但只要能冻结食物就不在意。不过,工程师的心是躁动不安的,几天来那数字读出仿佛在无声挑衅,我终于忍不住,必须测试这厨房新成员的准确性宣称。
温度传感器概览
工业应用中使用多种温度传感器,各有优劣。许多文献详述其原理,此处仅摘要:
热电偶
热电偶提供低成本、中等精度的超高温测量。依托托马斯·塞贝克1821年发现的两种异种金属接点在不同温度下产生电压。K型热电偶(铬镍合金)输出约41μV/°C,可测1000°C以上。但塞贝克效应依赖两接点的温度差,“热”接点测待测温度,“冷”接点须保持已知温度。讽刺的是,冷接点还需另一温度传感器,AD8494等器件为此提供完美方案。热电偶体积小、热质量低,对温度变化响应快。
RTD(电阻温度检测器)
测量中等温度(<500°C)广泛使用RTD。由随温度呈正变化的金属元件组成,最常用铂。PT-100是工业最常用RTD,因铂(PT)制成且0°C时阻值100Ω得名。虽测温上限不如热电偶,但高度线性、读数可重复。PT100需精确驱动电流,产生与温度成比例的精确压降。连接线电阻产生误差,故典型采用凯尔文感测,形成3或4线制。
热敏电阻
低温范围需低成本方案时,热敏电阻常足矣。高度非线性,基于Steinhart-Hart方程,温度升高电阻减小。优势是微小温变引起大阻变,虽非线性仍可达高精度。热响应快。个体非线性特性明确,可用LTC2986等元件校准消除。
二极管,到处是二极管,却无(Vbe)压降可用……
为验证家中新成员,我选择了硅温度传感器。开箱即用,无需冷接点补偿或线性化,提供模拟/数字输出,预校准。直到最近,其仅提供中等精度。虽足以指示电子设备健康状态,但从未精确到测量体温(通常需±0.1°C,依ASTM E1112标准)。ADT7422和ADT7320的发布改变了这点,分别实现±0.1°C和±0.2°C分辨率。
硅温度传感器利用晶体管Vbe的温度依赖性,依Ebers-Moll方程近似为:

其中Ic为集电极电流,Is为晶体管反向饱和电流,q为电子电荷(1.602×10-19 C),k为玻尔兹曼常数(1.38×10-23),T为绝对温度。
二极管电流也符合上述表达式;为何应用电路都用晶体管而非二极管?实际上二极管电流包含电子穿过PN结耗尽区与空穴复合产生的复合电流,导致二极管电流随Vbe和温度呈非线性。该电流在双极型晶体管中也存在,但流入基极,不出现在集电极电流中,故非线性度大幅降低。
重排得:

Is远小于Ic,可忽略上式中的“1”项。可见Vbe随Ic对数变化线性变化。若Ic和Is恒定,Vbe随温度线性变化(k、q为常数)。强制恒定集电极电流并测量Vbe随温度变化是易行的。
Is与晶体管几何相关,强烈依赖温度。像许多硅器件,其值每升温10°C翻倍。虽经“ln”函数削弱,但Vbe绝对值因器件差异而异,仍需校准。实用硅温度传感器用两个相同晶体管,一个注入Ic,另一个注入10Ic。相同晶体管和比例精准电流易于集成电路制造,故多数硅传感器采用此架构。电流对数变化致Vbe线性变化,测量两Vbe之差。
同温度下两晶体管Vbe之差为:

因为

可得

通过不同电流并测量Vbe差,消除了非线性Is项、不同绝对Vbe影响及晶体管几何相关的所有非线性效应。因k、q和ln10均为常数,Vbe变化与绝对温度成正比(PTAT)。电流10倍差时,两Vbe之差约以198μV/°C线性随温度变化。简化电路见图1。

图1. 测量温度的基本电路.
图1中电流须精心选择。电流过高导致显著自热和晶体管内部电阻压降破坏结果;过低则漏电流引入显著误差。
注意上述方程关联晶体管集电极电流,而图1显示注入恒定发射极电流。晶体管可设计为集电极-发射极电流比稳定(接近1),故集电极电流与发射极电流成比例。
这只是开始。要用硅温度传感器达±0.1°C精度,需大量表征和修调。
是鸟?是飞机?
不,是超级温度计。确实存在。未校准硅温度传感器置入硅油浴,加热至精确温度,用超级温度计测量。此类设备精度优于小数点后五位。传感器内部熔丝熔断以调节增益,按y = mx + C线性化输出。硅油提供极均匀温度,单周期可校准多器件。
ADT7422在25°C至50°C范围内精度±0.1°C,该范围以典型人体温度38°C为中心,使其成为精准生命体征监测的理想选择。工业应用中,ADT7320修调后在-10°C至+85°C更宽范围内达±0.2°C精度。

图2. 安装在0.8mm厚PCB上的ADT7422
硅温度传感器校准非唯一问题。如同超精密电压基准,晶片应力会破坏精度,PCB热膨胀、引线框、塑封和裸焊盘均需考量。焊接工艺也带来问题:回流焊将器件加热至260°C,塑封软化、引线框变形,冷却硬化时机械应力锁定在晶片中。ADI工程师耗费数月精密实验,发现0.8mm PCB厚度为完美平衡点,焊接后仍能达±0.1°C精度。
软件内幕
系统软件主要处理ADT7320数据格式化并在LCD显示。获取ADT7320数据很简单。处理器初始化时,CS和SCLK拉高,SCLK空闲时保持高电平。CS拉低启动数据事务。SPI模式下,数据在SCLK上升沿读入ADT7320,下降沿输出。下面详述初始化例程。
复位串行接口:CS拉低,DOUT拉高,SCLK振荡40次。CS拉高。这向ADT7320时钟40个“1”,复位串行接口。SPI总线复位后需至少500μs延迟。
下一代码块发送命令字节,指示读/写及寄存器地址。代码行
data = 0b00001000;
指示ADT7320写寄存器0x01。接着编程输出16位分辨率数据:
data = 0b10000000;
DOUT预置为“0”,检测数据字节MSB,若为“1”则DOUT拉高。SCLK拉高将数据时钟进ADT7320。
void reset_adt7320(void) /* initialise ADT7320 */ { unsigned char n, data; /* reset the serial interface */ clearbit(PORTA, CS); setbit(PORTA, DOUT); for(n=40; n>0; n--) { clearbit(PORTA, SCLK); setbit(PORTA, SCLK); } setbit(PORTA, CS); delay_10ms(); /* must wait >500us after reset */ /* set to 16 bit mode */ clearbit(PORTA, CS); data = 0b00001000; /* clear bit 6 (write), reg #001 */ /* send command byte */ for(n=8; n>0; n--) { clearbit(PORTA, SCLK); clearbit(PORTA, DOUT); /* precondition DOUT */ if checkbit(data, (n-1)) { setbit(PORTA, DOUT); } setbit(PORTA, SCLK); /* clock data in on rising SCLK */ } data = 0b10000000; /* continuous conversion, 16 bits */ /* send data byte */ for(n=8; n>0; n--) { clearbit(PORTA, SCLK); clearbit(PORTA, DOUT); /* precondition DOUT */ if checkbit(data, (n-1)) { setbit(PORTA, DOUT); } setbit(PORTA, SCLK); } setbit(PORTA, CS); }
获取温度数据的函数调用类似。代码行
data = 0b01010000;
指示ADT7320读寄存器2获取16位数据。
代码等待至少240ms让ADT7320完成温度转换。随后时钟输出16位温度数据,CS拉高。
clearbit(PORTA, CS); /* data = command byte */ data = 0b01010000; /* read mode, register 2 */ /* read ADT7320 */ for(n=8; n>0; n--) { clearbit(PORTA, SCLK); clearbit(PORTA, DOUT); /* precondition DOUT */ if checkbit(data, (n-1)) { setbit(PORTA, DOUT); } setbit(PORTA, SCLK); } delay_150ms(); /* temperature conversion */ delay_150ms(); /* read temperature data */ for(n=16; n>0; n--) { clearbit(PORTA, SCLK); if checkbit(PORTA, DIN) { setbit(temp, (n-1)); } setbit(PORTA, SCLK); } setbit(PORTA, CS);
完整代码集见此处。
我的香肠究竟有多冷?
ADT7320在冰柜中放置约30分钟,观察新购冰柜稳定温度。
图3显示冰柜温度为-18.83°C。

图3. 冰柜温度 -18.83°C
考虑到食物储存无需如此温度精度,我认为这令人印象深刻。又在英国夏日测量办公室温度,22.87°C,见图4。

图4. 我的办公室温度 22.87°C
结论
硅温度传感器已大幅进步,变得极其精确,能以高精度完成生命体征监测。虽技术原理基于坚实基础,但达到亚度级精度所需的修调工作量巨大。即便达成此精度,机械应力和焊接也极易抹去数小时校准获得的增益。
ADT7320和ADT7422代表多年表征的巅峰,即使焊接上PCB仍能实现亚度级精度。
参考文献
Huijsing, Johan and Michiel Pertijis. Precision Temperature Sensors in CMOS Technology. Springer, 2006.
Horowitz, Paul and Winfield Hill. The Art of Electronics. Cambridge University Press, April 2015.
Analog Circuit Design, Volume 2, Chapter 32. Linear Technology, December 2012.
AD590 datasheet. Analog Devices, Inc., January 2013.
ADT5912 data sheet (to be released). Analog Devices, Inc.
嵌入式
- 硅:性质、生产与市场前瞻
- 低成本传感器构建室内温度分布图谱
- 树莓派多路DS18B20 1-Wire温度监测:接线与编程全指南
- 树莓派2上使用DS18B20读取温度完整指南
- 树莓派结合 Maxim 1-Wire 传感器与 DS2482 I2C 桥接器的多点温度测量
- 树莓派精准监测机柜温度:DS18B20 多点部署实战
- 英飞凌发布高精度 AMR 角度传感器,赋能汽车与工业应用
- ams 在 2019 传感器博览会展示前沿光学传感技术
- Maxim 推出新款传感器:为可穿戴健康设备大幅降低功耗、缩小尺寸、提升精度
- IBASE 发布坚固型 COM Express 模块 (ET875 & ET870):支持 -40°C 至 +85°C,面向 IoT 与工业应用
- 传感器类型与电路图综合指南
- 28年传奇双体船Incognito持续刷新速度纪录