第4章:热电堆探测器详解
各位工程师朋友,今天我们来聊聊热电堆探测器。说实话,这玩意儿在非接触测温领域里,算是最成熟、最皮实的技术之一了。我最早接触它是在做工业测温枪的项目,那时候选型踩了不少坑,今天把这些经验分享给你。
4.1 工作原理:塞贝克效应
热电堆的核心原理,说白了就是塞贝克效应。你想想看,两种不同的金属材料接在一起,如果两端温度不一样,就会产生电压。这个现象是1821年发现的,但真正用到探测器上,是近几十年的事。
具体到热电堆探测器,它内部其实是一堆热电偶串联起来。为什么要串联?因为单个热电偶产生的电压太小了,只有几微伏每摄氏度。串联起来,电压就叠加了。我见过一个典型的32对热电偶串联的探测器,输出能到几百微伏每摄氏度,这才勉强能用。
核心公式:
V_out = N × α × (T_hot - T_cold)
其中:N是热电偶对数,α是塞贝克系数,T_hot是热端温度,T_cold是冷端温度
嗯,这里要注意:热电堆测的是温差,不是绝对温度。所以它必须配合一个温度传感器来测量冷端温度,才能算出目标物体的真实温度。这个冷端补偿,是设计中的关键点。
4.2 典型型号对比
市面上常见的热电堆探测器,我挑两个最有代表性的说说:MLX90614和TS305。
| 参数 | MLX90614 | TS305 |
|---|---|---|
| 输出接口 | I²C / PWM | 模拟电压 |
| 测温范围 | -70°C ~ 380°C | -20°C ~ 100°C |
| 精度 | ±0.5°C(典型) | ±1.0°C |
| 视场角 | 35° / 90° 可选 | 80° |
| 内置冷端补偿 | 是 | 否 |
| 典型价格 | ¥30-50 | ¥8-15 |
我个人习惯,如果做消费级产品,比如额温枪、耳温枪,首选MLX90614。它内置了冷端补偿和数字接口,省去了很多外围电路。但如果你做的是工业批量测温,成本敏感,TS305加一个热敏电阻做冷端补偿,也能凑合。
避坑指南:
我曾经在一个项目中用了TS305,没注意它的视场角是80°,结果测出来的温度总是偏低。后来才发现,目标物体太小,背景温度干扰太大。所以选型时,视场角一定要和测量距离匹配。目标物体要填满探测器的视场,否则测不准。
4.3 应用场景
热电堆探测器最常见的应用,就是非接触测温。你想想看,疫情期间的额温枪,里面用的就是这玩意儿。还有工业上的高温炉测温、电力设备的过热检测、智能楼宇的人体感应,都是它的地盘。
- 非接触测温:额温枪、耳温枪、工业测温枪
- 工业测温:高温炉、管道温度监测、电机过热保护
- 人体感应:智能灯控、安防报警、存在检测
- 家电应用:微波炉、烤箱、电磁炉的温度控制
我记得有一次帮一个客户做工业烤箱的温度监测,烤箱内部温度高达300°C,热电偶根本放不进去。最后用了MLX90614,通过一个石英玻璃窗口测量,效果出奇的好。嗯,这里要注意,石英玻璃对红外线的透过率很高,普通玻璃就不行。
4.4 信号调理电路
热电堆的输出信号非常微弱,一般只有几十到几百微伏。所以信号调理电路是必须的。我画了一个典型的电路框图,你看看就明白了。
这个电路里,有几个关键点:
- 前置放大器:增益至少要1000倍,我一般用AD620或INA128这类仪表放大器,噪声低、共模抑制比高。
- 低通滤波器:热电堆信号变化很慢,截止频率设在10Hz左右就够了。太高了会把噪声放进来。
- ADC:至少16位,因为信号经过放大后,也就几百毫伏,分辨率不够的话,温度精度就没了。
- 冷端补偿:用热敏电阻或DS18B20测量探测器本身的温度,然后在软件里做补偿计算。
警告:
热电堆对电源噪声非常敏感。我曾经在一个项目里,电源纹波有50mV,结果测温误差达到了2°C。后来加了LC滤波和LDO,才把问题解决。所以,电源设计一定要干净,建议用低噪声LDO单独供电。
4.5 实战代码示例
下面是一个用Arduino读取MLX90614的简单代码。我习惯用Adafruit的库,封装得很好。
#include <Wire.h>
#include <Adafruit_MLX90614.h>
Adafruit_MLX90614 mlx = Adafruit_MLX90614();
void setup() {
Serial.begin(9600);
Serial.println("MLX90614 测试程序");
if (!mlx.begin()) {
Serial.println("探测器未找到,请检查接线!");
while (1);
}
}
void loop() {
// 读取目标温度和探测器自身温度
float objectTemp = mlx.readObjectTempC();
float ambientTemp = mlx.readAmbientTempC();
Serial.print("目标温度: ");
Serial.print(objectTemp);
Serial.print(" °C, 环境温度: ");
Serial.print(ambientTemp);
Serial.println(" °C");
delay(1000);
}
这段代码很简单,但有几个坑要注意:
- I²C上拉电阻要加,我一般用4.7kΩ
- 探测器离目标物体不要太远,建议10cm以内
- 如果测量反射率高的物体(比如金属表面),误差会很大,需要做发射率补偿
小技巧:
如果你用MLX90614测量人体温度,记得把发射率设为0.98。默认是1.0,测出来会偏低0.3°C左右。我当初做额温枪时,就是没注意这个参数,校准了好几天才发现问题。
好了,热电堆探测器就讲到这里。下一章我们聊聊热释电探测器,那玩意儿和热电堆有点像,但原理完全不同。到时候再细说。
公众号:蓝海资料掘金营,微信deep3321