一、光学测量基础:光的本质、光谱与波长、光度学与辐射度学基本概念、光学测量系统组成

1.1 光的本质——它到底是波还是粒子?

说实话,我刚入行那会儿,也被这个问题绕晕过。光到底是什么?

你想想看,我们中学物理说光是电磁波,大学光学又说光子是粒子。其实都对——这就是所谓的“波粒二象性”。

我个人习惯这样理解:光在传播时像波,在和物质相互作用时像粒子。比如干涉、衍射这些现象,你用波动理论去解释,特别顺。但光电效应呢?非得用光子能量 E = hν 才能说清楚。

核心要点:

  • 光是一种电磁辐射,具有波粒二象性
  • 波动性体现在传播过程(干涉、衍射、偏振)
  • 粒子性体现在能量交换过程(光电效应、吸收、发射)
  • 光速 c = 3×10⁸ m/s,在真空中恒定

我在项目中遇到过一件事:有次用激光干涉仪测位移,怎么调都出不来干涉条纹。后来发现是光源相干长度不够——这就是典型的波动性没吃透。嗯,这里要注意,不是所有光都能产生稳定的干涉

1.2 光谱与波长——光学测量的“身份证”

说白了,光谱就是光按波长排了个队。波长决定了光的“颜色”,也决定了它能干什么。

波段名称 波长范围 典型应用
紫外(UV) 10 nm ~ 380 nm 荧光检测、光刻
可见光(VIS) 380 nm ~ 780 nm 人眼视觉、颜色测量
近红外(NIR) 780 nm ~ 2.5 μm 光纤通信、水分检测
中红外(MIR) 2.5 μm ~ 25 μm 热成像、气体分析
远红外(FIR) 25 μm ~ 1 mm 遥感、天文观测

为什么波长这么重要?我举个例子你就明白了。测一个0.5 μm宽的沟槽,你用532 nm的绿光去照,衍射效应会严重干扰测量结果。但如果你换成248 nm的深紫外光,分辨率立马就上去了。这就是为什么半导体检测越做波长越短——分辨率直接和波长挂钩

避坑指南:

我曾经在选型光谱仪时,只看波长范围没看分辨率。结果买回来发现,两个相邻的谱峰根本分不开。记住:光谱分辨率 = 波长范围 / 像素数,这个公式很实用。

1.3 光度学与辐射度学——别搞混了!

这两个概念,我见过太多人搞混了。其实区分起来很简单:

  • 辐射度学:只管物理量,不考虑人眼感知。单位是瓦特(W)
  • 光度学:考虑人眼视觉特性,单位是流明(lm)

举个例子:一个红外LED和一个红色LED,辐射功率都是1 W。但红外LED的光通量是0 lm(人眼看不见),红色LED的光通量大约683 lm × 0.3 ≈ 205 lm。为什么会这样?因为人眼对不同波长的敏感度不一样。

关键物理量对照表:

辐射度学量 符号/单位 光度学量 符号/单位
辐射通量 Φₑ, W 光通量 Φᵥ, lm
辐射强度 Iₑ, W/sr 发光强度 Iᵥ, cd
辐射照度 Eₑ, W/m² 照度 Eᵥ, lx
辐射亮度 Lₑ, W/(m²·sr) 亮度 Lᵥ, cd/m²

转换关系很简单:光度学量 = 辐射度学量 × 视见函数 V(λ) × 683。但注意,这个683只在555 nm波长处成立,其他波长要查表。

1.4 光学测量系统组成——搭积木的思路

一个完整的光学测量系统,说白了就是几块积木拼起来的。我习惯把它分成五个部分:

  1. 光源:提供照明或激发光。常见的有卤素灯、LED、激光器、氙灯
  2. 光路调控:透镜、反射镜、滤光片、光阑、分束器
  3. 样品台:承载被测样品,可能需要XYZ位移或旋转
  4. 探测器:把光信号转成电信号。CCD、CMOS、光电二极管、PMT
  5. 数据处理:采集卡、软件算法、显示输出

下面这张图是我自己画的一个典型光学测量系统框图,你可以看看整体架构:

光学测量系统组成框图 光源 LED / 激光 / 卤素灯 光路调控 透镜 / 滤光片 光阑 / 分束器 样品台 XYZ位移 / 旋转 探测器 CCD / CMOS 光电二极管 数据处理与显示 采集卡 → 算法 → 可视化 反馈控制(可选) 图1-1 光学测量系统典型架构

你看这个图,光从光源出发,经过光路调控后照到样品上,样品反射或透射的光再被探测器接收,最后进到数据处理系统。有些系统还有反馈控制,比如自动调节光源功率或样品位置。

重要提醒:

搭建系统时,最容易忽略的是光路对准。我曾经花了一整天调一个显微光谱系统,最后发现是样品台倾斜了0.5度,导致光斑偏了。记住:先粗调再精调,先用可见光对准再用测量光

1.5 一个简单的Python示例——计算光谱功率分布

光说不练假把式。我写了个小脚本,模拟一个LED的光谱功率分布,顺便算一下它的光通量。你可以在自己的机器上跑跑看:

import numpy as np

# 模拟一个中心波长450nm的蓝光LED光谱
wavelengths = np.linspace(380, 780, 401)  # 380~780nm,步长1nm
center = 450
sigma = 15  # 半高宽约35nm

# 高斯型光谱
spectrum = np.exp(-0.5 * ((wavelengths - center) / sigma) ** 2)
spectrum = spectrum / np.max(spectrum)  # 归一化

# 辐射通量假设为1W
radiant_flux = 1.0  # W

# 视见函数(简化版,只取几个关键点)
V_lambda = np.exp(-0.5 * ((wavelengths - 555) / 50) ** 2)
V_lambda = np.clip(V_lambda, 0, 1)

# 计算光通量
luminous_flux = 683 * np.trapz(spectrum * V_lambda, wavelengths) / np.trapz(spectrum, wavelengths)
luminous_flux *= radiant_flux

print(f"辐射通量: {radiant_flux:.2f} W")
print(f"光通量: {luminous_flux:.2f} lm")
print(f"光视效能: {luminous_flux/radiant_flux:.2f} lm/W")

跑一下你会发现,这个450nm蓝光LED的光视效能大概在40~60 lm/W之间。而一个555nm的绿光LED,同样1W辐射功率,光通量能到683 lm。这就是人眼对不同波长敏感度的差异——设计照明系统时一定要考虑这个

实用技巧:

实际项目中,我经常用这个脚本快速估算LED的光效。你只需要把光谱数据换成实测值,就能得到准确的光通量。比翻datasheet靠谱多了——因为厂家给的数据往往是典型值,实际批次有偏差。


公众号:蓝海资料掘金营,微信deep3321