ARTICLE DETAIL

资讯详情

深耕编程入门与网站建设的一线实战洞察。

国产红外测距模块选型:四大路线、低功耗设计与标定实战

国产红外测距模块选型:四大路线、低功耗设计与标定实战 1. 先把四条技术路线分清选型这件事就不会跑偏“红外测距模块”这五个字看着简单真落到选型上坑比想象中多。前阵子帮做智能卫浴的朋友选料需求是检测人体靠近、量程 5 到 30 厘米、电池供电要撑一年以上我前后拿了七八个不同原理的模块在暗室、白炽灯下、正午窗边轮着测了两周最后定下来的那颗单价不到三块五。这件事让我确认了一点大多数人搜“国产短距离低功耗红外测距模块选型推荐”的时候脑子里其实混着四种完全不同的东西——红外测距模块这个大类底下藏着反射式光电对管、三角测距 PSD、红外 ToF、遮断式对射四条完全不同技术路线。原理不同量程差一个数量级功耗差两个数量级价格差十倍。选错路线不是调参能救回来的只能推倒重来。所以我不打算一上来就甩型号清单那种东西换个批次就失效。下面按“先分路线、再算功耗、然后动手做、最后标定和排障”的顺序讲每一步都带上我实际算过的参数和踩过的坑。无论你是做消费电子、小家电、工业限位还是纯 DIY 创客项目只要涉及近距离非接触检测这些内容基本可以直接抄作业。1.1 反射式光电对管0 到 30 毫米的性价比之王TCRT5000 这类器件的本质是把一只红外发射管和一只光敏三极管封在同一个塑料支架里中间用黑色隔墙物理分开。发射管发光前方有物体就把光反射回来接收管导通集电极电压下降。就这么朴素。它的优势集中在三处。成本极低国产兼容料单价可以压到几毛钱。静态功耗接近于零因为可以只在采样瞬间给发射管供电其余时间整个器件是死的。接口简单接收管输出直接接 GPIO 做阈值判断或者接 ADC 做粗测距不需要任何协议栈。它的短板也很明确。量程短常规型号有效区间是 0.5 到 25 毫米超过 3 厘米信号基本埋进噪声。输出与目标表面特性强相关白纸和黑绒布在同一距离下的读数可以差两三倍这是反射率差异决定的物理事实不是电路问题。环境光干扰明显尤其是 850nm 波段的阳光和白炽灯直接淹没信号。适合它的场景是打印机纸张检测、扫地机悬崖识别、编码器码盘、机械限位开关、透明管液位检测。这些场景的共同点是“只关心有没有、不太关心多远”。1.2 三角测距 PSD5 到 150 厘米的模拟量老将原理是发射一束红外光打在被测物上形成光斑反射光经过接收透镜成像在 PSD位置敏感探测器上。目标越远光斑在 PSD 上的成像位置越偏PSD 两端输出电流的比值对应距离。夏普的 GP2Y0A21YK0F 是这条路线最出名的型号量程 10 到 80 厘米模拟电压输出。国产这条路线目前以模块厂做兼容品和定制模组为主同量程下的价格能做到进口料的二分之一到三分之一具体差异主要落在透镜一致性和温漂控制上。用这类模块必须接受一件事输出不是线性的本质是 1/距离 关系近端电压高、远端电压低而且近端有死区5 厘米以内读数会乱跳必须查表或做曲线拟合才能用。优点是量程正好覆盖 2 厘米到 1.5 米这个“中间地带”这个区间反射式够不着、ToF 又偏贵抗环境光比反射式强因为加了透镜汇聚和调制对目标颜色不敏感。缺点是功耗偏高连续工作几十毫安、峰值上百毫安是常态刷新率低一般 10 到 60Hz透镜需要空间整体体积压不下来。1.3 红外 ToF 模组可编程、抗干扰价格已经打下来了ToF 靠调制红外光的往返相位差或飞行时间直接算距离输出就是毫米数走 I2C 或 UART。进口的 VL53L0X 系列大家熟国产这两年追得很快1 到 200 厘米段已经有多家可选。它的核心竞争力是数字输出、线性度好、抗环境光强窄带滤光片加高频调制、帧率能到 30 到 60Hz而且带串扰补偿和盖片校准省掉大量标定工作。代价是单价仍然高于前两种低功耗版本待机电流能做到几十微安但单次测量瞬间是毫安级。更麻烦的是结构设计门槛——窗口必须做光学处理盖片要选透红外的材质不能随便拿块亚克力糊上去强光直射下量程会明显缩水户外场景要额外加遮光筒。1.4 遮断式对射精度最高但物体必须“经过”发射管和接收管面对面分开装物体从中间穿过挡住光路就触发。量程由机械间距决定几毫米到几十厘米都能做。精度极高、响应极快、几乎不受颜色和表面材质影响因为根本没有反射路径这个变量。缺点同样鲜明必须有机械结构让物体穿过去做不了“看前方有没有东西”。典型应用是光电门测速、流水线计数、行程限位、液滴检测。一句话总结这四条路线的分界线测“有没有靠近”用反射式测“有多远”用三角或 ToF测“有没有经过”用对射。下面这张表是我自己选型时用的速查版。路线典型量程输出形式平均功耗量级单件成本最适合的场景反射式光电对管0.5-30 mm数字/模拟几微安到几十微安极低有无检测、限位、码盘三角测距 PSD20-1500 mm模拟电压几十毫安中中距离粗测距红外 ToF10-2000 mmI2C/UART几十微安到几百微安中高需要精确毫米值的测距遮断式对射1-500 mm数字几十微安低计数、限位、光电门2. 低功耗怎么算别只看规格书上那一行“工作电流”聊低功耗设计最常见的误区是盯着规格书的“工作电流 20mA”就下结论说这个方案不能用。红外方案的功耗优势恰恰在于它是脉冲式的真正决定续航的是平均电流不是峰值电流。2.1 平均电流的计算公式与占空比设计平均电流的基本关系是I_avg I_peak × D I_sleep × (1 - D)其中 D t_on / T举个实测过的例子。发射管峰值电流 150mA每次点亮 30µs采样周期 100ms那么占空比 D 30µs / 100ms 3×10⁻⁴也就是万分之三发射侧平均电流 150mA × 3×10⁻⁴ 45µAMCU 深度睡眠按 1.5µA 算华大 HC32L196 这类低功耗国产 MCU 的深度睡眠档就在这个数量级LDO 静态电流按 2µA 算合计约 48.5µA用一颗 2000mAh 的锂亚电池供电理论续航 2000mAh / 0.0485mA ≈ 41237 小时 ≈ 4.7 年。当然实际要打对折再对折因为电池自放电、温度、负载突变都会吃掉一部分但撑一年半到两年是没问题的。这就是为什么很多电池供电的检测方案宁愿用“笨”的反射式也不用看起来更高级的 ToF。对照一下 ToF工作电流 20mA单次测量耗时 5ms1Hz 采样平均电流 20mA × 5ms / 1000ms 100µA。数据上也不算差但要注意它内部有电荷泵和振荡器实际平均电流往往比理论值高 30% 到 50%而且做不到“想测才测”那么灵活。注意绝对不要让红外发射管常亮。常亮的发热会改变 Vf进而改变驱动电流形成正反馈同时功耗直接崩掉。也不要拿 GPIO 直接驱动大电流发射管绝大多数 MCU 的单脚灌电流上限是 20mA超了就是烧引脚或者拉低整颗芯片的电源。2.2 波长的取舍850nm 还是 940nm850nm 和 880nm 的好处是发射效率高硅光敏管的响应峰值就在 850 到 900nm 之间灵敏度最好同样的驱动电流能拿到更强的回波信号。缺点是能看到红暴微弱红光而且太阳光在这个波段的能量大户外抗干扰差。940nm 几乎不可见避开了可见光的主要能量区还落在水汽吸收带附近抗日光干扰明显更好。代价是同电流下辐射功率低 20% 到 40%硅管在这个波长的响应也只有峰值的 60% 左右。要用 940nm要么提高驱动电流注意发热和寿命要么提高接收端增益。实际选型我会这样定室内、成本敏感、对红暴无要求用 850nm面板外露、用户能直接看到、或者有阳光照射风险用 940nm同时配一片中心波长 940nm、半宽 30 到 50nm 的带通滤光片成本多几毛钱信噪比提升非常明显。2.3 环境光抑制的三层武器第一层是光学滤光片、遮光筒、收窄接收管的视场角。这一层最便宜也最有效结构设计阶段就要留位置后期补不上。第二层是电气脉冲驱动加亮/暗差分采样。先点亮发射管采一次再关掉采一次两次相减。环境光在两次采样之间基本不变相减就被消掉了。这招几乎零成本只要 MCU 支持连续 ADC 采样。第三层是算法载波调制解调比如用 38kHz 方波调制发射接收端用带通放大只取这个频率环境光的直流和低频成分全被滤掉。代价是需要额外电路调制源 带通放大器 检波BOM 和调试成本都上去了。短距离低成本场景一般用不到但强光环境下这是唯一可靠的办法。2.4 主控与接口的匹配反射式对管只需要 GPIO 或一路 ADC随便哪颗 8 位 MCU 都能干。要算平均功耗主控的睡眠电流就成了主导项这时候国产低功耗 MCU 值得重点看华大 HC32L196、HC32L110兆易 GD32L233国民技术 N32L4 系列中微爱芯的低功耗线深度睡眠基本都在 1 到 3µA 区间唤醒时间几十微秒够用。三角测距模块输出模拟电压需要一路 12 位 ADC 加查表逻辑对 MCU 的算力要求也不高。ToF 模组走 I2C这里有个容易忽略的坑不少 ToF 模组的 IO 电平是 2.8V 甚至 1.8V直接接 3.3V 的 MCU 长期工作会损伤模组。要么选 3.3V 兼容版本要么加电平转换别省这两毛钱。3. 硬件设计与实操把参数一个个算出来这一节是全文最“干活”的部分。我按发射侧、接收侧、结构、供电四块分开讲每块都给出计算过程和取值理由。3.1 发射侧限流电阻和驱动级怎么算红外发射管是电流驱动器件必须串限流电阻。公式是R (Vcc − Vf − Vce_sat) / If取一组实际参数Vcc 3.3V940nm 发射管在 100mA 下的 Vf 1.25V驱动三极管用 MMBT3904 或国产 S8050饱和压降 Vce_sat 0.15V目标 If 100mA。R (3.3 − 1.25 − 0.15) / 0.1 19Ω取标准值 18Ω。接着算电阻功率P If² × R 0.01 × 18 0.18W。0805 封装额定 0.125W不够会发烫甚至漂移。稳妥做法是用 1206 封装0.25W或者两个 36Ω 的 0805 并联成本差不多还更散热。再强调两个容易翻车的点。第一Vf 有负温度系数大约 −1.5mV/°C 到 −2mV/°C。温度升高时 Vf 下降同样的限流电阻会导致电流上升形成恶性循环。批量产品要么用恒流驱动要么在软件里根据温度反馈调整占空比。第二脉冲驱动可以超过直流额定电流但要严格看规格书的峰值允许条件。比如某国产发射管标注直流 100mA、峰值 1A脉宽 100µs、占空比 1%那就意味着峰值拉到 500mA 完全安全只是脉宽和占空比要守住。驱动级选型上小电流50mA用 NPN 三极管就行电流大或者要极低静态功耗用 N 沟道 MOSFET栅极加 100kΩ 下拉电阻防止悬空误导通。MOSFET 的选型重点是栅极阈值电压要低3.3V 驱动下 Vgs(th) 必须明显小于 1.5V否则关不断。3.2 接收侧光敏三极管还是光敏二极管光敏三极管内部有增益hFE 通常 100 到 1000负载电阻取 10kΩ 到 100kΩ 就能把光电流放大成毫伏到伏级信号直接进 ADC电路极简。代价是响应慢上升时间 15µs 到 100µs、线性差、温度系数大。光敏二极管线性好、速度快纳秒级、温度稳定但光电流只有纳安到微安级必须配跨阻放大器。运放可以选国产的 3PEAK、圣邦微 SGM 系列或思瑞浦的低失调型号注意输入偏置电流要小否则微安级信号会被吃掉。短距离、低功耗、低成本场景我的默认选择是光敏三极管 100kΩ 负载 ADC够用且便宜。采样时序是这块的灵魂顺序错了数据全是垃圾// 单次测量时序周期 100ms由 RTC 唤醒 led_on(); // t0: 打开发射管 delay_us(15); // t015us: 等 LED 上升沿稳定并等待接收管建立 adc_val_light adc_sample(); // 采亮值 led_off(); // 关闭发射管 delay_us(50); // 等接收管恢复暗态 adc_val_dark adc_sample(); // 采暗值 signal adc_val_light - adc_val_dark; // 差分扣掉环境光为什么要等 15µs因为接收管的响应时间常数 τ R_load × C_total。100kΩ 乘以约 20pF 的结电容和布线电容τ 大约是 2µs工程上取 5 到 10 倍 τ 才能进入稳定区所以 10 到 20µs 是合理区间。等太短读数偏低等太长白白浪费电。3.3 光串扰最容易翻车的地方光串扰指的是发射光没经过目标直接通过封装缝隙、PCB 表面、结构件内壁反射到接收管。后果是近距离饱和、盲区变大、动态范围被吃掉一大截。解法有四个层次封装层选带内置隔墙的封装比如插件式的反射式光电开关中间那堵黑色墙不是装饰是核心功能件。PCB 层发射和接收焊盘之间挖一条槽V-cut 或铣槽切断 PCB 表面的光路。这一步在打板时就要规划后期改不了。结构层发射管和接收管各加一个独立的遮光筒筒壁做哑黑处理。外壳用不透红外的黑色 ABS 或 PC。光轴层把发射管和接收管的光轴故意错开 5 到 15 度让两束光的交叉点落在 5 到 20 毫米的位置。这样近端的直接串扰被压低有效盲区能做到 2 毫米以内。这个技巧我用过很多次效果比堆结构件好。注意普通白色 ABS 对 940nm 红外光其实是半透的。如果你的外壳是白色的内部串光会非常严重必须在发射和接收之间加黑色挡墙。需要透红外的窗口用黑色透红外 PC 或亚克力板它能挡可见光同时让红外通过外观还是黑的一举两得。3.4 供电与去耦脉冲驱动的隐藏成本发射管脉冲点亮时瞬间从电源抽取上百毫安会在 Vcc 上产生尖锐的跌落和振铃。处理不好ADC 参考跟着抖读数自然乱。具体做法在发射管驱动回路近端并一颗 10µF 到 100µF 的低 ESR 钽电容或陶瓷电容位置离发射管不超过 5 毫米ADC 参考电压单独用 100nF 加 1µF 去耦模拟地和数字地单点连接别做成大面积共地环路。如果整机是电池供电还要算上 LDO 的静态电流。选静态电流 1µA 级别的低压差稳压器别用那种静态 50µA 的老型号否则前面辛苦省下的几十微安全白费了。4. 标定与实测把读数做准的完整流程硬件做完只是开始红外测距最耗时间的环节是标定。原因很简单发射管的辐射功率批次离散度能到 ±30%接收管增益离散度也有 ±20%两颗料凑一起同距离下的原始 ADC 值可能差一倍。4.1 两点标定加分段查表最省事的方案是分段线性查表。先采集一组已知距离的 ADC 值减去暗电平得到有效信号存成查找表。比如 0 到 30 毫米每 2 毫米一个点共 16 个点用 12 位 ADC 分 16 段查表加线性插值MCU 开销几乎为零比多项式拟合省算力也更好调。生产线上再做一次单点标定让产品对着固定的标准反射板比如 10 毫米处的白卡纸测出有效信号值和黄金样品的比值作为增益系数存进 Flash。运行时所有读数乘以这个系数一致性就能拉回来。4.2 温漂补偿的三种思路温度每升高 10°C红外发射管的辐射功率下降大约 5% 到 8%光敏三极管的增益变化可达 ±20%两者叠加出来的温漂很可观。补偿思路按成本从低到高排软件查表加一颗 NTC 采环境温度按温度区间乘不同系数。成本几分钱能压掉大部分漂移。参考接收管差分在发射管旁边固定一颗接收管只看发射管自身的发光强度作为参考通道。目标通道除以参考通道发射管的温漂和老化被同时消掉。增加一颗管子的成本效果最好。恒流驱动从根上锁住发射电流温度变化时电流不变。代价是恒流电路本身要消耗功耗对低功耗方案不友好。4.3 一组实测数据供参考下面这组数据来自某国产反射式对管工作条件为 3.3V 供电、If 100mA、占空比 0.03%、12 位 ADC3.3V 参考、采样距离从 2 毫米到 50 毫米目标分别是白纸、18% 灰卡和黑绒布。数据只代表量级不同批次会漂。距离 (mm)白纸 ADC灰卡 ADC黑绒布 ADC现象说明2395036202100接近饱和白纸已溢出5320029001450工作区上段1021001850720一致性最好的区间201050880260黑绒布信噪比开始变差3052043095黑绒布接近噪声底501209520基本埋在噪声里这张表能直接读出三个结论。第一反射率对读数的影响巨大白纸和黑绒布在 20 毫米处差了四倍所以任何声称“固定阈值就能判断距离”的方案都是在赌目标材质。第二有效工作区在 2 到 20 毫米30 毫米以上只有高反射目标勉强可用。第三黑绒布这类低反射目标在 30 毫米处信号只剩 95 个 LSB噪声一冲就没了这类场景要么提高发射功率要么换技术路线。5. 常见问题与排查速查表调红外模块八成问题集中在三类。我把这些年遇到的典型现象整理成表方便对着查。5.1 硬件类问题现象可能原因排查方法解决手段上电就没信号发射管极性接反用手机摄像头看是否有微弱发光交换发射管两极读数整体偏低限流电阻偏大或驱动管未完全导通串电流表测 If重算电阻换低 Vgs(th) 的 MOS近距离一直饱和光串扰严重遮住目标看暗电流是否偏高加隔光墙、挖槽、错开光轴读数随机跳电源纹波大示波器看 Vcc 脉冲跌落近端加 10-100µF 低 ESR 电容发热明显电阻功率不够或发射管常亮摸电阻温度测占空比换 1206 封装检查软件时序5.2 软件与算法类问题现象可能原因排查方法解决手段白天正常晚上乱未做差分采样对比亮值和暗值加亮/暗两次采样相减读数缓慢漂移温漂未补偿用手加热模块观察加 NTC 查表或参考通道不同样机差异大未做单点标定多台对照同一目标产线标定存增益系数强光下完全失效环境光饱和接收管手电筒照射测试换 940nm 加带通滤光片采样值间歇为 0ADC 采样在 LED 未稳定时缩短延时对比延长等待时间到 15-20µs5.3 结构与装配类问题现象可能原因排查方法解决手段装壳后性能骤降外壳透红外造成内部串光拆壳对比测试内部加黑色挡墙窗口起雾后失效窗口材料吸水或透红外差换材料对比用黑色透红外 PC侧面目标误触发接收管视场角过大转角度测试加遮光筒收窄 FOV长时间后灵敏度下降窗口积灰、发射管老化清洁后复测窗口做疏油涂层软件加自校准实操心得调试阶段先别装外壳。裸板测出基准曲线再装壳测一遍两次的差值就是结构带来的串光和遮挡损耗。我遇到过装壳后近距离增益掉了 40% 的情况最后发现是白色外壳内壁把发射光反射到了接收管上换黑色材料立刻恢复正常。6. 国产供应链与三套典型方案组合最后聊聊国产化这条路怎么走。做产品这几年最大的变化是短距离红外这条线上几乎所有环节都能找到国产选项而且价格和交期都比进口稳。6.1 器件层面的国产可选方向器件类别关键参数国产可选方向选型注意红外发射管850/940nm辐射强度视角国星光电、鸿利智汇、瑞丰光电、旭宇光电关注批次辐射强度离散度要求供应商给分档光敏三极管响应峰值、hFE、上升时间国内多家封装厂有兼容料hFE 离散度大产线必须标定光敏二极管响应度、结电容、暗电流同上暗电流要小否则弱信号被淹没驱动 MOSFETVgs(th)、Rds(on)、Ciss韦尔、长电、捷捷微3.3V 驱动必须选逻辑电平管运放/比较器输入偏置电流、失调3PEAK、圣邦微、思瑞浦跨阻放大要低偏置电流型号低功耗 LDO静态电流、PSRR南芯、圣邦微静态电流要 1µA 级别低功耗 MCU深度睡眠电流、唤醒时间华大 HC32L196/HC32L110、兆易 GD32L233、国民技术 N32L4看清唤醒后外设恢复时间ToF 模组量程、帧率、接口电平奥比中光、芯视界、北醒等必须确认 IO 电平和盖片要求有一点必须提醒光敏管的 hFE 离散度是所有参数里最难控的我见过同一批货里差三倍的情况。所以产线单点标定不是可选项是必选项。省掉这一步售后返修率会教你做人。6.2 三套可直接复制的方案方案 A超低成本有无检测0 到 15 毫米反射式对管 8 位 MCU 数字阈值输出。发射管脉冲驱动占空比 0.05%接收管接比较器直接出高低电平。BOM 控制在 1 元出头适合打印机、玩具、简单限位。缺点是阈值固定换目标材质要重调。方案 B电池供电低功耗测距0 到 30 毫米2Hz反射式对管 华大 HC32L196 100kΩ 负载 12 位 ADC 差分采样。发射管按 3.1 节参数配 18Ω/1206 限流电阻MOS 高侧开关控制。周期 500ms单次点亮 30µs实测平均电流约 50µA2000mAh 电池能撑一年半以上。加 NTC 做温漂补偿产线做单点标定。这套方案我用在智能卫浴项目上量产一致性没问题。方案 C中距离精确测距20 到 800 毫米两条路可选。预算紧的用三角测距模块加 ADC 查表成本几块钱但功耗高、刷新率低、近端有死区。要求高精度和数字输出的直接上国产 ToF 模组走 I2C量程和线性度都好代价是单价上去了而且结构上必须认真做光学窗口。6.3 选型时的四个自问每次有人问我“帮我推荐个型号”我都会先反问四件事回答完基本自己就能定了。第一量程的真实下限是多少很多人报“0 到 30 厘米”实际只要 5 到 15 厘米这一段那选型范围立刻缩小一半。记住所有光学测距模块在近端都有死区。第二目标是固定的还是变化的反射率会不会变如果被测物有黑色、镜面、透明三种反射式基本没戏得换三角或 ToF。第三平均功耗预算是多少先算出电池容量除以期望续航得到允许的平均电流再反推能不能用这个方案。这一步能砍掉一大半不靠谱的选项。第四结构上有没有空间做遮光如果产品已经定死只留了一个 3 毫米的孔那再好的模块也发挥不出来。结构必须和电路一起定。说到底红外测距模块的选型从来不是挑一颗最好的料而是在量程、精度、功耗、成本、结构空间这五个约束里找那个唯一可行的交点。我自己的习惯是先拿现成模块搭一个最小验证板在真实光照和真实目标下测两天数据不对再换路线比在选型表上纠结一周有用得多。另外提醒一句调试期一定把暗电平和亮电平都记录下来这两个数字能帮你在后面几乎所有异常里快速定位原因——是环境光变了还是发射侧衰减了一看差分值就知道。
返回列表