AIDT 온디바이스 STEM 이중 주파수 빗 분광(Dual-Comb) 다중 헤테로다인 서보 엔진

광학 빗 반복률 오프셋 \\(\\Delta f_r\\), 테라헤르츠 광학-RF 1:1 선형 사상, 온실가스 분자 흡수선 10,000Hz C# 엔진

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}\)은 다음과 같습니다:

\\[ f_{RF,m} = |\\nu_{1,m} - \\nu_{2,m}| = \\Delta f_{ceo} + m \\Delta f_r \\]

광학 주파수 축에서 RF 주파수 축으로의 스케일 압축비(Scaling Factor) \(M\)은 다음과 같이 엄밀히 정의됩니다:

\\[ M = \\frac{f_{r1}}{\\Delta f_r}, \\quad \\Delta \\nu_{opt} = M \\cdot \\Delta f_{RF} \\]

알리아싱(Aliasing)을 방지하기 위한 최대 광학 광대역 \(\Delta \nu_{\\max}\) 조건은 \(M\)과 반복률에 의해 제한됩니다:

\\[ \\Delta \\nu_{\\max} \\le \\frac{f_{r1}^2}{2 \\Delta f_r} \\]

이를 통해 대기 중 메탄(\(\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\) 누출율 실시간 측정.
  • 화학무기 및 유독가스 조기 경보: 수십 마이크로초 이내에 미지의 군용 신경작용제 화학 지문을 자동 판별.