AIDT 온디바이스 STEM 방사광 가속기 고주파 초전도 가속관(SRF Cavity) 마이크로포닉스 및 로렌츠 힘 디튜닝 피에조 보정 서보 제어기

2K 극저온 헬륨 압력 요동 및 펄스 방사압 기계공진 상쇄, 서브-헤르츠 동적 튜너 피에조 구동, 10,000Hz C# 엔진

1. 개요

차세대 4세대 포항방사광가속기 및 중이온가속기(라온)의 핵심인 1.3GHz 고주파 초전도 가속관(Superconducting Radio-Frequency Cavity, SRF Cavity)은 2.0K 극저온 초유체 헬륨 환경에서 수천만 이상의 극히 높은 품질계수(\(Q_0 \ge 10^{10}\))를 달성하여 메가볼트급 가속 전계(\(E_{acc} \ge 20\text{ MV/m}\))를 형성합니다. 그러나 가속관의 극도로 좁은 대역폭(수십 Hz 미만) 때문에 극저온 냉각 헬륨조의 기포 발생 및 압력 요동(마이크로포닉스, Microphonics)과 강한 전자기장이 가속관 내벽을 밀어내는 로렌츠 힘 복사압(Lorentz Force Detuning, LFD)에 의해 공진 주파수가 수십~수백 Hz 이상 순간적으로 디튜닝(Detuning)됩니다. 이는 빔 가속 위상 붕괴와 막대한 고주파 전력 반사를 초래하므로, 고속 압전(Fast Piezoelectric) 액추에이터를 10,000Hz 주기로 능동 구동하여 기계적 변형을 서브-나노미터 수준으로 상쇄해야 합니다. 본 고에서는 공진 주파수 위상차와 헬륨 압력 센서를 연동하는 0-Alloc C# 서보 엔진을 구현합니다.

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

SRF 가속관의 총 동적 공진 주파수 편차 방정식은 다음과 같습니다:

\[ \Delta \omega_0(t) = \omega(t) - \omega_{RF} = -2\pi \left( K_L E_{acc}^2(t) + \sum_{m=1}^{M} \Delta f_m(t) + \left(\frac{df}{dP}\right) \Delta P_{He}(t) - K_{piezo} V_{piezo}(t) \right) \]

가속관 니오븀(Nb) 내벽에 작용하는 로렌츠 힘 전자기 복사압(Lorentz Radiation Pressure)은 다음과 같습니다:

\[ P_{EM} = \frac{1}{4} \left( \mu_0 |\vec{H}|^2 - \epsilon_0 |\vec{E}|^2 \right) \implies \Delta f_{LFD} = -K_L E_{acc}^2 \]

가속관의 기계적 진동 모드(마이크로포닉스) 2차 상태 미분방정식은 다음과 같습니다:

\[ \frac{d^2 \Delta f_m}{dt^2} + 2\zeta_m \omega_m \frac{d \Delta f_m}{dt} + \omega_m^2 \Delta f_m = -2\pi \omega_m^2 k_m E_{acc}^2(t) + n_m(t) \]

디튜닝 오차를 서브-헤르츠(< 1Hz) 이내로 억제하기 위한 피에조 전압 폐루프 보상 제어식은 다음과 같습니다:

\[ V_{piezo}^{cmd}(t) = \frac{1}{K_{piezo}} \left( K_L E_{acc}^2(t) + K_p \Delta f_{detune} + K_i \int \Delta f_{detune} dt + K_d \frac{d\Delta f_{detune}}{dt} \right) \]

3. 실시간 C# 서보 제어기 구현

다음은 LLRF(Low-Level RF) 위상 검출기와 헬륨 압력 센서 신호를 10,000Hz 주기로 분석하여 피에조 구동 전압을 즉각 출력하는 0-Alloc C# 엔진 구현체입니다:

SrfCavityDetuningServoEngine.cs
using System;
using System.Runtime.CompilerServices;

namespace ZeliDesk.Stem.SrfCavity
{
    public readonly ref struct SrfCavitySensorFrame
    {
        public readonly double AcceleratingGradientMvPerM;
        public readonly double MeasuredDetuningHz;
        public readonly double HeliumPressureDeltaTorr;
        public readonly double ForwardRfPowerKw;
        public readonly double ReflectedRfPowerKw;

        public SrfCavitySensorFrame(
            double acceleratingGradientMvPerM,
            double measuredDetuningHz,
            double heliumPressureDeltaTorr,
            double forwardRfPowerKw,
            double reflectedRfPowerKw)
        {
            AcceleratingGradientMvPerM = acceleratingGradientMvPerM;
            MeasuredDetuningHz = measuredDetuningHz;
            HeliumPressureDeltaTorr = heliumPressureDeltaTorr;
            ForwardRfPowerKw = forwardRfPowerKw;
            ReflectedRfPowerKw = reflectedRfPowerKw;
        }
    }

    public ref struct SrfCavityControlCommand
    {
        public double CommandedPiezoVoltageVolts;
        public double EstimatedLorentzOffsetHz;
        public double DetuningErrorHz;
        public bool IsCavityInBandwidth;
        public bool IsReflectedPowerSafe;
    }

    public ref struct SrfCavityDetuningServoEngine
    {
        private const double LorentzCoeffHzPerMv2 = 1.2; // -1.2 Hz / (MV/m)^2
        private const double PressureCoeffHzPerTorr = 45.0; // 45 Hz / Torr
        private const double PiezoTuningHzPerVolt = 2.5; // 2.5 Hz / V
        private const double MaxSafeReflectedPowerKw = 1.5;
        private readonly double _kp;
        private readonly double _ki;
        private readonly double _kd;
        private readonly double _dt;
        private double _detuningIntegral;
        private double _prevDetuning;

        [MethodImpl(MethodImplOptions.AggressiveInlining)]
        public SrfCavityDetuningServoEngine(double kp, double ki, double kd, double dt)
        {
            _kp = kp;
            _ki = ki;
            _kd = kd;
            _dt = dt;
            _detuningIntegral = 0.0;
            _prevDetuning = 0.0;
        }

        [MethodImpl(MethodImplOptions.AggressiveInlining)]
        public void ComputePiezoCompensation(in SrfCavitySensorFrame frame, out SrfCavityControlCommand cmd)
        {
            cmd = default;
            double detuning = frame.MeasuredDetuningHz;
            _detuningIntegral += detuning * _dt;
            _detuningIntegral = Math.Clamp(_detuningIntegral, -500.0, 500.0);

            double dDetuning = (detuning - _prevDetuning) / _dt;
            _prevDetuning = detuning;

            // Feedforward for Lorentz Force Detuning: Delta f = -K_L * E_acc^2
            double eAcc = frame.AcceleratingGradientMvPerM;
            double lorentzDetuning = -LorentzCoeffHzPerMv2 * (eAcc * eAcc);

            // Feedforward for Helium Pressure fluctuations
            double pressureDetuning = PressureCoeffHzPerTorr * frame.HeliumPressureDeltaTorr;

            // Total feedforward frequency shift to compensate
            double ffCompHz = -(lorentzDetuning + pressureDetuning);

            // Feedback PID for microphonics and residual error
            double fbCompHz = (_kp * detuning) + (_ki * _detuningIntegral) + (_kd * dDetuning);

            double totalCompHz = ffCompHz + fbCompHz;
            double piezoVoltage = totalCompHz / PiezoTuningHzPerVolt;
            piezoVoltage = Math.Clamp(piezoVoltage, -100.0, 100.0);

            cmd.CommandedPiezoVoltageVolts = piezoVoltage;
            cmd.EstimatedLorentzOffsetHz = lorentzDetuning;
            cmd.DetuningErrorHz = detuning;
            cmd.IsCavityInBandwidth = Math.Abs(detuning) <= 5.0; // 5 Hz within loaded bandwidth
            cmd.IsReflectedPowerSafe = frame.ReflectedRfPowerKw <= MaxSafeReflectedPowerKw;
        }
    }
}

4. 교육 및 실무 적용 방안

  • 한국방송통신대학교 응용물리/가속기공학: 초전도 고주파 가속관 원리, 마이크로포닉스 진동 해석 및 압전 정밀 서보 제어 교구.
  • 기초과학연구원(IBS) 라온 중이온가속기 및 포항가속기: SRF 가속관 LLRF 연동 고속 피에조 동적 튜너 실장.