暗电流的物理本质:从电子“越狱”说起
暗电流这东西,说白了就是像素在“不该干活的时候偷偷干活”。你想想看,传感器快门关着、镜头盖盖着,按理说应该一片漆黑、输出为零对吧?但实际读出来的数据总有那么个底数——这就是暗电流在捣鬼。
我刚开始做图像传感器时,总觉得暗电流是个小问题。直到有一次做长曝光星轨拍摄,30秒曝光下暗电流直接把画面“染”成了灰蒙蒙一片,星点都快找不到了。从那以后,我再也不敢小看它。
2.1 暗电流的产生机制
暗电流的物理本质,是半导体中热激发导致的电子-空穴对。没有光照,硅晶格的热振动照样能把价带电子“踢”到导带去。这些被踢上去的电子被像素的势阱收集,就成了暗信号。
主要来源有三个:
- 耗尽区热激发:PN结耗尽区里,热振动直接产生电子-空穴对。这是暗电流的主体,占比通常超过60%。
- 中性区扩散:耗尽区外面产生的少数载流子,扩散到耗尽区后被收集。像素做得越大,这部分越明显。
- 界面态产生:硅-二氧化硅界面处的缺陷能级,像一个个“跳板”,帮助电子更容易从价带跳到导带。我见过最差的工艺,界面态暗电流能占到40%。
关键公式:暗电流密度 Jdark ∝ ni² ∝ T³ · exp(-Eg/kT)
ni是本征载流子浓度,T是温度,Eg是硅的禁带宽度(1.12eV)。温度每升高6-8°C,暗电流翻一倍——这是做热设计时必须记住的经验值。
2.2 温度依赖性:每7°C翻倍的“魔鬼曲线”
暗电流对温度有多敏感?我直接给你看数据。
| 温度 (°C) | 暗电流 (e⁻/s/pixel) | 相对25°C倍数 | 典型场景 |
|---|---|---|---|
| -20 | 0.05 | 0.02× | 天文/低温应用 |
| 0 | 0.5 | 0.2× | 户外冬季 |
| 25 | 2.5 | 1× | 室温基准 |
| 40 | 10 | 4× | 手机内部温升 |
| 60 | 80 | 32× | 车载/工业高温 |
看到没?从25°C到60°C,暗电流翻了32倍。我做过一个车载摄像头项目,夏天车内温度能到70°C,暗电流直接飙到200 e⁻/s以上,10ms曝光就有2个电子的暗信号——对于需要高动态范围的应用来说,这已经不可忽略了。
我的经验:做温度补偿时,别只盯着25°C标称值。我习惯在-20°C、25°C、60°C三个温度点测暗电流,然后用Arrhenius公式拟合,这样全温区的暗电流模型就准了。
2.3 像素结构对暗电流的影响
像素结构不同,暗电流差异很大。我画了一张图帮你理清关系。
三种主流像素结构的暗电流对比,我整理了一个表格:
| 参数 | 前照式 (FSI) | 背照式 (BSI) | 堆叠式 (Stacked) |
|---|---|---|---|
| 典型暗电流 (e⁻/s @25°C) | 2-10 | 0.5-3 | 1-5 |
| 主要暗电流来源 | 界面态 + 金属污染 | 背面减薄缺陷 | 混合键合界面 |
| 温度敏感度 | 高 | 中 | 中高 |
| 工艺复杂度 | 低 | 中 | 高 |
| 典型应用 | 工业相机、安防 | 手机、消费电子 | 高端成像、AI视觉 |
2.4 像素内暗电流的分布差异
同一个传感器上,不同像素的暗电流也不一样。我遇到过最头疼的情况——暗电流不均匀导致的固定图案噪声(FPN)。
影响像素间暗电流差异的因素:
- 掺杂浓度波动:离子注入的随机性,导致每个像素的耗尽区宽度不同。我记得有个项目,注入均匀性差了3%,暗电流的像素间标准差直接翻倍。
- 边缘效应:像素阵列边缘的像素,暗电流通常比中心高20-30%。因为边缘的隔离结构不完整,漏电路径更多。
- 微透镜应力:微透镜工艺带来的机械应力,会改变硅的能带结构。这个影响比较微妙,但在高灵敏度应用中不能忽略。
注意:暗电流不均匀比暗电流值大更致命。值大可以通过减曝光时间或做暗帧校正来补偿,但不均匀性——尤其是低频空间分布的不均匀——很难通过简单的减本底校正干净。我见过一个医疗成像项目,暗电流不均匀性导致图像出现“水波纹”,算法团队调了两个月都没完全消除。
2.5 暗电流与动态范围的直接关系
暗电流怎么影响动态范围?说白了就两条路:
- 抬高本底噪声:暗电流本身是信号,它的散粒噪声(√(暗电流))直接加到读出噪声上。暗电流越大,本底噪声越高,动态范围的下限就被抬上去了。
- 压缩满阱容量:暗电流在积分时间内积累的电荷,占用了势阱的容量。本来能装10000个电子的势阱,暗电流占了500个,有效满阱就只剩9500了。
我习惯用一个简单公式估算:
DR_effective = 20 * log10( (FWC - I_dark * t_int) / sqrt(N_read² + I_dark * t_int) )
其中:
FWC = 满阱容量 (e⁻)
I_dark = 暗电流 (e⁻/s)
t_int = 积分时间 (s)
N_read = 读出噪声 (e⁻ rms)
举个例子:一个满阱10000e⁻的传感器,读出噪声2e⁻,暗电流5e⁻/s,积分时间30ms。
- 无暗电流时:DR = 20*log10(10000/2) ≈ 74dB
- 有暗电流时:暗电荷 = 5*0.03 = 0.15e⁻(可忽略),但散粒噪声 = √0.15 ≈ 0.39e⁻,总噪声 = √(2²+0.39²) ≈ 2.04e⁻,DR ≈ 73.8dB
看起来影响不大对吧?但如果曝光时间拉到1秒:
- 暗电荷 = 5e⁻,散粒噪声 = √5 ≈ 2.24e⁻,总噪声 = √(2²+2.24²) ≈ 3.0e⁻,有效满阱 = 10000-5 = 9995e⁻,DR ≈ 70.4dB
1秒曝光就掉了3.6dB。要是温度升到60°C,暗电流80e⁻/s,同样1秒曝光:暗电荷80e⁻,散粒噪声≈8.94e⁻,总噪声≈9.16e⁻,有效满阱=9920e⁻,DR≈60.7dB——比室温低了13dB以上。
我的习惯:做系统设计时,我会先确定最长曝光时间和最高工作温度,然后反推允许的最大暗电流。比如目标DR≥70dB,最长曝光1秒,最高温度50°C,那暗电流必须控制在20e⁻/s以下。选传感器时,这个指标比标称的“典型暗电流”重要得多。