资讯动态

红外传感器选型与实战应用:从器件分类到热成像双光融合

发布时间:2026/9/9 8:43:05 来源:尧图企业网站定制
1. 先把“红外核心器件”这件事拆清楚做嵌入式这些年我经手的红外器件少说也有几十款——从几毛钱的遥控接收头到上千元的热成像模组全都落在“红外”这两个字底下。很多人一听到“芯火微电子SensorMicro”就开始问这家到底是做什么的其实一句话就能说清它是做红外核心器件的上游厂商覆盖发光、探测、模组三个层面。但在你选型之前我建议先想明白一个大问题——你要的“红外”到底是哪种红外1.1 红外器件到底有多少种别把遥控接收头当传感器这是我在技术交流群里被问得最多的一件事。有人拿热释电模块去测体温有人拿光电二极管去做人体感应还有人拿光敏电阻去做循迹结果全部翻车。原因很简单这些器件虽然都叫“红外”但工作原理完全不是一回事物理上甚至属于两类探测器。红外器件主要分两大阵营热探测器和光子探测器。热探测器靠吸收红外辐射引起温度变化再通过热电效应或热释电效应变成电信号典型代表是热释电探头、热电堆、微测辐射热计热成像芯片。光子探测器则是红外光子直接激发电子典型代表是硅光电二极管、光电三极管、红外LED。两者的差异非常大热探测器响应慢、成本低、能在室温工作适合测温、人体感应这类“慢速”应用光子探测器响应快、灵敏度高适合遥控、通信、循迹这类“快速”应用。我把常见的红外器件放在一起做了个对比选型之前先对着这张表把需求框一轮器件类型工作原理响应速度典型应用选型注意点红外LED电致发光快ns级遥控发射、主动光源波长要跟接收端匹配光电二极管光子激发电子快ns级光通信、遥控接收、测距注意暗电流和结电容光电三极管光子激发放大中us级反射式传感器、循迹增益高但温度漂移明显光敏电阻光电导效应慢ms级环境光检测不适合脉冲调制场景热释电探头温度变化产生电荷极慢人体感应、安防只能感应移动目标热电堆温差产生电动势慢耳温枪、非接触测温必须做温度补偿校准微测辐射热计热敏电阻阵列慢热成像、夜视价格贵需标定和算法这张表关键在哪里就是帮你避免“拿锤子找钉子”。比如热词里有人搜“RGB-D的红外和雷达的红外有区别吗”这个问题本身就是两种完全不同的红外应用方向RGB-D相机里的红外是主动成像光源负责给深度计算提供纹理毫米波雷达的红外激光则是测距信号源通过ToF或相位差解算目标距离。同样是“红外”一个是光学的成像路径一个是无线测距的载波所以你在处理这两种数据时算法思路、标定方法、参数模型都完全不同。1.2 SensorMicro这类厂商的技术底气体现在哪回到“芯火微电子SensorMicro”它的技术底气到底来自哪里我拆成四个维度说这也是我判断一家红外核心器件厂商值不值得用的一贯标准。首先是芯片设计与工艺。红外器件看着简单但做不做得好差别巨大。光电二极管的暗电流、结电容、响应度全都跟外延材料、扩散工艺、钝化层质量强相关。劣质器件拿万用表一量完全正常上电路实测响应速度慢得离谱这就是工艺差距。SensorMicro这类厂商能把光电探测器的暗电流做到pA级、响应度在峰值波长处做到0.6A/W以上靠的是IDM模式下的产线积累。其次是封装与光学集成。红外器件的封装不是“把芯片包起来”那么简单。遥控接收头要在封装里集成滤光片和前置放大器热电堆要设计MEMS膜结构和参考电阻热释电探头需要匹配窗口材料——不同窗口透过率差异很大。SensorMicro在很多器件上直接做了模组级出货比如带屏蔽罩的红外接收模组、带透镜的热电堆传感器这能大幅降低下游的开发门槛。第三是一致性和可靠性。这是我最看重的指标也是国产红外器件被诟病最多的地方。实验室样品做得再好批量一上产线同一批次器件的响应率能差几倍这种问题在低端市场非常常见。做消费电子、物联网终端一旦出货量大批次一致性直接决定售后不良率。我验证SensorMicro的器件时专门抽了不同批次的样品做量产测试响应曲线拟合度基本在3%以内这是有产线控制能力才能做到的事。第四是供应链响应和FAE支持。红外器件选完型、定完封装后续要调参数、改PCB、处理异常这时候厂商的响应速度比规格书重要得多。SensorMicro作为主打红外核心器件的厂商FAE对NEC协议、热电堆标定、热成像算法这些场景都比较熟能直接给出可落地的参考方案而不是丢给你一份数据手册让你自己悟。2. 选型逻辑不是越贵越好是按应用定参数每次有朋友甩给我一个“推荐个红外传感器”的问题我都没法直接回答。因为选型的起点不是器件而是你的应用场景和系统指标。红外器件选型遵循一条铁律先定物理量再定响应类型最后定参数。2.1 先定场景再定器件类型我习惯把红外应用按“测什么”分成几类测有无、测距离——比如红外避障、循迹、接近检测。这类场景用的是反射式光电对管就是红外LED加光电三极管/光电二极管封装在一起。选型看发射光功率、接收灵敏度、检测距离三个参数同时要考虑表面反射率的影响——黑色物体反射率低同样电路能检测到的距离会缩水不少。SensorMicro的反射式光电传感器在IEC标准白卡上实测能稳定做到15cm以上但你在深色哑光表面可能只有3cm这点必须心里有数。测遥控信号、传数据——NEC协议的红外遥控、红外光通信装置这类场景核心是载波调制和脉冲时间对器件速度要求高。接收端必须用响应速度快的PIN光电二极管或一体化接收头发射端用峰值波长940nm的红外LED。此时别用光敏电阻——它的响应时间是毫秒级的38kHz载波在它眼里就是一锅粥根本解调不出来。测温度——非接触测温、热成像、体温筛查这类必须用热电堆或者微测辐射热计。热电堆的成本低、结构简单适合单点测温热成像则是阵列式探测器最适合“看温度分布”。SensorMicro在热电堆上做得比较成熟的点是内置了温度补偿NTC或直接在芯片里做校准让下游客户不用每次都在恒温箱里标定。测人有无、运动状态——被动红外的人体感应用热释电探头。它适合检测“移动的人体”不适合检测静止的人。你坐在工位上一动不动PIR输出就直接归零了这是物理原理决定的不是器件质量问题。2.2 关键参数怎么看波长、响应度、速度、FOV一个都不能少场景定完之后再到具体参数我按优先级排个序第一是波长匹配。红外LED和光电探测器都有一个“峰值工作波长”的概念。硅基光电二极管的响应范围在850nm到1100nm之间940nm处响应峰值普遍不错所以遥控设备几乎都用940nm的LED。但如果你选了850nm的红外LED却配一个峰值在940nm的接收头发射功率再大也是事倍功半。选型第一步就是用规格书上的波长-响应度曲线把发射端和接收端对齐。第二是响应速度。做红外光通信、NEC红外时要重点关注。以NEC遥控为例载波是38kHz一个脉冲宽度最小只有560微秒探测器如果上升沿拖沓信号直接变形解码就会出错。这时候选光电二极管要看结电容和上升/下降时间一般要求上升时间在10ns以内才够从容。而做循迹、人体感应响应速度就不是瓶颈反而要在慢速器件里选稳定性好的。第三是灵敏度和信噪比。这两个参数很容易被忽略但直接影响系统能做到多极限。光电探测器的灵敏度用响应度A/W衡量收到多少瓦的光产生多少安培的电流信噪比则看暗电流——暗电流越大信号低端被噪声淹得越快。做远距离红外光通信我宁可选响应度略低但暗电流小的管子因为后期信号链路的噪声几乎都是暗电流贡献的。第四是视场角FOV。这个参数在做光电传感器集成时特别关键。FOV太大器件容易把周围环境的杂散红外都收进来信噪比变差FOV太小发射端和接收端的光路不好对准安装公差转成良率损失。SensorMicro的反射式传感器模组都在规格书里给了完整的FOV图这一点值得夸一下很多厂商只给一个角度数值但实际视场分布根本不是理想的圆锥形。3. 实战从遥控到循迹几个能落地的红外应用讲完原理和选型思路我挑几个典型的应用场景把实际操作过程走一遍顺便把热词里提到的项目串进来。3.1 NEC协议与遥控器Arduino和STM32都能玩NEC协议大概是嵌入式开发者接触最多的红外协议。它用38kHz载波逻辑“0”和逻辑“1”靠脉冲宽度区分逻辑0是560微秒高电平加560微秒低电平逻辑1是560微秒高电平加1690微秒低电平。一次完整的按键帧由9毫秒引导码、4.5毫秒低电平、4个字节的地址/地址取反/命令/命令取反组成。解码的核心就是测量每个脉冲的宽度。Arduino玩家最简单直接用IRremote库。我多年前第一次写NEC红外解码时还是自己用外部中断加定时器硬解现在库已经非常成熟了。核心代码就几行#include IRremote.h int RECV_PIN 11; IRrecv irrecv(RECV_PIN); decode_results results; void setup() { Serial.begin(9600); irrecv.enableIRIn(); } void loop() { if (irrecv.decode(results)) { Serial.println(results.value, HEX); irrecv.resume(); } }但Arduino的IRremote库有个坑不同版本的库API差异很大老库用setReceivePin新库直接在构造函数里指定引脚网上抄代码很容易被版本问题卡死。我建议直接去官方仓库看README别在搜索引擎里翻十年前的老贴。STM32场景就更有工程味了。我用STM32F103做过NEC红外接收方案是用定时器输入捕获测量脉冲宽度而不是用外部中断加delay——因为delay会阻塞主流程系统稍一繁忙解码就乱套。输入捕获的思路是先设置定时器为上升沿捕获捕获到后马上切换为下降沿捕获这样就能量出高电平宽度再用同样的逻辑量出低电平宽度最后拼出完整帧。核心逻辑大致是void HAL_TIM_IC_CaptureCallback(TIM_HandleTypeDef *htim) { if (htim-Channel HAL_TIM_ACTIVE_CHANNEL_1) { if (capture_index 0) { // 上升沿到来记录时间并切换为下降沿捕获 __HAL_TIM_SET_CAPTUREPOLARITY(htim, TIM_CHANNEL_1, TIM_INPUTCHANNELPOLARITY_FALLING); t_rise HAL_TIM_ReadCapturedValue(htim, TIM_CHANNEL_1); capture_index 1; } else { // 下降沿到来计算高电平宽度 t_fall HAL_TIM_ReadCapturedValue(htim, TIM_CHANNEL_1); high_width t_fall - t_rise; // 根据 high_width 判断是逻辑0、逻辑1还是引导码 __HAL_TIM_SET_CAPTUREPOLARITY(htim, TIM_CHANNEL_1, TIM_INPUTCHANNELPOLARITY_RISING); capture_index 0; } } }注意定时器预分频要配好比如72MHz主频、预分频71计数器的分辨率就是1微秒这样测560微秒和1690微秒的高电平宽度非常准确。这个方案我已经在多个项目里验证过解码成功率在干扰不大的环境里能到100%。3.2 循迹与反射式光电传感器Arduino也能做小车红外循迹模块是另一个爆款应用。市面上的模块基本都是红外LED加光电三极管输出经过比较器整形直接给数字电平。这类模块处于黑线上面时输出高电平处于白色地面时输出低电平依靠多路探头的组合就能实现黑线循迹。但循迹模块有一个很关键的使用技巧安装高度。模块离地1cm到3cm都可以工作但高度变化会让检测宽度和灵敏度剧烈变化。我实测下来离地1.5cm是综合表现最好的高度黑线检测稳定、对白色反光面不误判。上电后第一件事不是写代码而是调模块上的电位器让它在目标地面材料上输出翻转点合适——这个步骤十个人里有八个人会跳过去然后代码跑到飞线。简单读取代码#define SENSOR 3 void setup() { pinMode(SENSOR, INPUT); Serial.begin(9600); } void loop() { int val digitalRead(SENSOR); if (val LOW) { Serial.println(On black line); } else { Serial.println(On white surface); } delay(20); }如果你的环境光特别强循迹模块很容易误触发。我的习惯是在光学结构上加一个遮光罩或者通过降低LED驱动电流来抑制反射干扰。SensorMicro的反射式光电传感器在封装里做了滤光设计只让LED波长附近的红外光通过比裸光电三极管方案对环境光的抑制好很多这也是模组级器件的一个明显优势。3.3 红外热成像与可见光融合高级玩法的思路热词里有“红外热成像”“红外与可见光图像融合”“红外相机标定”“大疆红外可见光配准”这几个串起来就是目前行业里很火的双光融合方向。SensorMicro这类做核心器件的厂商能供应低成本的热成像模组让入门级双光融合成为可能。双光融合的难点核心在配准。红外热像仪分辨率低常见384×288或640×512可见光相机分辨率高动辄1080P以上两种相机的视场角、畸变模型、响应波段完全不同不能直接在像素层面叠加。要做严密的配准流程是这样的分别标定红外相机和可见光相机的内参焦距、主点、畸变系数这步可以用棋盘格对着红外相机拍——但棋盘格在红外下对比度很低我试过加热的黑体板、带温度的胶带贴纸最后还是用电加热带做的标定图案才稳定出来。用同一标定板同时拍两张图用特征点解出单应性矩阵H把两个坐标系映射起来。注意红外影像分辨率低一个大像素在可见光里对应一大块区域融合时需要插值或者做金字塔配准。这里给个直观的数据我做过一组配准实验384×288红外和1080P可见光做融合单应矩阵配准后边缘对齐误差大约1-2个可见光像素足够做初步的分析和叠加显示。至于“红外和雷达的红外”的区别我之前说了一个是光学的主动成像一个是雷达测距。做传感器融合时千万别混为一谈两者的坐标系变换模型、时间和空间同步方式都有本质区别。4. 集成调试中的常见坑与排查4.1 现象STM32红外接收出现HAL_UART_ERROR_FE这个热词很有意思——“stm32f103 红外接收hal_uart_error_fe”。听起来像是红外工程问题但FE是UART帧错误跟红外接收根本不在一条信号链路上。我猜排查思路走偏的人不少。出现FE错误的常见根源有这几个串口波特率配置不匹配发送端和接收端波特率不一致接收采样点错位帧错误自然出现。时钟配置问题HAL库初始化时如果外部晶振起振不稳系统时钟偏了波特率就跟着偏FE错误时隐时现。引脚复用冲突GPIO复用串口功能和其他外设冲突导致RX线上有额外干扰UART同步出错。如果你确实用UART接收红外解调信号——比如把红外接收头输出接到串口RX引脚用UART的起始位和停止位去“近似”解码调制信号——那不是标准做法时序误差会因为波特率量化导致帧错误。排查方法很简单先用逻辑分析仪抓RX引脚波形确认数据帧格式、波特率是否正确再用串口助手回环测试把TX短接RX排除外设问题。如果想用STM32稳定接收NEC红外老老实实用定时器输入捕获或者外部中断别用UART硬凑。4.2 红外反射模块灵敏度不稳定的三个根源红外循迹或者避障模块出现“时灵时不灵”大部分不是模块坏了而是以下三个问题第一个是环境红外干扰。阳光里有大量红外线直射到光电三极管上会直接饱和。对策是使用带滤光片的器件或者给模块加一个不透光的罩子只留发射端和接收端的窗口。第二个是目标表面反射率差异。黑色哑光表面和白色亮面反射率可能差10倍以上同一个光电三极管检测距离完全不同。所以做避障时别指望“固定灵敏度通吃所有表面”要么用自动增益电路要么根据目标材质调电位器。第三个是发射发射功率和电流的漂移。红外LED长时间工作后结温升高输出光功率会下降。我见过有些模块设计时没留发热余量上电5分钟后检测距离缩水一半。选型时要关注LED的最大额定电流长时间工作时建议把驱动电流控制在额定值的70%以内。SensorMicro的模组级产品在这一点做得好它内部把LED的光功率做了一次筛选不同批次之间的发射功率一致性不错下游不用频繁调阈值。4.3 热电堆和热释电模块的温漂、预热问题做非接触测温项目时热电堆的“温漂”是绕不开的坑。热电堆输出的电压和“被测物体温度”与“传感器自身温度”的温差相关所以传感器自身的温度变了同样的目标温度输出就会变。正规做法是板上做NTC测温补偿但很多模组的补偿并不完善。实测建议上电后等1到2分钟让传感器温度稳定再开始采集数据。做量产标定时用恒温箱控制环境温度记录25℃、30℃、35℃三个点的输出偏移量做线性补偿。电路布局上热电堆远离MCU和功率器件等热源。我曾经在一个项目里把热电堆放在DC-DC旁边温度读数波动超过1℃后来拉开到20mm距离波动降到0.1℃以内。热释电PIR模块也有类似的坑——它上电后需要一段稳定的时间通常叫“白屏时间”。你刚上电的那十几秒模块内部放大器还在建立工作点这时候动作感应会乱报。产品设计时建议做“上电屏蔽”逻辑开机后等待30秒再启动报警/检测流程。5. 从器件选型到产品落地我个人最看重的三件事最后聊点我在实际项目中沉淀下来的经验希望对你接SensorMicro这类红外器件的选型有帮助。第一件事不要只盯着规格书买器件。规格书上的参数都是理想条件下的数据实际产线的批量表现才是王道。我现在的习惯是让FAE提供同一型号不同批次的样品一批抽5到10颗自己做一致性测试——包括响应度离散度、暗电流漂移、温度循环后的性能变化。这几项通过了我才敢在产品里用。第二件事选型要留余量尤其是响应速度、温度范围和灵敏度。红外器件是模拟世界的东西标称值和真实值之间总有一道看不见的差距。比如NEC解码器件上升时间规格是5ns实际工作在40℃环境可能变成15ns虽然还是能解但如果你把系统余量压到极限最后一定会因为一个不起眼的时序问题翻车。第三件事千万别跳过“实物验证”就直接画板。先用开发板或代理商送的评估板把整个信号链路跑通确认信号质量满足你的需求再开始PCB设计。特别是红外发射管和接收管的光学路径受机构件影响极大——螺丝高度、外壳颜色、开窗大小都会改变光路我在这上面吃过太多亏了。说实话红外器件不像主控芯片那么“规矩”它横跨光、电、热三个领域干扰源多、变量多做起来特别容易被细节折磨。但反过来一旦你把选型逻辑和调试方法摸透了红外项目能带来的确定性回报也非常高——成本低、方案成熟、量产稳定。SensorMicro这类专注红外的核心器件厂商把事情往前推了一大步剩下的事就是靠每一位工程师在调试台前把那0.1%的细节抠好。

读完文章,也想定制专属网站?

尧图设计师 24 小时内与您沟通定制方案

免费获取报价