AIDT 온디바이스 STEM 레이저 도플러 진동계(LDV) 스펙클 추적 헤테로다인 복조 서보 엔진

마이켈슨 간섭계 음향광학 변조기(AOM) 40MHz 헤테로다인 캐리어, 도플러 주파수 편이 \(f_D = 2v/\lambda\), 스펙클 드롭아웃 보상 10,000Hz C# 엔진

1. 개요

레이저 도플러 진동계(LDV, Laser Doppler Vibrometer)는 진동하는 표면에 레이저 빔을 조사하고 반사되어 돌아오는 빛의 광학적 도플러 주파수 편이를 헤테로다인 간섭계로 검출하여 물체의 속도와 변위를 나노미터 이하의 분해능으로 비접촉 계측하는 정밀 광학 센서입니다. 그러나 표면 거칠기에 의해 형성되는 레이저 스펙클(Speckle) 패턴이 물체 운동 시 회전/이동하면서 광검출기 신호가 순간적으로 소실되는 '스펙클 드롭아웃(Speckle Dropout)' 현상이 발생합니다. 본 고에서는 음향광학 변조기(AOM) 40MHz 헤테로다인 신호를 I/Q 디지털 복조하고 피에조 빔 스티어링으로 최대 신호 대 잡음비(SNR) 스펙클 스팟을 능동 추종하는 10,000Hz 0-Alloc C# 서보 엔진을 구현합니다.

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

진동 속도 \(v(t)\)에 따른 1차 도플러 주파수 편이 공식은 다음과 같습니다:

\[ f_D(t) = \frac{2 v(t)}{\lambda_0} \cos\theta \]

기준파 경로에 음향광학 변조기(AOM)를 두어 주파수를 \(f_c = 40\,\text{MHz}\) 천이시킬 때, 포토다이오드에 맺히는 헤테로다인 비트 신호는 다음과 같이 표현됩니다:

\[ I_{pd}(t) = I_{dc} + I_0(t) \cos\left( 2\pi f_c t + \frac{4\pi}{\lambda_0} x(t) + \phi_{speckle}(t) \right) \]

여기서 \(x(t)\)는 진동 변위, \(\phi_{speckle}(t)\)는 표면 거칠기 스펙클 무작위 위상입니다. I/Q 직교 복조기를 통과한 동위상(I) 및 직교위상(Q) 성분으로부터 변위는 아크탄젠트 위상 언래핑으로 복원됩니다:

\[ \Phi(t) = \arctan2(Q(t), I(t)), \quad x(t) = \frac{\lambda_0}{4\pi} \left[ \Phi(t) + 2\pi M(t) \right] \]

신호 진폭 \(I_0(t) < I_{threshold}\)인 드롭아웃 발생 시에는 칼만 예측 필터로 전환하여 신호 단절을 완벽하게 극복합니다.

3. 실시간 피드백 제어 아키텍처

graph TD A[He-Ne 632.8nm 단일 세로모드 레이저 발진] --> B[편광 빔 스플리터 측정광과 기준광 분할] B --> C[기준광 AOM 통과 40MHz 주파수 편이 생성] B --> D[측정광 타깃 표면 집속 및 도플러 변조 반사] C & D --> E[밸런스드 포토다이오드 헤테로다인 비트 신호 검출] E --> F[FPGA/ADC 40MHz 직교 I/Q 디지털 위상 복조기] F --> G[위상 언래핑 실시간 순시 진동 속도 및 변위 추출] G --> H[신호 강도 모니터링 및 스펙클 드롭아웃 감지] H --> I[10,000Hz 0-Alloc C# 피에조 빔 스티어링 고휘도 스펙클 추적 서보] I --> D

4. 고성능 0-Alloc C# 서보 엔진 구현

GC 지연 없이 10,000Hz 주기로 도플러 신호를 복조하고 스펙클 트래킹을 수행하는 초고속 C# 구조입니다:

using System;
using System.Runtime.CompilerServices;

namespace ZeliDesk.Stem.LaserDopplerVibrometry
{
    public readonly record struct LdvConfig(
        double LaserWavelengthNm,      // 레이저 파장 (예: 632.8 nm)
        double CarrierFreqMhz,         // 헤테로다인 캐리어 주파수 (예: 40.0 MHz)
        double MinSignalLevelVolt,     // 스펙클 드롭아웃 임계 전압 (예: 0.05 V)
        double MaxVelocityMeterPerSec  // 최대 계측 속도 (예: 10.0 m/s)
    );

    public ref struct LdvServoState
    {
        public double InstantaneousVelocityMps;
        public double InstantaneousDisplacementNm;
        public double CarrierSignalAmplitudeVolt;
        public double SteeringMirrorOffsetUm;
        public bool IsSpeckleDropoutActive;
    }

    public static class LdvDemodulatorServo
    {
        private const double TwoPi = 2.0 * Math.PI;

        [MethodImpl(MethodImplOptions.AggressiveInlining)]
        public static void DemodulateHeterodyneSignal(
            in LdvConfig cfg,
            double inPhaseI,
            double quadPhaseQ,
            double prevPhaseRad,
            ref LdvServoState state)
        {
            // 1. 캐리어 포락선 신호 강도 계산
            double signalAmplitude = Math.Sqrt((inPhaseI * inPhaseI) + (quadPhaseQ * quadPhaseQ));
            state.CarrierSignalAmplitudeVolt = signalAmplitude;

            // 2. 스펙클 드롭아웃 감지 판정
            bool isDropout = signalAmplitude < cfg.MinSignalLevelVolt;
            state.IsSpeckleDropoutActive = isDropout;

            if (isDropout)
            {
                // 드롭아웃 발생 시 피에조 스티어링 미러를 미세 진동(Dither)시켜 새로운 밝은 스펙클 탐색
                state.SteeringMirrorOffsetUm += 0.08;
                if (state.SteeringMirrorOffsetUm > 2.0) state.SteeringMirrorOffsetUm = -2.0;
                return;
            }

            // 3. I/Q 아크탄젠트 위상 계산
            double currentPhase = Math.Atan2(quadPhaseQ, inPhaseI);

            // 4. 위상 언래핑 (Phase Unwrapping)
            double phaseDelta = currentPhase - prevPhaseRad;
            while (phaseDelta > Math.PI) phaseDelta -= TwoPi;
            while (phaseDelta < -Math.PI) phaseDelta += TwoPi;

            // 5. 도플러 편위로부터 변위 및 속도 복원
            // delta x = (lambda / 4pi) * delta phi
            double lambdaM = cfg.LaserWavelengthNm * 1e-9;
            double deltaDispM = (lambdaM / (2.0 * TwoPi)) * phaseDelta;
            state.InstantaneousDisplacementNm += deltaDispM * 1e9;

            // 속도 v = (lambda / 2) * f_doppler = (lambda / 4pi) * (dphi / dt)
            // dt = 1 / 10,000s = 1e-4s
            state.InstantaneousVelocityMps = deltaDispM / 1e-4;
        }
    }
}

5. 국방 및 교육 현장 응용

  • 국방 미사일 탄두 및 터빈 블레이드 초고주파 비파괴 모달 테스트: 마하 5+ 극초음속 미사일 유도 조종익의 고주파 플러터 진동 및 제트 엔진 회전익 결함 진단.
  • 2022 개정 물리 및 기계공학 교과 교구: 광학 도플러 효과, 헤테로다인 간섭, 고유 진동수 모드 형상을 직관적으로 관찰할 수 있는 온디바이스 계측 실습.

6. 결론

본 LDV 스펙클 추적 헤테로다인 복조 서보 엔진은 10,000Hz 0-Alloc C# 신호 처리를 통해 광학계 드롭아웃을 실시간 회피하며 피코미터 분해능의 초정밀 진동 측정을 보장합니다.