
做光电传感器信号调理的时候很多人的第一反应是找个运放搭一个常规放大电路结果发现输出不是飘就是振。我前段时间用光电二极管搭了一套测量扭摆周期的装置指望用普通反相放大器把光电流变成电压试了好几版都不理想后来把眼光从通用运放电路挪到跨阻放大器TIA上噪声、带宽、稳定性这些问题才算真正捋顺。这篇文章就把我实测过程中踩过的坑、算过的参数、换过的元件以及最终定型的电路方案完整分享出来给要做光电传感器前端、光电检测、精密电流测量的朋友一个可以直接抄作业的参考。很多资料把跨阻放大器讲得很玄实际说白了就是“用运放把一个微弱电流信号转换成一个电压信号”而光电二极管、光电倍增管这类传感器恰恰是典型的电流输出型器件。你要做的不是把它接到电阻上再放大电压而是直接用TIA完成电流到电压的转换和一级放大。下面我从光电二极管的本质开始讲再逐步展开实际电路、选型计算和实测调参过程。1. 光电二极管的信号为什么难伺候先说清楚电流源与电压源的差别1.1 你惯用的反相加法器、同相放大电路为什么接上去就飘搞过运放的人对反相放大器、同相放大器、加法器这些经典电路都很熟信号源是电压源输出等于输入乘一个由电阻比决定的增益。问题是光电二极管不是一个电压源它的输出特性更接近一个受光强控制的电流源。你把一个电流源硬接到一个以“虚地为零伏”为前提的电压放大电路里运放的输出当然会表现出各种奇怪行为。最典型的现象是光照固定时输出电压随供电电压、温度漂移稍微有一点环境光变化输出就跟坐过山车一样用手靠近电路板读数都会跳。本质原因在于普通电压放大电路的输入阻抗虽然从运放反相端看进去大约是零但反馈网络和偏置电压会强迫电流走一条本不该走的路径同时运放自身的输入偏置电流、偏置电压温漂全部叠加到信号里导致微小的光电流往往是nA到µA级别被这些误差源淹没。另一个隐蔽问题是阻抗匹配。光电二极管在零偏置时等效内阻很高几十MΩ到GΩ级你如果拿它并联一个几kΩ的取样电阻再进电压放大器光电流大部分被取样电阻旁路输出灵敏度低得可怜取样电阻如果加大到MΩ级又和光电二极管的结电容、运放输入电容形成一个大RC常数响应慢而且容易振荡。死循环。1.2 光电流、暗电流和结电容三个绕不开的固有参数要设计好光电传感器的前端必须先背熟光电二极管的三个固有参数它们决定了你电路的增益量级、动态范围、噪声和带宽极限。光电流 (I_P)受光强线性控制的电流。普通硅光电二极管在常见光照下输出电流从几十nA到几mA都有可能在激光测距、脉冲检测场景下瞬态电流甚至可以达到几十mA。做测量类应用时先估算你信号的最小值和最大值这直接决定反馈电阻 (R_F) 的取值。暗电流 (I_D)没有光照时流过结的漏电流。零偏置时光电二极管的暗电流通常很小pA级到nA级但一旦加反向偏置暗电流会指数上升而且温度每升高10°C大约翻一倍。精密测量尽量用零偏置或者做暗电流补偿。结电容 (C_D)光电二极管PN结的电容与芯片面积和反偏电压有关。大面积光电二极管结电容动辄几百pF小面积的大约几pF到几十pF。结电容直接参与TIA的稳定性计算是很多人忽略的元凶。这三个参数中最容易坑人的就是结电容。很多人在TIA中只盯着增益电阻 (R_F) 选大小结果电路振荡第一反应是“运放太慢”换成GBW更大的运放振荡反而更厉害。实际上问题很可能出在输入电容和反馈电容的匹配上。1.3 普通运放测光电流的两种错误姿势以及它们的失败表现我见过不少第一次做光电检测的工程师包括我自己都走过这两种弯路第一种把光电二极管跨接在运放同相端加个采样电阻做电压放大。优点是电路简单、直觉好懂缺点是同相端输入阻抗很高外部噪声、工频干扰全吃进来而且运放共模电压范围限制很死光电二极管偏置稍一变化输出就非线性。这种电路更适合做低速光强指示不适合做精密测量。第二种用反相放大器结构光电二极管一端接虚地、一端接信号反馈电阻兼作增益电阻。这个思路其实已经靠近TIA了但很多教程会直接把反馈电阻并联一个用于“滤波”的大电容然后发现带宽没了或者直接不安置反馈电容导致高频自激。还有人在反相输入端对地加一个很大的滤波电容结果把光电二极管的结电容又并联大了整整一个量级电路彻底变成积分器脉冲信号全部钝化。真正靠谱的做法是明确承认光电二极管是一个电流源把电流直接注入运放反相端的虚地节点用反馈电阻 (R_F) 决定跨阻增益用反馈电容 (C_F) 控制带宽和相位余量。这就是跨阻放大器。2. 跨阻放大器的工作原理虚地、跨阻增益与噪声增益三者怎么拉扯2.1 核心结构一个电阻把电流变成电压但事情没这么简单TIA的基本结构可以用一句话概括光电二极管阳极或阴极接运放反相输入端正相输入端接一个低噪声基准电平通常是地或一个精密偏置反馈电阻 (R_F) 跨接在输出与反相端之间同时并联一个反馈电容 (C_F)。由于运放的虚地特性反相输入端被维持在接近正相输入端电平的位置光电二极管两端电压几乎恒定光电流不经过任何负载电阻全部通过反馈电阻 (R_F) 流向输出输出电压满足[ V_{OUT} I_{IN} \times R_F ]这就是跨阻增益的物理意义。你不需要在这个电路之后再串联一个电压放大器(R_F) 本身就把“电流信号”放大了。但“一个电阻”背后藏着三个矛盾。第一(R_F) 越大跨阻增益越高但你需要的运放GBW增益带宽积也越高噪声增益在转折频率后的提升也会叠加运放本身的电压噪声。第二反相输入端对地存在一个总输入电容 (C_{IN})包含光电二极管结电容、运放差模输入电容、共模输入电容和PCB走线杂散电容它对交流信号是一条低阻抗路径会吃掉落在 (R_F) 上的高频增益。第三运放的开环增益是随频率下降的输入电容又带来额外相位滞后不加补偿电路就是一个振荡器。2.2 反馈电容 (C_F) 的作用不是滤波是保命很多人一看到反馈电容就以为它只是低通滤波实际上它在TIA里承担着稳定环路的任务。如果不加 (C_F)(R_F) 和 (C_{IN}) 会在反馈网络中制造一个极点频率位置是[ f_P \frac{1}{2\pi R_F C_{IN}} ]这个极点让反馈系数 (\beta) 从该频率开始以20dB/dec的斜率下降而运放开环增益 (A_{OL}) 本身也在以20dB/dec下降两者曲线相交时相对速率是40dB/dec相位余量几乎为零电路发生高频振荡。这就像一辆车在下坡路段还遇到一个坡度突然翻倍的急转弯不翻车才怪。解决办法是并联并联反馈电容 (C_F)它在反馈网络中引入一个零点频率大约在[ f_Z \frac{1}{2\pi R_F C_F} ]当 (f_Z) 小于发生振荡的频率时反馈系数的下降趋势被拉住(A_{OL}) 和 (1/\beta) 曲线相交时相对速率回到20dB/dec环路恢复稳定。工程上常用一个近似公式估算初始 (C_F)[ C_F \approx \sqrt{\frac{C_{IN}}{2\pi R_F \cdot GBW}} ]更保险的做法是先计算目标闭环带宽 (f_{BW})然后让 (f_Z) 约等于这个带宽即[ C_F \frac{1}{2\pi R_F f_{BW}} ]我给光电探测器选初始值时一般先按这个公式算出来再在实测中用示波器观察阶跃响应过冲把 (C_F) 往大或往小微调。过冲越大说明相位余量越小把 (C_F) 加大一点如果输出上升沿圆得过分、带宽牺牲太多就把 (C_F) 减小。这套试凑法在工程上非常实用。2.3 用circuitjs快速验证电路运放增益设置成多大的疑问在动手打板之前我习惯先在电路仿真工具里把TIA的稳定性粗看一遍。有人会问circuitjs里运放增益该怎么设置需不需要设成无穷大。我的经验是仿真TIA时运放开环增益设成默认值几十万、几百万都行直接写1e9也可以因为负反馈回路会把闭环增益牢牢固定下来真正限制增益的是 (R_F) 而不是运放开环增益。你更应该关注的是反馈网络中 (R_F) 和 (C_F) 的相对位置以及运放模型本身的GBW有没有被简化。用circuitjs看TIA稳定性有个小技巧输入接一个阶跃电流源观察输出电压波形是否振荡、过冲多大。如果过冲超过20%就把 (C_F) 加大。对于只有两个极点模型的无脑理想运放仿真结果和实际电路有一定差距主要差在运放高频极点、输出阻抗和电源抑制比上所以仿真只能用来验证带宽和稳定性的大方向不能替代实测这一点要记牢。3. 实测电路分享从光电二极管到可采样电压的全链路设计3.1 完整电路图与元件清单含选型理由我最终定型的电路是一个典型三段式结构光电二极管零偏置接入TIA输出进二阶低通滤波器再进ADC或者比较器。这里分享的是第一版和第二版综合后的最终形态元件清单和选型理由如下表模块元件选型理由光电传感器光电二极管大面积硅PIN光电二极管(C_D \approx 30pF)响应速度够快结电容适中核心运放FET输入运放OPA2388 / OPA140级别输入偏置电流低至pA级GBW足够反馈电阻(R_F)1MΩ10MΩ精密薄膜电阻决定跨阻增益低温度漂移低噪声反馈电容(C_F)39pF先算后调稳定环路且限制带宽电源去耦100nF 10µFX7R陶瓷电容 钽电容抑制电源噪声和瞬态干扰后级滤波二阶有源低通单位增益Sallen-Key截止约100kHz滤掉带外噪声同时作缓冲以1MΩ反馈电阻为例光电流 (1µA) 时输出 (1V)对于测扭摆周期这类应用足够。如果你测的是极弱光需要把 (R_F) 加大到10MΩ甚至100MΩ这时候PCB绝缘电阻、防潮涂覆、表面漏电流都会成为新敌人尽量在焊盘之间净空、加“守护环”走线。电路连接细节光电二极管阴极接运放反相输入端阳极接地。这保证了光电二极管两端电压强制被运放虚地维持在0V附近处于零偏置状态暗电流最小线性度最好。如果你想加快响应速度可以把阴极接负电压阳极接反相端让光电二极管反偏但代价是暗电流和噪声都会上升这个取舍要视应用而定。3.2 带宽指标倒推GBW、SR预留余量怎么算这是我最想强调的一段。TIA设计里有几个指标是相互捆绑的(R_F)、(C_{IN})、目标带宽 (f_{-3dB})、运放GBW、压摆率SR必须一起算不能只盯着静态增益。先算总输入电容[ C_{IN} C_D C_{diff} C_{cm} C_{PCB} ]我用OPA2388时(C_D30pF)、差模输入电容约4pF、共模电容约4pF、PCB走线杂散约5pF合计约43pF。如果要求闭环带宽 (f_{-3dB}100kHz)(R_F1MΩ)那么满足这个带宽所需的运放GBW大约为[ GBW_{min} \approx 2\pi f_{-3dB} R_F C_{IN} ]代入得 (2\pi \times 100k \times 1M \times 43pF \approx 27MHz)。这只是一个下限考虑到相位余量和环路增益衰减我实际选GBW在40MHz以上的运放留下1.5到2倍余量。注意GBW不是越大越好因为更大的GBW会把更高频的噪声引入闭环同时可能把未补偿前的高频极点推得更危险必须配合合适的 (C_F) 一起调整。再算压摆率SR。如果输出最大摆幅是3V最高信号频率按100kHz算按正弦波的最低要求[ SR_{min} 2\pi f V_{p} 2\pi \times 100k \times 3V \approx 1.9 V/\mu s ]但实测中我遇到的是光电传感器受遮挡后的阶跃跳变输出电压在几个微秒内从0跳到2.5V这需要[ SR_{min} \frac{\Delta V}{\Delta t} \frac{2.5V}{2\mu s} \approx 12.5V/\mu s ]所以SR和GBW一样也要看最坏情况按阶跃响应计算再留3到5倍余量。之前我看到有人拿GBW很低的通用运放搭TIA正弦波带宽似乎够用但光脉冲一来输出就变成三角波就是SR没算够的表现。3.3 后级处理TIA输出接第二级增益与滤波双运放的连接顺序TIA输出通常是负电压反相结构形状是放大的光电流脉冲。我习惯在后面加一级二阶低通滤波再接ADC或比较器。很多人会问两级运放能不能先同相再反相实际顺序我建议这样第一级TIA负责电流转电压这一级增益高第二级低通滤波器或增益级做信号整形和限带。两级之间尽可能用直流耦合如果TIA输出有直流偏置来自暗电流和运放偏置电流的乘积后级就需要处理这个直流电平。可以用加法器注入一个反向补偿电压把暗电流引起的直流偏置抵消掉。这个加法器其实就是运放求和电路在第二级同相端引一个精密基准电压通过电阻网络加权求和把暗电流底子拉回零。两级连接时注意不要让第二级的输入电容“回头看”TIA输出。TIA输出和滤波器之间的走线要短中间如果必须跨接电阻电阻值不要太大控制在1kΩ到10kΩ量级并加一个小电容到地作为防振措施。4. 选型与调试中的高频坑NE5532、RFI整流与偏置电流三座大山4.1 为什么有人拿NE5532做TIA能用与好用的界限在哪NE5532是运放里的老熟人了价格便宜、噪声低、驱动能力强很多音频和通用放大电路都能看到它的身影所以你很容易在抽屉里翻出两颗就用在光电检测上。NE5532的GBW约10MHzSR约9V/µs从纯带宽角度看做100kHz以内的TIA似乎不是不行。但它最大的问题在输入偏置电流。NE5532是双极性输入输入偏置电流典型值在200nA量级。假设你用了1MΩ反馈电阻这200nA会在输出端产生0.2V的失调电压——这还不算温度漂移和电源波动的影响。如果你的光电流信号只有几十nA到几百nA这个失调电压直接把动态范围吃光甚至让运放输出饱和。所以NE5532只能用在光电流达到几十µA以上的强光场景做精密光电检测基本是灾难。更麻烦的是双极性输入级的输入等效电流噪声也偏高在MΩ级反馈电阻下会进一步抬升输出噪声。做光电传感器信号调理选运放的第一条铁律是输入偏置电流必须至少比最小光电流低一个数量级以上。这就是为什么我最终选择了FET/CMOS输入的OPA2388它的偏置电流只有几pA配1MΩ反馈电阻产生的失调才几微伏完全可以忽略。4.2 射频整流手机靠近时输出突然飘高的真实原因调试过程中有个特别诡异的现象我把手机放在工作台旁边TIA输出就莫名其妙多出几十毫伏的直流漂移手机一拿开波形又恢复正常。一开始以为是电源干扰换了好几个电源都没用后来才意识到这是射频整流RFI Rectification问题。运放输入级的非线性结电容会把空间里频率很高的射频信号比如手机通信频段整流成直流分量这个直流分量从几十微伏到几百毫伏不等叠加在TIA输出上。由于TIA反馈电阻很大反相输入端又是一个高阻抗节点对射频信号来说就像一根天线。解决RFI整流可以从几个方向入手在反相输入端到地并联一个小容量电容几十pF给射频一个低阻路径但要注意这会让 (C_{IN}) 变大必须重新核算 (C_F)否则稳定性和带宽都会被影响在运放电源引脚加磁珠串联再并联100nF和10nF电容把电源线上的射频扼制住让反相输入端到光电二极管的走线尽可能短、尽可能宽同时用接地铜皮包围走线形成伪屏蔽反馈电阻尽量用贴片封装引脚式电阻在高频下电感效应明显容易变成射频谐振器。我最后把光电二极管和TIA电路放入一个小小的屏蔽盒只在前面开一个进光孔射频整流问题就基本消失了。如果你的应用场景没法加屏蔽盒至少也要在PCB上做好顶层和底层的铺地包裹这个东西的改善效果比你想象的大得多。4.3 光电二极管反向偏置与MOS管恒流源精密测量中的附加手段除了零偏置光电二极管也经常工作在反向偏置状态以获得更低的结电容和更快的响应速度。反偏电压越大结电容越小但暗电流越大。对于快速光脉冲测量我会把阴极接到一个低噪声负压让光电二极管反偏到5V到10V实测结电容可以从30pF降到10pF左右带宽提升明显同时用软件或者硬件扣掉暗电流底子。反向偏置需要一个稳定的低噪声电源。我用过一个方案运放加MOS管组成恒流源给反偏电路提供稳定电流同时配合稳压管做基准。其实运放加MOS管的恒流源是个通用技巧在光学系统里通常用于发射端驱动激光二极管或LED保证光功率稳定。这样一来发射端光功率恒定接收端的光电流信号才有可比性否则光源一亮一暗漂移你很难分辨是待测物体导致的还是光源自身波动导致的。5. 实测现象与调参记录那些教科书不写的数字和波形5.1 第一版电路的实测结果高频振荡为什么压不住第一版我偷懒 (R_F1MΩ)没有加反馈电容 (C_F)想着运放GBW高一点自然能稳定。结果用示波器一看输出端叠着一层密密麻麻的高频振荡频率大概在几百kHz到MHz级别根本没法用。这就是之前分析过的(C_{IN})和(R_F)形成的极点把相位余量吃光了。当时我犯的第二个错误是在反相输入端对地加了一个1nF的电容想“滤波”结果振荡反而更严重。原因很简单这个电容让 (C_{IN}) 从43pF变成1.04nF把极点频率往低推了一个数量级环路在更低频率处就变得不稳定。后来我把这个电容拆掉换成反馈电容 (C_F)振荡才被压下来。实测给我最大的教训是TIA的稳定性是由“输入的寄生电容”和“反馈电容的比值”共同决定的不能靠无脑堆电容解决。反馈电容位置错了或者输入电容被盲目加大只会让相位余量进一步恶化。5.2 改一两个元件之后噪声、带宽和稳定性的平衡点按前面公式我取 (C_{IN}\approx43pF)、(R_F1MΩ)、GBW约40MHz算出的 (C_F) 初始值大概在十几pF到几十pF之间。我先放了一个33pF的反馈电容示波器观测阶跃响应过冲约10%噪声也还可以然后换成39pF过冲降到5%以内带宽从约130kHz降到105kHz输出噪声峰峰值从约15mV降到12mV。这个结果完全满足测扭摆周期的需求。如果你的最终用途是测量微弱光强而不是测周期带宽要求低得多这时可以把 (C_F) 增加到100pF甚至更大把噪声带宽压低获得更好的分辨力。就是要在带宽、噪声和稳定裕度之间找一个平衡点没有统一的最佳值。我记录了一个对比表方便大家参考反馈电容 (C_F)实测-3dB带宽阶跃过冲输出噪声峰峰值评价无振荡严重振荡很大不可用15pF约200kHz约25%约18mV稳定但过冲偏大33pF约130kHz约10%约14mV可用39pF约105kHz约5%约12mV最终选用100pF约35kHz很小约7mV慢速光强测量可用5.3 给想复现的朋友接地、屏蔽与电源去耦的最终检查单如果打算在我这套电路基础上复现最后这几点请务必检查光电二极管和运放反相端之间的走线要短不要走过孔不要穿过数字信号线下方最好由地平面包裹TIA反馈电阻和反馈电容尽量贴近运放反相输入引脚走线越短寄生电容越小运放电源引脚到地的100nF电容要放在引脚旁边3mm以内再远效果就打折扣模拟地与数字地单点连接不要大面积混接光电传感器如果没有金属屏蔽壳至少要在PCB四周做铺地过孔护栏第一次上电先不接光电二极管直接测运放输出确认没有自激振荡再接光电二极管。我这次实测中最后采用了OPA2388搭配1MΩ反馈电阻、39pF反馈电容后接二阶低通到比较器整体功耗低、温漂小在扭摆周期测量中连续跑了一个下午输出波形非常稳定。跟我之前单纯用运放搭电压放大电路相比光是输出噪声就降了一个数量级动态范围也宽了很多。后来给朋友调试弱光检测把 (R_F) 换成10MΩ、(C_F) 调成120pF同样稳定。说实话跨阻放大器这几个词听起来像是实验室里的高级玩意儿但它的设计逻辑其实很朴素承认信号源是个电流源用反馈电阻把电流变成电压再用反馈电容管住稳定性。真正难的地方不是公式而是理解每个寄生效应对环路的影响。希望这份实测记录能帮你少走几段弯路把光电传感器前端一次做稳。