1. 개요: 기계적 가동부 없이 마이크로초 단위로 전 대역을 스캔하는 분광 혁명
전통적인 푸리에 변환 적외선(FTIR) 분광기는 정밀 이동 거울의 기계적 왕복 운동에 의존하기 때문에 스캔 속도가 수백 밀리초에 제한되고 진동에 취약합니다. 이중 주파수 빗 분광법(Dual-Comb Spectroscopy, DCS)은 미세하게 다른 펄스 반복률(\(f_{r1}\), \(f_{r2} = f_{r1} + \Delta f_r\))을 갖는 두 대의 모드 잠금 광주파수 빗(Optical Frequency Comb)을 간섭시킴으로써, 다중 헤테로다인 비트 노트(Multi-Heterodyne Beating)를 통해 수백 테라헤르츠(\(\text{THz}\)) 대역의 광학 스펙트럼을 메가헤르츠(\(\text{MHz}\)) 무선 주파수(RF) 대역으로 1:1 선형 축소(Down-conversion)합니다.
가동부가 전혀 없어 수십 마이크로초(\(\mu\text{s}\)) 만에 광대역 초고분해능 스펙트럼을 측정할 수 있으며, 캐리어-포락선 오프셋 위상(\(f_{ceo}\)) 및 반복률 오프셋 \(\Delta f_r\)의 지터를 실시간 보정하는 10,000Hz 0-Alloc C# 서보 아키텍처를 구현합니다.
2. 다중 헤테로다인 비트 노트 및 시간-주파수 스케일링 수식 모델
두 광주파수 빗의 \(m\)번째 모드 주파수는 각각 \(\nu_{1,m} = f_{ceo1} + m f_{r1}\), \(\nu_{2,m} = f_{ceo2} + m f_{r2}\)로 표현됩니다. 광다이오드에서 발생하는 두 빗 모드 간의 비트 주파수 \(f_{RF,m}\)은 다음과 같습니다:
광학 주파수 축에서 RF 주파수 축으로의 스케일 압축비(Scaling Factor) \(M\)은 다음과 같이 엄밀히 정의됩니다:
알리아싱(Aliasing)을 방지하기 위한 최대 광학 광대역 \(\Delta \nu_{\\max}\) 조건은 \(M\)과 반복률에 의해 제한됩니다:
이를 통해 대기 중 메탄(\(\text{CH}_4\)), 이산화탄소(\(\text{CO}_2\)) 등의 복잡한 회전-진동 전이선(Ro-vibrational Lines)을 초정밀 도플러 한계 분해능으로 동시 포착합니다.
3. 0-Alloc C# 10,000Hz 실시간 Dual-Comb 위상 고정 서보 아키텍처
PZT 압전 액추에이터와 펌프 다이오드 전류 변조를 통해 두 레이저의 \(\Delta f_r\) 지터를 100㎲ 확정 주기로 연산 제어하는 C# ref struct 구현체입니다.
using System;
using System.Runtime.CompilerServices;
namespace ZeliDesk.Stem.DualComb
{
public readonly ref struct DualCombState
{
public readonly double RepetitionRateHz; // 레이저 1 반복률 f_r1 (Hz)
public readonly double DeltaRepetitionRateHz;// 반복률 차이 Delta f_r (Hz)
public readonly double ScalingFactorM; // 주파수 다운컨버전 압축비 M
public readonly double OpticalBandwidthThz; // 관측 가능 광학 대역폭 (THz)
public readonly double PhaseJitterRmsMrad; // 빗 비트 노트 위상 지터 (mrad)
public readonly double GasTransmittance; // 타깃 분자 흡수선 투과율
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public DualCombState(double fr, double dfr, double m, double bwThz, double jitter, double trans)
{
RepetitionRateHz = fr;
DeltaRepetitionRateHz = dfr;
ScalingFactorM = m;
OpticalBandwidthThz = bwThz;
PhaseJitterRmsMrad = jitter;
GasTransmittance = trans;
}
}
public ref struct DualCombInterferometerEngine
{
private const double C = 299792458.0;
private readonly double _nominalFrHz; // 기준 반복률 (Hz, 예: 100 MHz)
private double _deltaFrHz; // 반복률 차이 Delta f_r (Hz, 예: 1 kHz)
private double _cavityPztTuningV; // 공진기 PZT 튜닝 전압 (V)
public DualCombInterferometerEngine(double nominalFrMhz = 100.0, double targetDeltaFrKhz = 1.0)
{
_nominalFrHz = nominalFrMhz * 1e6;
_deltaFrHz = targetDeltaFrKhz * 1000.0;
_cavityPztTuningV = 0.0;
}
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public DualCombState StepServo(double measuredDeltaFrErrorHz, double rfPhaseErrorRad, double absorptionPeakIntensity, double dtSec)
{
// 1. PZT 전압 보정을 통한 Delta f_r 고정 서보
_cavityPztTuningV = Math.Clamp(_cavityPztTuningV + measuredDeltaFrErrorHz * 0.002, -50.0, 50.0);
_deltaFrHz += measuredDeltaFrErrorHz * 0.05;
_deltaFrHz = Math.Clamp(_deltaFrHz, 100.0, 50000.0);
// 2. 주파수 압축비 M = f_r / Delta f_r
double mScaling = _nominalFrHz / _deltaFrHz;
// 3. 무알리아싱 최대 광학 대역폭 (THz)
// Delta nu_max = f_r^2 / (2 * Delta f_r)
double maxBwHz = (_nominalFrHz * _nominalFrHz) / (2.0 * _deltaFrHz);
double maxBwThz = maxBwHz * 1e-12;
// 4. 위상 지터 계산 (RMS mrad)
double phaseJitterMrad = Math.Abs(rfPhaseErrorRad) * 1000.0;
// 5. 비어-람베르트 흡수 법칙 분자 투과율 모사
double gasTransmittance = Math.Clamp(Math.Exp(-absorptionPeakIntensity * 0.8), 0.0, 1.0);
return new DualCombState(
fr: _nominalFrHz,
dfr: _deltaFrHz,
m: mScaling,
bwThz: maxBwThz,
jitter: phaseJitterMrad,
trans: gasTransmittance
);
}
}
}
4. 교육 및 환경감시/방위 응용 가치
- 초·중·고 STEM 교구: 주파수 맥놀이(Beat Note) 원리와 모드 잠금 펄스 레이저, 온실효과 분자 흡수 스펙트럼 교육.
- 도심 및 산단 온실가스 원격 감시: 수 킬로미터 개방 대기 경로(Open-path)에서 메탄(\(\text{CH}_4\)) 및 \(\text{CO}_2\) 누출율 실시간 측정.
- 화학무기 및 유독가스 조기 경보: 수십 마이크로초 이내에 미지의 군용 신경작용제 화학 지문을 자동 판별.