多彩编程 多彩编程MZPH · CODE BLOG
ARTICLE DETAIL

文章详情

深耕前端与后端开发技术的一线实战笔记与踩坑复盘。

BPW34F红外光电二极管:跨阻放大、光路与调试实战

BPW34F红外光电二极管:跨阻放大、光路与调试实战 BPW34F 这颗红外光电传感器我在三个完全不同的项目里都用过一次是给一台小型浊度计做透射光接收一次是做红外反射式的雨滴检测还有一次是搭一个 38 kHz 调制的光电计数前端。它的定位很清晰——一颗大面积、PIN 结构的硅基光电二极管感光区接近 7 平方毫米光谱覆盖可见光到近红外峰值灵敏度落在 850 到 900 纳米这一段。它便宜、皮实、资料齐全属于那种你随手就能在元件盒里翻出几颗的通用器件。但问题也恰恰出在通用这两个字上。很多人第一次用它的方式是把一端接电源、一端接个电阻、然后用单片机 ADC 读电压结果发现输出要么一直贴着轨要么在日光灯下跳得没法看要么明明有红外光打上去却只有几毫伏的变化。这些现象我都遇到过而且每一个都不是器件坏是用法不对。下面我把自己从选型、原理、电路、光路到调试这一路的经验拆开讲一遍包括那些手册上不会写、但会让你在调试台前坐到凌晨两点的细节。1. 需求倒推选型为什么最后落在 BPW34F 上1.1 先问清楚自己要测的是有没有光还是多少光这是选型的分水岭。如果你的需求只是判断前面有没有挡住那用光电三极管甚至红外对管更省事输出直接是电平不需要外界运放。但如果你要的是光功率的量化值——比如浊度计要区分 0.5 NTU 和 2 NTU 的差别或者脉搏波要提取出交流分量只有直流千分之几的微弱起伏——那必须用光电二极管因为它在线性度和动态范围上比光电三极管高一个数量级。BPW34F 属于后者。它输出的是电流不是电压而且这个电流在一个相当宽的范围内与入射光功率成正比。光强从几个勒克斯到几万勒克斯线性度都能保持在比较可接受的范围内。这一点非常关键光电三极管在大光强下会明显压缩而且它的响应时间和光强有关做定量测量时误差很难控制。1.2 BPW34F 和它几个常见替代品的横向对比我把手上实际用过的几款放在一起做了个表这里的数字是量级参考具体参数一定要以你手上那一批的官方数据手册为准| 器件 | 类型 | 感光面积 | 响应速度 | 线性度 | 典型场景 | | BPW34F | PIN 光电二极管 | 约 7 mm² | 百纳秒量级反偏 | 好 | 定量测量、脉冲探测 | | 普通透明封装 BPW34 | PIN 光电二极管 | 约 7 mm² | 同上 | 好 | 通用但强光下易饱和 | | SFH203P 系列 | PIN 光电二极管 | 约 1 mm² | 很快 | 好 | 高速通信、窄脉冲 | | 光电三极管如 BPW77 | 三极管 | 小 | 微秒级 | 一般 | 开关检测、低成本 | | 光敏电阻 GL55 系列 | 光导型 | 大 | 几十毫秒 | 差、非线性 | 光控开关、玩具 |从表里能看出我的取舍逻辑感光面积大意味着在同样光照下能拿到更大的电流前端放大倍数可以降下来噪声压力小但面积大也意味着结电容大速度会变慢。BPW34F 正好站在面积够大、速度够用这个甜点位上。1.3 深色封装带来的实际差别以及一个必须澄清的坑我手上这批 BPW34F 是深色、接近黑色的环氧封装可见光透过率被压得很低主要透过近红外。这个特性和透明封装的版本在强日光下的表现差异非常大——透明封装在户外几乎立刻就饱和了深色的还能工作。但这里有个坑要说清楚同一系列的封装和滤光层在不同批次、不同后缀之间是有差异的命名规则并不能 100% 推出手上有滤光层这个结论。我吃过一次亏是照着一份别人的电路抄对方用的是透明版本我手上是深色版本结果灵敏度差了接近一个数量级白白怀疑了半天自己的运放。提示拿到一批新料第一件事是拿一个已知波长的 LED 和一个玻璃片搭个简易测试台用示波器看一眼不同颜色 LED 照射下的相对响应五分钟就能确认你手上这颗的光谱倾向。2. 把 PIN 结拆开看灵敏度和速度之间的那笔账2.1 光生电流是怎么产生的硅材料的禁带宽度大约 1.12 电子伏对应的截止波长在 1100 纳米附近这就是为什么硅光电二极管在 1100 纳米之后基本没响应。当光子能量大于禁带宽度时它在耗尽区里被吸收激发出一对电子-空穴对耗尽区里存在内建电场这对载流子会被迅速分开电子往 N 区跑、空穴往 P 区跑外电路就出现了电流。PIN 结构的关键在那个I——本征层。中间的这块高阻本征层把耗尽区做得更厚光子在耗尽区内被吸收的概率大大提高量子效率随之上升同时因为大部分区域都是耗尽区载流子不需要靠扩散慢慢挪到结区响应速度也就上去了。这就是为什么同样面积的器件PIN 结构比普通 PN 结快得多。反向偏压的作用就在这儿它把耗尽区进一步拉宽同时把结电容降下来。两个好处叠加速度和线性度都会改善——代价是暗电流上升、噪声变大。所有的取舍都围绕这一点展开。2.2 结电容和负载电阻决定了你的带宽上限这是我觉得最值得反复强调的一点。光电二极管本身没有带宽这个指标它的带宽是你和负载电阻一起决定的。整个输入节点上的总电容包括三部分光电二极管自身的结电容、运放的输入电容、以及 PCB 走线和焊盘的寄生电容。典型情况下一个 1 兆欧的反馈电阻配上 25 皮法的总输入电容-3dB 带宽只有 6 kHz 出头。算一遍就明白了。RC 时间常数 τ R × C 10⁶ × 25×10⁻¹² 25 微秒对应的 -3dB 带宽是 1/(2πτ)大约是 6.4 kHz。这个数字意味着如果你的目标是探测 100 微秒级的窄脉冲用 1 兆欧的跨阻是绝对不够的——波形会被严重削平峰值也测不准。我写了个小脚本专门用来做这类快速估算改几个参数就能看到结论import math Rf 1e6 # 反馈电阻欧姆 Cin 25e-12 # 二极管结电容 运放输入电容 寄生电容法拉 GBW 10e6 # 运放增益带宽积Hz f3db 1 / (2 * math.pi * Rf * Cin) Cf math.sqrt(Cin / (2 * math.pi * Rf * GBW)) fmax math.sqrt(GBW / (2 * math.pi * Rf * Cin)) print(f未补偿时的 -3dB 带宽: {f3db/1e3:.2f} kHz) print(f建议的反馈补偿电容 : {Cf*1e12:.2f} pF) print(f补偿后可用的带宽 : {fmax/1e3:.1f} kHz)跑出来结果是无补偿带宽 6.37 kHz补偿电容约 0.63 皮法加补偿后可用带宽约 252 kHz。这三个数字基本决定了我的电路长什么样。0.63 皮法这个量级已经小到不能用电容实现了只能用两个焊盘之间的寄生电容凑——这就是为什么高频跨阻放大器的反馈网络上经常看到两个悬空的铜焊盘。2.3 反偏电压换来的不只是速度很多教程只说反偏能提速但没说代价。下面这张表是我自己在不同反偏下测出的量级变化| 反偏电压 | 结电容量级 | 暗电流量级 | 相对速度 | 适用场合 | | 0 V光伏模式 | 约 70 pF | 亚纳安 | 慢 | 精密光功率、低噪声 | | 3 V | 约 25 pF | 1 nA 上下 | 快 | 通用跨阻放大 | | 10 V | 约 20 pF | 数纳安 | 更快 | 脉冲探测、通信 | | 30 V | 更低 | 十几纳安且温漂明显 | 最快 | 高速窄脉冲 |关键结论是反偏从 3 伏加到 10 伏电容只降了很小一截速度提升有限但暗电流却涨了好几倍。所以除非你真的需要那点速度3 到 5 伏反偏是最划算的工作点。我从 10 伏降到 5 伏之后暗电流带来的零点漂移问题直接消失了。还有个容易忽略的点暗电流对温度非常敏感大致每升高 10 摄氏度就翻一倍。夏天在密闭机箱里做长时间测量零点慢慢往上爬很可能就是这个原因而不是电路坏了。我的做法是留一个机械遮光盖采集前先遮一次做零点校正比任何温度补偿电路都实在。3. 两种接法的实战差异与跨阻放大器的落地设计3.1 光伏模式低噪声但慢光伏模式就是把光电二极管当电池用两端不加大偏压直接接运放的虚地或者一个大电阻。优点是暗电流极低、噪声小、线性度最好因为它工作在最理想的条件下。缺点是结电容维持在最高值速度慢而且是零偏运放的输入失调电压会直接成为误差源。我通常在两种场景下用光伏模式一是测极其缓慢的光强变化比如透光率随溶液浓度变化的趋势曲线二是需要极低噪声的场合比如测量微弱到皮安级的稳定光电流。除此之外我都用反偏。3.2 光导模式什么时候必须反偏当你要探测的是脉冲、是调制信号、是需要在强背景光下分辨出快速变化的场合就必须上反偏。反偏把结电容压下来带宽上去了同时因为耗尽区变宽光生载流子被收集得更快脉冲前沿不再拖尾。但反偏模式有个隐患由于有直流偏置暗电流会成为一个固定的直流分量被跨阻放大器放大后吃掉一部分输出摆幅。假设暗电流是 5 纳安反馈电阻 1 兆欧输出端就直接多了 5 毫伏的偏置。听起来不多但如果你后面接的是 12 位 ADC参考电压 3.3 伏一个 LSB 大约 0.8 毫伏这 5 毫伏就是六七个码位的固定偏移而且还会随温度漂。3.3 跨阻放大器的参数选择与运放挑选跨阻放大器的核心公式很简单输出 光电流 × 反馈电阻。但真正的难点在于选一颗合适的运放。对于 1 兆欧以上的反馈电阻运放的输入偏置电流必须足够小否则它会在反馈电阻上产生一个比光电流还大的误差电压。我踩过的坑是拿一颗通用运放试水输入偏置电流在几十纳安量级输出直接顶到轨还以为光电管装反了。后来换成 CMOS 或 JFET 输入的低偏置运放问题立刻消失。选型时我主要看这几个参数输入偏置电流1 兆欧反馈电阻下至少要在皮安量级纳安级就基本不能用了。增益带宽积要在目标带宽的十倍以上给补偿留余量。输入电压噪声低频段要低不然会淹没微弱信号。单电源工作能力如果是便携设备这点很重要。反馈电阻的选择就是带宽和灵敏度的直接权衡。100 千欧能换来大约 64 kHz 的带宽但输出信号只有 1 兆欧的十分之一。如果光电流本身足够大——比如在几千勒克斯的照明下 BPW34F 能输出几十微安——那 100 千欧就是更聪明的选择。反过来如果信号是纳安级的那只能上大电阻然后接受带宽的下降用多次平均或者锁相的方式来换信噪比。这中间没有标准答案取决于你的信号有多弱、有多快。4. 光路设计比电路更容易翻车的地方4.1 视场角与遮光筒BPW34F 的感光面接近 3 毫米见方不加任何遮光时它的接收角非常宽接近半球。这在很多场合是灾难——你想测的是正前方那束光结果它把侧面的环境光全收进来了。最省钱有效的做法是加一段黑色遮光筒。筒的长度和内径决定了接收角粗略地说接收半角约等于反正切(半径/长度)。用一个 5 毫米内径、20 毫米长的黑色塑料管半角大约 7 度方向性立刻变得很干净。我用的是黑色热缩管剪一段套上去成本几乎为零效果非常明显。有个细节值得注意筒的内壁必须做消光处理否则光在筒内多次反射会形成一圈光晕式串扰看起来像灵敏度提高了实际是杂散光。如果手头没有消光材料用磨砂的黑纸卷一层也行。4.2 调制与解调把环境光从数据里赶出去环境光是直流或者低频的太阳光是纯直流日光灯有 100 赫兹的闪烁。如果你的信号是 1 千赫兹以上的调制光那两者在频域上天然分离用一个高通滤波或者同步解调就能干净地分开。我常用的做法是把红外发射管用 1 到 2 千赫兹的方波驱动接收端在跨阻放大器之后接一个带通或者更省事——直接在单片机里做同步解调在 LED 亮的时候采样一次灭的时候采样一次两次相减。这一招对消除环境光非常有效实测在接近 2 万勒克斯的室内强光下仍能分辨出微弱的反射信号。下面是这个思路的伪代码示意// 1kHz 调制 同步解调的极简实现 #define LED_PIN 9 #define SAMPLE_N 64 #define HALF_US 500 // 半周期 500us对应 1kHz long sum_on 0, sum_off 0; for (int i 0; i SAMPLE_N; i) { digitalWrite(LED_PIN, HIGH); delayMicroseconds(HALF_US / 2); sum_on analogRead(A0); // 灯亮时采样 delayMicroseconds(HALF_US / 2); digitalWrite(LED_PIN, LOW); delayMicroseconds(HALF_US / 2); sum_off analogRead(A0); // 灯灭时采样 delayMicroseconds(HALF_US / 2); } long diff (sum_on - sum_off) / SAMPLE_N; // 环境光被差分抵消这个结构舍弃了速度和相位信息但换来了极强的抗环境光能力。要注意两次采样的间隔必须尽量一致否则会引入与调制频率相关的伪信号——如果采样抖动不可避免那就把调制频率降下来让抖动相对于周期足够小。4.3 发射管波长与接收管的配合以及串扰的物理隔离我用 850 纳米和 940 纳米两种红外发射管做过对比同样驱动电流下BPW34F 对 850 纳米那一颗的响应明显更强因为 940 纳米已经偏离了它的峰值灵敏度一段距离。但 940 纳米的优势是红爆几乎看不见做外观件的时候视觉上更干净。这是个典型的工程取舍看你更在意灵敏度还是外观。另一个必须处理的问题是发射到接收的串扰。发射管发出的光不经被测目标就直接漏到接收管上会形成一个大得多的直流背景把有用信号压得很小。解决方式有三种一是加隔光挡板物理上断开光路二是把发射管和接收管在空间上拉开、各自加遮光筒让它们的光锥只在目标处相交三是靠调制只取反射回来的那部分被调制光。我一般三种都用隔光挡板是最便宜的那一道防线。5. 调试台前的真实排查链路5.1 输出一直在漂先怀疑暗电流和温度再怀疑电路有一次我做的是长时间连续的浊度监测开机半小时后零点慢慢往上爬两小时漂了大半格。我第一反应是运放温漂换了低温漂运放问题还在。第二反应是电源不稳换成电池供电问题还在。后来用黑布把探头整个盖住零点依然在爬这就排除了杂散光。最后把反偏从 10 伏降到 4 伏漂移立刻降了一个数量级。根本原因就是暗电流随偏压和温度上升而机箱内部温度在运行后会升高十几度。这件事教会我一个顺序定量测量类项目里先看暗电流和热设计再怀疑电路拓扑。5.2 输出被 50 赫兹和日光灯污染从布线和屏蔽下手现象很典型示波器上叠加着一个 50 赫兹的正弦或者 100 赫兹的锯齿。这是工频和日光灯闪烁被接收进来的。排查顺序我是这样的把光电二极管用黑胶带完全包住如果干扰还在说明是从电源或地线进来的不是光进来的。如果是电进来的先看反馈电阻周围有没有长走线输入端有没有大面积裸露的铜皮。输入节点是高阻节点一丁点漏电流都会变成误差。检查运放的电源退耦电容是不是离得太远。高阻跨阻放大器的电源抑制比在这个节点上是很脆弱的。如果是光进来的那就是遮光没做好回去加遮光筒、加带通。这里有个我想强调的经验高阻节点上的助焊剂残留是真实的漏电通路。我用超声波清洗过 PCB 之后同一块板的暗电流读数明显下降。所以如果条件允许输入节点下方最好做开窗处理、不铺铜、不盖阻焊并且装配后清洗一次。5.3 脉冲前沿拖尾带宽不够别急着换器件探脉冲的时候如果发现上升沿明显变缓、峰值偏低绝大多数情况不是器件坏而是整个接收链路带宽不足。用前面那个脚本算一遍就知道理论带宽是多少然后对着示波器上的实际上升时间做对比。上升时间和带宽的经验关系是 0.35 除以带宽所以如果你实测上升时间是 50 微秒对应的带宽大概就是 7 千赫兹——和 1 兆欧配 25 皮法的计算结果完全吻合。解决办法就那么几个降反馈电阻、把结电容降下来加反偏、换增益带宽积更高的运放、减小寄生电容。这四条按性价比排序我通常先试降反馈电阻因为改一个元件就行。5.4 PCB 布局上的几个硬规矩前面提到的所有问题一半以上可以在画板阶段就规避掉。我总结了四条自己一直遵守的规矩光电二极管的阴极到运放反相输入端的这截走线能多短就多短最好控制在几毫米内并且远离任何开关信号。反相输入端下方不铺地、不铺电源做净空处理。地平面在这里是电容会牺牲带宽。敷铜做保护环接到和输入端同电位的参考上把表面漏电流引走。这个技巧在皮安级测量里几乎是必需的。反馈电阻和补偿电容紧紧贴着运放放不要形成环路面积。焊接的时候也提醒一句红外光电二极管的引脚极性不要靠长短脚判断不同批次、不同封装的标识并不统一我自己就遇到过一次反接表现为输出无变化但也不发热非常难察觉。正式焊接前用万用表的二极管档确认一下正反向压降几秒钟的事。6. 几种我实际跑通的应用及其关键参数6.1 透射式浊度与浓度测量这是 BPW34F 最舒服的场景之一。用一个 850 纳米的发射管对着它中间放样品测透过率。因为发射用的是近红外样品本身的颜色带来的误差会小很多这对测量有色溶液很有意义。关键在于线性范围。光强和浓度是指数关系比尔-朗伯定律所以高浓度端的信号会变得非常微弱需要大反馈电阻。但大反馈电阻又意味着带宽低而这里反正是准静态测量带宽低完全无所谓。我在这里用的是 1 兆欧甚至 10 兆欧的反馈电阻配合多次平均能分辨非常小的透过率变化。6.2 反射式雨滴与液滴检测发射管和接收管同侧放置中间加隔光挡板。干燥时接收管只收到极微弱的杂散光落上水滴后水滴像一个小透镜把光折回来接收信号突然跳变。这个结构的好处是安装方便不用穿透被测面。调试要点是隔光挡板的角度。挡板太高会挡住反射光太低则串扰太大。我的做法是先把挡板拆掉记录串扰基线的幅值然后一点点加高直到基线降到原来的十分之一左右同时用一滴水确认信号还能触发。这个手动找最优的过程比任何计算都可靠。6.3 光脉冲与调制信号的接收前端在这个场景里 BPW34F 的大面积是优势因为它能收集更多的光能量前端不需要太高的增益。1 千赫兹到几十千赫兹的调制信号它完全跟得上配合前面说的同步解调可以做到很强的抗干扰能力。我把这三种应用的参数整理成了对照表方便直接抄| 应用 | 工作模式 | 反馈电阻 | 调制 | 主要难点 | | 透射式浊度 | 光伏或 3V 反偏 | 1 到 10 兆欧 | 无或低频 | 长期零点漂移 | | 反射式雨滴 | 3V 反偏 | 100 千欧 | 1 kHz | 发射接收串扰 | | 调制信号接收 | 3 到 5V 反偏 | 100 千欧到 1 兆欧 | 1 到 40 kHz | 环境光与带宽 |6.4 与激光回波探测的配合如果需要接收的是激光回波这类纳秒级窄脉冲BPW34F 的结电容就偏大了这时候通常要选面积更小的型号。但如果回波本身是微秒级、而且光能量很弱它的面积优势反而更重要配上合适的高速运放也能做出可用的方案。我的经验是先算清楚回波的时间宽度再决定用哪一档器件不要一上来就追求最快的。7. 最小验证电路与上电检查顺序我每次拿到一批新料或者做新板子都会先搭一个最小的验证电路走一遍确认器件和链路都正常再往正式项目里塞。这个流程帮我省下过很多时间。最小电路只需要这几样东西一颗 BPW34F、一颗低偏置运放、一个 1 兆欧反馈电阻、一个 100 纳法的电源退耦电容、一个 3 到 5 伏的干净电源。用一个红外 LED 串 1 千欧电阻接在另一个电源上作为光源示波器接运放输出。上电之后就按这个顺序检查| 观察到的现象 | 最可能的原因 | 处理方式 | | 输出一直贴正轨 | 光电管接反、运放偏置电流过大 | 确认极性换低偏置运放 | | 输出一直贴负轨 | 反馈电阻开路、运放供电异常 | 逐个测量结点电压 | | 有光无光输出都不变 | 遮光过度或光源波长不匹配 | 换 850 nm 光源验证 | | 输出随温度缓慢漂移 | 暗电流、反偏过高 | 降反偏加零点校正 | | 波形前沿明显变缓 | 带宽不足 | 降反馈电阻或加反偏 | | 叠加 50/100 Hz | 工频或照明干扰 | 加遮光、加调制、检查退耦 |上电顺序上我有个习惯先用万用表量运放两个输入端的电压差正常应该在毫伏以内。如果差了几十毫伏甚至更大说明输入节点的漏电或者偏置电流已经超出预期这时候别急着看波形先把静态工作点解决掉。很多看起来波形不对的问题本质都是静态工作点先崩了。最后分享一个我自己常用的判断方法用手机摄像头对着工作中的红外发射管拍一张照片。摄像头的传感器对近红外有响应能直接看到发射管是不是真的在发光、亮度是否均匀。这个土办法解决过我至少两次信号不对的困惑一次是驱动电路的限流电阻虚焊一次是发射管本身已经损坏。花十秒钟拍张照比拿着万用表在板上戳半天快得多。
返回列表