2022 개정 교육과정 연계 온디바이스 대기화학·에어로졸질량분석 STEM 시리즈 #65

고분해능 에어로졸 질량분석기(HR-ToF-AMS) 산화도 서보 엔진

질량 대 전하비($m/z\,44, 43$) 피크 디콘볼루션 및 0-Alloc C# 탄소 산화도($\overline{\text{OS}}_c$) 실시간 추적 제어 루프

핵심 연구 개요 및 교과 연계

초미세먼지($\text{PM}_{2.5}$)의 최대 $70\%$를 차지하는 2차 유기 에어로졸(SOA, Secondary Organic Aerosol)의 화학적 노화(Aging) 메커니즘을 규명하는 최첨단 장비는 고분해능 비행시간형 에어로졸 질량분석기(HR-ToF-AMS)입니다. 대기 중 휘발성 유기화합물(VOC)이 $\text{OH}^\bullet, \text{O}_3$ 라디칼에 의해 산화되면 카복실산($-\text{COOH}$), 하이드록실기($-\text{OH}$) 등 산소 함유 관능기가 증가하며, $70\text{ eV}$ 전자 충격 이온화(EI) 시 다이카복실산의 특성 조각 이온인 $m/z\,44$ ($\text{CO}_2^+$)와 알코올/케톤 조각 이온인 $m/z\,43$ ($\text{C}_2\text{H}_3\text{O}^+$)의 상대 분율이 극적으로 변합니다.

본 백서는 2022 개정 화학 II (유기 화합물의 관능기와 산화-환원 반응, 기체의 분자 운동론과 분자량 분석), 지구과학 II (대기 오염과 광화학 반응, 지구 복사 평형과 에어로졸 간접 효과), 미적분 (비행시간 스펙트럼 피크 가우스 수치 적분 및 2차원 판 크레벨렌(Van Krevelen) 다이어그램 상태 궤적), 그리고 정보 (C# 13 0-Alloc 스택 연산)를 융합하여, 질량 스펙트럼으로부터 원소비($\text{O:C}, \text{H:C}$) 및 탄소 산화도($\overline{\text{OS}}_c \approx 2\text{O:C} - \text{H:C}$)를 실시간 연산하고 에어로졸 렌즈 초점 전압을 자동 최적화하는 온디바이스 질량분석 서보를 구현합니다.

1. 에어로졸 산소화 유기물질(OOA) 분율 및 탄소 산화도 수리 모델

총 유기 에어로졸 질량 스펙트럼 신호 $Org$ 대비 각 조각 이온의 기여 분율 $f_{44}, f_{43}$은 다음과 같이 정의됩니다:

$$f_{44} = \frac{I_{44}}{Org}, \quad f_{43} = \frac{I_{43}}{Org}$$

에이켄(Aiken) 및 카나카리두(Kanakidou) 경험식을 통해 산소-탄소 원자비($\text{O:C}$)와 수소-탄소 원자비($\text{H:C}$)가 산출됩니다:

$$\text{O:C} = 4.31 \cdot f_{44} + 0.079, \quad \text{H:C} = 1.12 - 0.67 \cdot \text{O:C}$$

켈러(Kroll)의 평균 탄소 산화 상태(Average Carbon Oxidation State) $\overline{\text{OS}}_c$는 다음과 같이 정의되어 원발성 유기 에어로졸(POA, $\overline{\text{OS}}_c \sim -1.5$)에서 고산화 노화 에어로졸(MO-OOA, $\overline{\text{OS}}_c > 0.5$)로의 전이를 정량화합니다:

$$\overline{\text{OS}}_c \approx 2 \cdot (\text{O:C}) - (\text{H:C})$$

온디바이스 서보 루프는 $\overline{\text{OS}}_c$ 추세를 0-Alloc 스택에서 실시간 미분하여 대기 광화학 반응의 활성도를 즉시 진단합니다.

2. 0-Alloc C# 스택 기반 HR-ToF-AMS 질량분석 서보

전자 증배관(MCP) 질량 피크 적분값으로부터 원소비와 산화도를 산출하고 공기역학 렌즈 입구 유량을 제어하는 ref struct 엔진입니다.

using System;
using System.Runtime.CompilerServices;

namespace ZeliDesk.Stem.AerosolMassSpectrometry
{
    public readonly ref struct MassPeakTelemetry
    {
        public readonly double PeakIntensityM44; // CO2+
        public readonly double PeakIntensityM43; // C2H3O+
        public readonly double PeakIntensityM57; // C4H9+ (탄화수소 지표)
        public readonly double TotalOrganicMassUgPerM3;
        public readonly double InletChamberPressureTorr;

        [MethodImpl(MethodImplOptions.AggressiveInlining)]
        public MassPeakTelemetry(double m44, double m43, double m57, double totalOrg, double pressureTorr)
        {
            PeakIntensityM44 = m44;
            PeakIntensityM43 = m43;
            PeakIntensityM57 = m57;
            TotalOrganicMassUgPerM3 = totalOrg;
            InletChamberPressureTorr = pressureTorr;
        }
    }

    public readonly ref struct OxidationAnalysisResult
    {
        public readonly double OxygenToCarbonRatio;
        public readonly double HydrogenToCarbonRatio;
        public readonly double CarbonOxidationStateOSc;
        public readonly bool IsPhotochemicallyAged;
        public readonly double LensFocusVoltageDeltaV;

        [MethodImpl(MethodImplOptions.AggressiveInlining)]
        public OxidationAnalysisResult(double oc, double hc, double osc, bool aged, double vLensDelta)
        {
            OxygenToCarbonRatio = oc;
            HydrogenToCarbonRatio = hc;
            CarbonOxidationStateOSc = osc;
            IsPhotochemicallyAged = aged;
            LensFocusVoltageDeltaV = vLensDelta;
        }
    }

    public ref struct AmsOxidationTrackingServo
    {
        private readonly double _agedThresholdOSc;
        private readonly double _targetInletPressureTorr;
        private double _prevOSc;

        [MethodImpl(MethodImplOptions.AggressiveInlining)]
        public AmsOxidationTrackingServo(double agedThreshold, double targetPressure)
        {
            _agedThresholdOSc = agedThreshold;
            _targetInletPressureTorr = targetPressure;
            _prevOSc = 0.0;
        }

        [MethodImpl(MethodImplOptions.AggressiveInlining)]
        public OxidationAnalysisResult Step(in MassPeakTelemetry telemetry, double dt)
        {
            double totalOrganic = Math.Max(0.1, telemetry.TotalOrganicMassUgPerM3);

            // 1. 특성 조각 분율(f44, f43) 산출
            double f44 = telemetry.PeakIntensityM44 / totalOrganic;
            double f43 = telemetry.PeakIntensityM43 / totalOrganic;

            // 2. 고분해능 경험식 기반 원소비(O:C, H:C) 역산
            double ocRatio = 4.31 * f44 + 0.079;
            double hcRatio = Math.Max(0.5, 1.12 - 0.67 * ocRatio + 0.35 * (telemetry.PeakIntensityM57 / totalOrganic));

            // 3. 평균 탄소 산화도: OSc = 2 * (O:C) - (H:C)
            double osc = 2.0 * ocRatio - hcRatio;
            _prevOSc = osc;

            // 4. 고산화 노화 SOA 판별 (OSc > threshold)
            bool isAged = osc > _agedThresholdOSc;

            // 5. 챔버 압력 편차에 따른 공기역학 렌즈(Aerodynamic Lens) 초점 전압 피드포워드 보정
            double pressureError = telemetry.InletChamberPressureTorr - _targetInletPressureTorr;
            double vLensDelta = -15.0 * pressureError;

            return new OxidationAnalysisResult(ocRatio, hcRatio, osc, isAged, vLensDelta);
        }
    }
}

3. 교육적 가치 및 중고교 실험 시뮬레이션 적용

2022 개정 교육과정 연계 수업 가이드

  • 화학 II [탄화수소와 유기 화합물]: 화석 연료 연소 배출물질(알케인, 알켄)이 대기 중 산화 라디칼과 반응하여 산소 원자를 획득하는 유기 산화 메커니즘 분석.
  • 지구과학 II [대기 환경과 기후 변화]: 산화된 유기 에어로졸이 친수성을 띠게 되어 구름 응결핵(CCN)으로 작용하고 태양 복사를 산란시키는 기후 효과 탐구.
  • 정보 [질량 스펙트럼 데이터 마이닝]: 복잡한 이온 조각 피크 데이터로부터 수학적 선형 결합식을 통해 미지의 화학적 특성치(산화 상태)를 실시간 역산하는 분석 프로그래밍.