1. 개요
포항 방사광 가속기와 같은 거대 첨단 연구시설에서 물질의 국소 원자 배열, 화학적 산화 상태 및 화학 결합 길이를 규명하는 핵심 기법은 X선 흡수 미세 구조(X-ray Absorption Fine Structure, XAFS) 분광학입니다. 연속 스펙트럼의 방사광 백색광으로부터 수 eV 단위의 특정 흡수단(Absorption Edge, K-edge/L-edge) 에너지를 0.1eV 이하의 극미세 스텝으로 연속 스캔하기 위해서는 실리콘 단결정 기반 이중 결정 모노크로메이터(Double Crystal Monochromator, DCM)가 마이크로라디안 단위의 정밀도로 회전해야 합니다. 그러나 고강도 X선 빔에 의한 결정 표면의 불균일한 열팽창(Thermal Bump)과 피에조 액추에이터의 비선형 히스테리시스는 두 번째 결정의 출사각 요동을 유발하여 빔 위치 드리프트를 야기합니다. 본 고에서는 MOST(Monochromator Stability) 피드백 루프를 결합하여 10,000Hz 주기로 브래그 각도를 능동 고정하고 흡수 스펙트럼을 역산하는 0-Alloc C# 엔진을 구현합니다.
2. 수학적 모델링 및 지배 방정식
브래그 회절 법칙(Bragg's Law)에 따른 단색 X선 광자 에너지 \(E_{ph}\)와 회절 격자면 간격 \(d_{hkl}\) 및 입사각 \(\theta_B\)의 관계식은 다음과 같습니다:
Si(111) 결정(\(d_{111} \approx 3.1356 \text{ Å}\))의 다윈-프린스(Darwin-Prins) 고유 반치폭(Rocking Curve Width) \(\omega_D\) 및 에너지 분해능 \(\Delta E / E\)는 다음과 같습니다:
시편을 투과하기 전후의 이온화 챔버 전류 \(I_0(E)\) 및 \(I_t(E)\)로부터 획득되는 선형 흡수 계수 \(\mu(E)\)와 EXAFS 진동 함수 \(\chi(k)\)는 다음과 같습니다:
제2 결정 피에조 각도 \(\theta_2\)를 제1 결정 브래그 반사 피크의 70% 튜닝점(Detuned Point)에 록인(Lock-in)하기 위한 제어 편차 및 전압 제어 모델은 다음과 같습니다:
3. 실시간 C# 서보 제어기 구현
다음은 이온 챔버 전류 비율로부터 브래그 각도를 10,000Hz 주기로 추종하고 단색화 결정 평행도를 유지하는 0-Alloc C# 엔진 구현체입니다:
using System;
using System.Runtime.CompilerServices;
namespace ZeliDesk.Core.Synchrotron
{
public ref struct XafsMonochromatorServo
{
private readonly double _dt;
private readonly double _dSpacingAngstrom; // Si(111) = 3.1356
private double _targetPhotonEnergyEv;
private double _currentBraggAngleRad;
private double _piezoPitchOffsetUrad;
private double _i0PeakCurrentNa;
// PID 제어기 상태
private double _tuneIntegral;
private readonly double _kp;
private readonly double _ki;
public XafsMonochromatorServo(
double dt,
double initialEnergyEv,
double kp,
double ki)
{
_dt = dt;
_dSpacingAngstrom = 3.1356;
_targetPhotonEnergyEv = initialEnergyEv; // 예: 7112 eV (Fe K-edge)
_kp = kp;
_ki = ki;
_currentBraggAngleRad = 0.0;
_piezoPitchOffsetUrad = 0.0;
_i0PeakCurrentNa = 100.0;
_tuneIntegral = 0.0;
ComputeNominalBraggAngle(initialEnergyEv);
}
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public void ComputeNominalBraggAngle(double energyEv)
{
_targetPhotonEnergyEv = energyEv;
// sin(theta) = 12398.419 / (2 * d * E)
double sinTheta = 12398.41929 / (2.0 * _dSpacingAngstrom * Math.Max(100.0, energyEv));
sinTheta = Math.Clamp(sinTheta, 0.01, 0.99);
_currentBraggAngleRad = Math.Asin(sinTheta);
}
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public double UpdateEnergyScanStep(
double nextEnergyEv,
double currentI0CurrentNa,
double currentItCurrentNa,
out double measuredAbsorbanceMu,
out double actualBraggAngleDeg)
{
ComputeNominalBraggAngle(nextEnergyEv);
// 1. 피크 빔 전류 갱신 (열 드리프트 추적)
if (currentI0CurrentNa > _i0PeakCurrentNa)
{
_i0PeakCurrentNa = 0.95 * _i0PeakCurrentNa + 0.05 * currentI0CurrentNa;
}
// 2. MOST 70% 디튜닝 에러 연산 (고조파 고에너지 광자 억제)
double targetI0 = 0.70 * _i0PeakCurrentNa;
double errorI0 = targetI0 - currentI0CurrentNa;
// 3. 제2 결정 피에조 피치 각도 PI 제어 (마이크로라디안)
_tuneIntegral += errorI0 * _dt;
_tuneIntegral = Math.Clamp(_tuneIntegral, -50.0, 50.0);
_piezoPitchOffsetUrad = _kp * errorI0 + _ki * _tuneIntegral;
_piezoPitchOffsetUrad = Math.Clamp(_piezoPitchOffsetUrad, -25.0, 25.0);
// 4. 흡수 계수 mu = ln(I0 / It)
double safeI0 = Math.Max(1e-6, currentI0CurrentNa);
double safeIt = Math.Max(1e-6, currentItCurrentNa);
measuredAbsorbanceMu = Math.Log(safeI0 / safeIt);
actualBraggAngleDeg = (_currentBraggAngleRad * 180.0 / Math.PI) + (_piezoPitchOffsetUrad * 1e-6 * 180.0 / Math.PI);
return _piezoPitchOffsetUrad;
}
public readonly double TargetEnergyEv => _targetPhotonEnergyEv;
public readonly double BraggAngleDeg => (_currentBraggAngleRad * 180.0) / Math.PI;
}
}
4. 교육 및 국방 현장 적용 방안
방통대 및 초중고 전자기파·결정회절 직무연수
결정 격자면의 브래그 회절과 X선의 물질 상호작용(광전 흡수 및 인접 원자 후방산란 간섭)을 인터랙티브 가속기 빔라인 시뮬레이터로 학습. 에너지별 흡수단 점프와 배위수(Coordination Number) 결정의 화학 물리 원리를 체험합니다.
국방 차세대 스텔스 전파흡수제 및 나노 복합재료 분석
탄소 복합재 장갑 내 페라이트 및 희토류 흡수제의 원자 단위 결합 구조와 산화수 변형을 비파괴적으로 정밀 추적하여, 극한의 열과 충격 환경에서도 박리되지 않는 군용 스텔스 도료 개발에 기여합니다.