원자 1개 수준의 옹스트롬($\text{Å}$, $10^{-10}\,\text{m}$) 분해능으로 물질 표면의 3차원 형상을 관측하는 원자현미경(Atomic Force Microscopy, AFM)의 핵심 동작 방식은 시료 표면의 전단 손상을 방지하는 진폭 변조 태핑 모드(Tapping Mode, AM-AFM)입니다. 캔틸레버 팁과 시료 원자 사이의 인력-척력 레너드-존스(Lennard-Jones) 퍼텐셜 상호작용에 의해 발생하는 미세 공진 주파수 편차 및 진폭 감쇠를 감지하고, Z축 나노 압전 스테이지를 1,000Hz 주기로 0-Alloc C# PID 제어하는 고정밀 나노계측 시뮬레이터를 공개합니다.
1. 2022 개정 교육과정 교과 연계 분석
- 물리학 (단순 조화 진동, 강제 감쇠 진동자 및 공진 편차): 마이크로 캔틸레버 탄성 계수 $k_c$와 유효 질량 $m^*$에 따른 고유진동수 $f_0 = \frac{1}{2\pi}\sqrt{k_c / m^*}$, 상호작용 힘 구배(Force Gradient) $\frac{\partial F_{ts}}{\partial z}$에 의한 유효 강성 및 공진점 이동 $\Delta f_0 \approx -\frac{f_0}{2 k_c} \frac{\partial F_{ts}}{\partial z}$.
- 화학/나노재료 (원자 간 상호작용력, 레너드-존스 퍼텐셜 및 반데르발스 힘): 장거리 인력(Van der Waals)과 단거리 파울리 배타원리 척력 간의 균형점 탐색, 표면 흡착 수막에 의한 모세관력 영향.
- 수학 (비선형 조화 진동자 미분방정식 및 진폭-거리 접근 곡선): 비선형 항 $F_{ts}(z)$가 포함된 2차 미분방정식 해석, 팁 진폭 $A$와 셋포인트 $A_{set}$에 대한 Z축 나노 스테이지 폐루프 제어.
- 정보 (무할당 실시간 1,000Hz 위상 복조 및 Z축 나노 스텝 추적 코어): 포토다이오드 4분할 레이저 반사 신호를 1ms마다 샘플링하여 가비지 컬렉션 없이 지형 고도 $Z(x, y)$를 0-Alloc 재구성하는 C# 온디바이스 엔진.
2. 태핑 모드 AFM 및 레너드-존스 원자간력 수식
팁과 샘플 간 거리 $d$에 대해 레너드-존스 퍼텐셜 $U(d)$ 및 상호작용력 $F_{ts}(d)$는 다음과 같이 모델링됩니다:
$$U(d) = 4\epsilon \left[ \left( \frac{\sigma}{d} \right)^{12} - \left( \frac{\sigma}{d} \right)^6 \right], \quad F_{ts}(d) = -\frac{\partial U}{\partial d} = \frac{24\epsilon}{\sigma} \left[ 2\left( \frac{\sigma}{d} \right)^{13} - \left( \frac{\sigma}{d} \right)^7 \right]$$외력 진폭 $F_0$, 구동 주파수 $\omega$에 대한 캔틸레버 진동 변위 $z(t)$의 동적 방정식은 다음과 같습니다:
$$m^* \ddot{z} + \frac{m^* \omega_0}{Q} \dot{z} + k_c z = F_0 \cos(\omega t) + F_{ts}(d_0 + z)$$자유 진폭 $A_0$로 진동하는 팁이 표면에 접근할 때, 원자간력과의 간헐적 접촉으로 인해 진동 진폭 $A$는 감소하며, 정해진 진폭비 $r_{sp} = A / A_0$를 일정하게 유지하도록 Z축 압전 액추에이터가 피드백 제어됩니다.
3. 1,000Hz 0-Alloc C# AFM 캔틸레버 태핑 제어 코어
using System;
using System.Runtime.CompilerServices;
namespace ZeliDesk.Education.StemPhysics.AtomicForceMicroscopy
{
public readonly record struct AfmCantileverConfig(
float ResonanceFreqKhz, // 공진 주파수 f0 (kHz, 예: 300.0 kHz)
float SpringConstantNPerM, // 탄성 계수 kc (N/m, 예: 40.0 N/m)
float QualityFactorQ, // Q 팩터 (예: 450.0)
float FreeAmplitudeNm, // 자유 진폭 A0 (nm, 예: 20.0 nm)
float AmplitudeSetpointRatio// 셋포인트 비 (예: 0.75 -> A = 15nm 유지)
);
public ref struct AfmScanTelemetry
{
public float TipSampleDistanceNm;
public float InteratomicForceNanoNewton;
public float CurrentAmplitudeNm;
public float FrequencyShiftHz;
public float PhaseShiftDeg;
public float ZPiezoCorrectionNm;
public float TopographyZNm;
}
public static class AfmCantileverEngineCore
{
private const float SigmaNm = 0.34f; // LJ 평형 반경 (nm)
private const float EpsilonJ = 1.65e-21f; // LJ 퍼텐셜 깊이 (J)
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public static void StepControlLoop(
in AfmCantileverConfig config,
float sampleSurfaceHeightNm,
ref float inOutZPiezoPositionNm,
ref AfmScanTelemetry telemetry)
{
// 1. 팁-샘플 유효 거리 d = Z_piezo - Z_surface (0-Alloc)
float d = MathF.Max(0.2f, inOutZPiezoPositionNm - sampleSurfaceHeightNm);
telemetry.TipSampleDistanceNm = d;
// 2. 레너드-존스 원자간력 계산 (nN)
float ratio = SigmaNm / d;
float ratio6 = ratio * ratio * ratio * ratio * ratio * ratio;
float ratio12 = ratio6 * ratio6;
// F_ts = (24*eps/sigma) * [2*(sigma/d)^13 - (sigma/d)^7]
float forceN = (24.0f * EpsilonJ / (SigmaNm * 1e-9f)) * (2.0f * ratio12 * ratio - ratio6 * ratio);
float forceNn = forceN * 1e9f;
telemetry.InteratomicForceNanoNewton = forceNn;
// 3. 힘 구배 dF/dz 및 공진 주파수 편차 Delta f0 (Hz)
float forceGrad = -(forceNn * 1e-9f) / (MathF.Max(0.1f, d) * 1e-9f);
float f0Hz = config.ResonanceFreqKhz * 1000.0f;
float deltaF = -(f0Hz / (2.0f * config.SpringConstantNPerM)) * forceGrad;
telemetry.FrequencyShiftHz = deltaF;
// 4. 태핑 진폭 감쇠 A 모델링
// 표면과의 간헐적 반발로 인한 진폭 감소: A ~ A0 / sqrt(1 + (2*Q*deltaF/f0)^2)
float x = (2.0f * config.QualityFactorQ * deltaF) / f0Hz;
float currentAmp = config.FreeAmplitudeNm / MathF.Sqrt(1.0f + x * x);
if (d < config.FreeAmplitudeNm)
{
currentAmp = MathF.Min(currentAmp, d * 0.98f);
}
telemetry.CurrentAmplitudeNm = currentAmp;
// 위상 지연 각도 (deg)
telemetry.PhaseShiftDeg = 90.0f + MathF.Atan(x) * (180.0f / MathF.PI);
// 5. Z축 나노 압전 스테이지 PID 피드백 (0-Alloc)
float targetAmp = config.FreeAmplitudeNm * config.AmplitudeSetpointRatio;
float ampError = targetAmp - currentAmp; // 오차가 양수면(너무 눌렸으면) Z 상승
float kP = 0.45f;
float zStep = ampError * kP;
inOutZPiezoPositionNm += zStep;
telemetry.ZPiezoCorrectionNm = zStep;
// 지형 높이 산출 (Z_piezo 위치가 샘플 형상을 정밀 추적)
telemetry.TopographyZNm = inOutZPiezoPositionNm;
}
}
}
4. 교육 및 연구 현장 활용 제언
본 시뮬레이터는 한국표준과학연구원(KRISS) 나노측정센터 및 방통대 우호성 교수 연구실의 나노스케일 물성 분석 교원 직무연수에서 옹스트롬 단위 원자간력 현미경의 캔틸레버 진동 및 Z축 피드백 제어 원리를 직관적으로 이해하는 가상 나노계측 교구로 활용될 수 있습니다. 학생들은 캔틸레버 공진 주파수와 셋포인트 비율에 따른 진폭 감쇠 거동을 1,000Hz 실시간으로 시뮬레이션하며 현대 나노물리학의 정수를 체험할 수 있습니다.