
有人问了一个很具体的问题:激光管里封装的 PD,漏电流能反映光强,范围 1μA 到 1mA。别人都说用跨阻放大器,但那样光越强电压越低,方向是反的。能不能直接串个电阻,用电阻上的小电压再同相放大一下?

两个问题,分开答。
一、反相不是问题。 软件里减一下就行,不值得为它换拓扑。
二、串电阻能用,但 μA 那一段会废。 不是原理错,是信噪比不够。
反向偏置的光电二极管,输出电流与光强基本成正比,内阻极高,当电流源看就行。
麻烦不在「怎么把电流变成电压」,而在这个电流要跨 3 个数量级:1μA 到 1mA 是 1000 倍,60dB。任何一套固定增益,都不可能两头都好看。
跨阻放大器的关键在于「虚地」:运放反相端被反馈网络钳在 2.5V,而 PD 阴极接 +7V,所以 PD 两端永远是 4.5V 反偏。
这一点带三个好处:
代价就一个:输出是 2.5V − I×Rf,光越强电压越低。
三个办法,从省事到麻烦:
I = (2.5 − Vout) / Rf,一行代码I×Rf第三种看着最优雅,但 PD 的结电容直接挂在输入端,容易自激,需要加补偿电容;而且同相端有共模电压,对运放输入范围有要求。
除非你的 ADC 只能采正值、又不想写减法,否则不建议折腾。
原理上成立:电流流过 1k,V = I×R,然后把这个小电压放大。但按图上的参数算一下,四个问题。
① 增益分错了地方。
1μA × 1k = 1mV,再经 R39/R40 分压剩 0.5mV,×6 后是 3mV。12 位 ADC、3.3V 参考,一个码是 0.8mV,3mV 也就 4 个码。噪声一盖,什么都没了。
② 分压白送一半信号。
R39 和 R40 两个 1k 串在同相输入端,本质是个 1/2 分压器。想要信号,就直接进同相端,不要先砍一半。
③ 失调被一起放大。
RS722 这类运放,失调电压典型值在 0.5mV 到 3mV 之间。乘 6 倍就是 3–18mV,相当于 1–6μA 的假信号,而且随温度漂。你拿它测 1μA,测的其实是运放自己。
④ 地端取样,地噪直通。
采样电阻放在地端,地线上任何一点弹跳,全部无衰减进 ADC。TIA 是虚地输入,这一点天然优于前者。
再补一个细节:按图上画的,反相端只经 R41 回到输出,没有下地电阻,那它其实是电压跟随器,增益为 1,R41 等于没接。 要 ×6,反相端还得加一个 1k 到地。
假设 12 位 ADC、3.3V 参考(LSB ≈ 0.8mV):
| 光电流 | 左图 Rf=20k | 右图 ×6 | 右图 ADC 码数 |
|---|---|---|---|
| 1μA | 2.48V | 3mV | ≈ 4 |
| 10μA | 2.30V | 30mV | ≈ 37 |
| 100μA | 0.50V | 305mV | ≈ 380 |
| 1mA | 饱和 0V | 3.05V | ≈ 3800 |
两边刚好互补:左边 μA 段舒服,125μA 就撞底;右边 mA 段能看,μA 段贴地。

拓扑只是手段,真正需要解决的是:要么分段,要么换器件。
方案 A:分段增益 用模拟开关切 Rf(1M / 100k / 10k),单片机根据当前量级自动换挡。切换瞬间会丢几个点,但覆盖范围最宽。
方案 B:对数放大器 LOG114、AD8304 这类,把 60dB 的动态范围直接压成 0–2V 的线性输出。一个数量级一截,读数不用换挡,代价是精度和温度漂移要标定。
方案 C:换高分辨率 ADC ADS1115(16 位,LSB ≈ 0.125mV),配 Rf=20k 就能把 1μA 盖到 200μA。成本二十块,比调运放省心。
方案 D:降低要求 如果只是做 APC 反馈、看光强相对变化,根本不需要绝对精度。这时候右边电路能跑,只要把分压去掉、增益调大、软件做个两点校准。
给你一个能用的版本:
最后一个容易被忽略的点:PD 的暗电流随温度每升 10℃ 大约翻一倍。高温下测弱光,零点会自己往上跑。软件里留个温度补偿的余量,比在电路上死磕有用。