AIDT 온디바이스 STEM 방사광 X선 극저온 요오드(I-127) 포화 흡수 분광 3차 고조파(3f) 복조 633nm He-Ne 레이저 파장 기준 서보 제어기

요오드 분자 초미세 포화 흡수 전이선 3f 고조파 복조 주파수 미세 변조 및 피에조 캐비티 길이 록킹, 10,000Hz C# 엔진

1. 개요

국제도량형위원회(CIPM)가 공인한 SI 길이 미터(Meter)의 실현 표준이자 방사광 가속기 X선 간섭계의 나노미터 스케일 눈금자로 사용되는 핵심 장비는 요오드(\(^{127} ext{I}_2\)) 분자 안정화 633nm 헬륨-네온(He-Ne) 레이저입니다. 도플러 확장이 억제된 포화 흡수 분광(Saturated Absorption Spectroscopy) 기법을 사용하여, 서로 반대 방향으로 진행하는 펌프(Pump) 광과 프로브(Probe) 광이 요오드 기체 셀 내부에서 만날 때 도플러 프리 램 딥(Lamb Dip) 및 분자 초미세 전이선(Hyperfine Transition Lines, a~n 성분)이 관측됩니다. 비대칭 도플러 배경 흡수 신호의 기울기를 상쇄하고 순수한 분자 전이의 3차 미분형 오차 신호를 획득하기 위해 레이저 주파수를 수 kHz로 디더링(Dithering)하고 3차 고조파(\(3f\)) 록인 앰프(Lock-in Amplifier)로 복조합니다. 본 고에서는 10,000Hz 온디바이스 루프에서 \(3f\) 위상 복조 신호의 제로 크로싱(Zero-Crossing)을 추적하여 레이저 튜브 PZT 전압을 서브-kHz 수준으로 잠그는 0-Alloc C# 엔진을 구현합니다.

2. 수학적 모델링 및 지배 방정식

요오드 분자의 초미세 포화 흡수 프로파일 및 주파수 변조 신호 \(f(t) = f_0 + \Delta f \sin(\omega_m t)\) 인가 시의 흡수율 \(A(t)\) 테일러-푸리에 전개식은 다음과 같습니다:

\[ A(f(t)) pprox A(f_0) + \left. rac{dA}{df} ight|_{f_0} \Delta f \sin(\omega_m t) + rac{1}{2} \left. rac{d^2 A}{df^2} ight|_{f_0} \Delta f^2 \sin^2(\omega_m t) + rac{1}{6} \left. rac{d^3 A}{df^3} ight|_{f_0} \Delta f^3 \sin^3(\omega_m t) \]

\(\sin^3(\omega_m t) = rac{3}{4}\sin(\omega_m t) - rac{1}{4}\sin(3\omega_m t)\) 삼각함수 항등식에 의해, \(3\omega_m\) 성분 복조 신호 \(V_{3f}(f_0)\)는 다음과 같습니다:

\[ V_{3f}(f_0) = - rac{1}{24} \Delta f^3 \left. rac{d^3 A}{df^3} ight|_{f_0} \]

선형 도플러 배경 경사는 1차 미분(\(f\))에만 기여하고 3차 미분(\(3f\))에서는 완전히 소거되어, 요오드 초미세 선 중심에서 완벽한 무바이어스 제로 크로싱 오차 신호가 추출됩니다.

피에조 변위 \(x_{pzt}\)와 He-Ne 공진기 발진 주파수 \(f_{laser}\)의 기하학적 관계 및 PI 서보 법칙은 다음과 같습니다:

\[ \Delta f_{laser} = -f_0 rac{\Delta L_{cavity}}{L_0} = - rac{c}{\lambda_0 L_0} d_{33} V_{pzt} \]
\[ V_{pzt}[k] = V_{pzt}[k-1] + K_p (V_{3f}[k] - V_{3f}[k-1]) + K_i V_{3f}[k] \Delta t \]

3. C# 고성능 온디바이스 서보 엔진 구현

10,000Hz 주기로 3f 복조 전압을 판독하여 파장 안정도 \(10^{-11}\)을 유지하는 0-Alloc C# 엔진입니다.

using System;
using System.Runtime.CompilerServices;

namespace ZeliDesk.Stem.IodineLaser
{
    /// <summary>
    /// 요오드 안정화 He-Ne 레이저 3f 분광 텔레메트리 상태
    /// </summary>
    public readonly ref struct IodineDemodulationTelemetryState
    {
        public readonly double Demodulated3fVoltageMv;   // 3차 고조파 복조 오차 전압 [mV]
        public readonly double PhotodiodeDcPowerMicroW;  // 프로브 광 포토다이오드 DC 파워 [uW]
        public readonly double IodineColdFingerTempC;    // 요오드 콜드 핑거 온도 [degC]
        public readonly double CavityPztVoltageVolts;    // 현재 PZT 구동 전압 [V]

        [MethodImpl(MethodImplOptions.AggressiveInlining)]
        public IodineDemodulationTelemetryState(double v3f, double dcPwr, double temp, double vPzt)
        {
            Demodulated3fVoltageMv = v3f;
            PhotodiodeDcPowerMicroW = dcPwr;
            IodineColdFingerTempC = temp;
            CavityPztVoltageVolts = vPzt;
        }
    }

    /// <summary>
    /// 레이저 PZT 서보 출력 명령
    /// </summary>
    public readonly ref struct IodineLaserServoCommand
    {
        public readonly double TargetPztVoltageVolts;    // 목표 PZT 인가 전압 [V]
        public readonly double FrequencyOffsetMegahertz; // 초미세선 중심 기준 주파수 편차 [MHz]
        public readonly double WavelengthUncertainty;    // 파장 상대 불확도
        public readonly bool IsLockedToHyperfinePeak;    // 초미세 피크 잠금 완료 여부

        [MethodImpl(MethodImplOptions.AggressiveInlining)]
        public IodineLaserServoCommand(double vTarget, double offsetMhz, double uncert, bool locked)
        {
            TargetPztVoltageVolts = vTarget;
            FrequencyOffsetMegahertz = offsetMhz;
            WavelengthUncertainty = uncert;
            IsLockedToHyperfinePeak = locked;
        }
    }

    /// <summary>
    /// 10,000Hz 주기 3f 복조 요오드 안정화 레이저 파장 기준 서보 엔진
    /// </summary>
    public ref struct IodineStabilizedHeNeServoEngine
    {
        private const double PztSensitivityMhzPerVolt = 3.5; // PZT 주파수 튜닝 감도 [MHz/V]
        private const double DemodSlopeMvPerMhz = 12.5;       // 3f 오차 신호 기울기 [mV/MHz]

        private double _accumulatedPztVolts;
        private double _prevErrorMv;

        [MethodImpl(MethodImplOptions.AggressiveInlining)]
        public IodineLaserServoCommand CalculateServoControl(
            in IodineDemodulationTelemetryState state, double dtSeconds)
        {
            double errorMv = state.Demodulated3fVoltageMv;
            double errorDiff = (dtSeconds > 1e-9) ? (errorMv - _prevErrorMv) / dtSeconds : 0.0;
            _prevErrorMv = errorMv;

            // 주파수 편차 역산
            double freqOffsetMhz = errorMv / DemodSlopeMvPerMhz;

            // PI 폐루프 적분
            _accumulatedPztVolts += 0.45 * (errorMv / DemodSlopeMvPerMhz) * (1.0 / PztSensitivityMhzPerVolt) * dtSeconds;
            _accumulatedPztVolts = Math.Clamp(_accumulatedPztVolts, -15.0, 15.0);

            double targetPzt = 75.0 + _accumulatedPztVolts + 0.15 * (freqOffsetMhz / PztSensitivityMhzPerVolt);
            targetPzt = Math.Clamp(targetPzt, 0.0, 150.0);

            // 잠금 상태 판정: 3f 오차 전압 < 0.5mV (주파수 오차 < 40kHz)
            bool isLocked = Math.Abs(errorMv) < 0.50;
            double uncertainty = isLocked ? 2.1e-11 : 4.5e-8;

            return new IodineLaserServoCommand(targetPzt, freqOffsetMhz, uncertainty, isLocked);
        }
    }
}

4. 교육 및 실무 응용 가이드

본 시스템은 정밀 계측 및 표준물리학 분야에서 폭넓게 사용됩니다:

  • 방통대 및 표준과학 직무연수: 1차 도플러 선형 배경과 3차 고조파 포화 흡수 분광의 신호 대 잡음비(SNR) 비교 실습.
  • 가속기 방사광 빔라인: 초정밀 단색화기(Monochromator) 각도 엔코더의 파장 눈금 절대 교정.
  • 반도체 노광 및 간섭계: 리소그래피 스테이지 레이저 간섭계의 0.1nm 길이 소급성(Traceability) 확립.

5. 결론

도플러 무배경 3f 고조파 복조 기법과 10,000Hz 온디바이스 PZT 서보 엔진을 결합하여, 633nm 국제 길이 표준 파장을 실시간으로 안정화하는 0-Alloc 고성능 C# 시스템을 구축하였습니다.