1. 2022 개정 교육과정 교과 연계 분석
- 물리학 (자기 쌍극자 모멘트, 로렌츠 힘과 회전력, 각운동량 보존 법칙): 도선 코일에 흐르는 전류 $I$와 권수 $N$, 면적 $A$에 의한 자기 모멘트 $\mathbf{m} = N I A \hat{\mathbf{n}}$와 전자기 회전 토크 $\boldsymbol{\tau} = \mathbf{m} \times \mathbf{B}$.
- 수학 (B-dot 피드백 제어 법칙 및 벡터 외적 미분): 지자기 센서로 측정한 자속밀도 시간 변화율 $\dot{\mathbf{B}}$에 반비례하는 자기 모멘트 $\mathbf{m} = -k \frac{\dot{\mathbf{B}}}{\|\mathbf{B}\|}$ 수렴성 증명.
- 지구과학 (지구 자기장의 쌍극자 모델 IGRF 및 남극/북극 복각 편각): 저궤도(500km) 상공에서의 지자기장 세기(약 $30\sim50\,\mu\text{T}$)와 궤도 위치별 지자기 벡터 공간 분포 모델링.
- 정보 (무할당 실시간 1,000Hz 3축 PWM 코일 전류 듀티 산출 파이프라인): 1ms 실시간 루프 내에서 가비지 컬렉터 없이 3축 자력계 신호를 스택 메모리로 0-Alloc 필터링하는 C# 초소형 온디바이스 위성 탑재 코어.
2. 자기 토커 상호작용 및 B-dot 댐핑 수식 모델
위성 동체 좌표계에서 관성모멘트 텐서 $\mathbf{I}$, 각속도 $\boldsymbol{\omega}$인 큐브위성의 오일러 회전 운동방정식은 다음과 같습니다.
$$\mathbf{I} \dot{\boldsymbol{\omega}} + \boldsymbol{\omega} \times (\mathbf{I} \boldsymbol{\omega}) = \boldsymbol{\tau}_{mag} = \mathbf{m} \times \mathbf{B}$$동체 고정 자력계로 측정한 자기장 벡터 $\mathbf{B}$의 시간 변화율 $\dot{\mathbf{B}} = \frac{d\mathbf{B}}{dt} + \boldsymbol{\omega} \times \mathbf{B}$에 대해, B-dot 제어 법칙을 적용한 회전 운동 에너지 $E_{rot} = \frac{1}{2}\boldsymbol{\omega}^T \mathbf{I}\boldsymbol{\omega}$의 시간 미분은 다음과 같습니다.
$$\dot{E}_{rot} = \boldsymbol{\omega} \cdot \boldsymbol{\tau}_{mag} = \boldsymbol{\omega} \cdot (\mathbf{m} \times \mathbf{B}) = -\frac{k}{\|\mathbf{B}\|} \|\boldsymbol{\omega} \times \mathbf{B}\|^2 \le 0$$이로써 외부 연료 소모 없이 지구 자기장만으로 위성의 텀블링을 완전히 멈추고 태양광 패널을 태양 방향으로 지향시킬 수 있습니다.
3. 1,000Hz 0-Alloc C# 큐브위성 B-dot 제어 코어
using System;
using System.Numerics;
using System.Runtime.CompilerServices;
namespace ZeliDesk.Education.StemSpace.CubeSatAcs
{
public readonly record struct MagnetometerTelemetry(
Vector3 MagneticFieldMicroTesla, // 3축 자력계 측정치
Vector3 AngularRateRadPerSec,
float BatteryVoltageVolts
);
public ref struct MagnetorquerCommand
{
public Vector3 CommandedMagneticMomentAm2; // 3축 자기 모멘트 (A*m^2)
public Vector3 CoilPwmDutyPercent;
public bool DetumblingConverged;
}
public static class CubeSatBdotControlCore
{
private const float MaxDipoleMomentAm2 = 0.25f; // 1U/3U 큐브위성 코일 한계
private const float BdotGainK = 1.2e5f;
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public static void ComputeBdotTorque(
ref readonly MagnetometerTelemetry tel,
ref Vector3 previousBField, // 스택 관리 이전 자기장 벡터
float dtSec,
ref MagnetorquerCommand cmd)
{
// 1. 자기장 시간 변화율 (B-dot) 계산
Vector3 bDot = (tel.MagneticFieldMicroTesla - previousBField) / Math.Max(dtSec, 0.001f);
previousBField = tel.MagneticFieldMicroTesla;
float bNorm = tel.MagneticFieldMicroTesla.Length();
if (bNorm < 1.0f)
{
cmd.CommandedMagneticMomentAm2 = Vector3.Zero;
cmd.CoilPwmDutyPercent = Vector3.Zero;
cmd.DetumblingConverged = false;
return;
}
// 2. B-dot 피드백 법칙: m = -k * (B_dot / ||B||)
Vector3 targetMoment = -BdotGainK * (bDot / bNorm) * 1e-6f;
// 3. 코일 전자기 모멘트 클램핑
targetMoment.X = Math.Clamp(targetMoment.X, -MaxDipoleMomentAm2, MaxDipoleMomentAm2);
targetMoment.Y = Math.Clamp(targetMoment.Y, -MaxDipoleMomentAm2, MaxDipoleMomentAm2);
targetMoment.Z = Math.Clamp(targetMoment.Z, -MaxDipoleMomentAm2, MaxDipoleMomentAm2);
cmd.CommandedMagneticMomentAm2 = targetMoment;
// 4. PWM 듀티비 환산 (-100% ~ +100%)
cmd.CoilPwmDutyPercent = new Vector3(
(targetMoment.X / MaxDipoleMomentAm2) * 100.0f,
(targetMoment.Y / MaxDipoleMomentAm2) * 100.0f,
(targetMoment.Z / MaxDipoleMomentAm2) * 100.0f
);
// 5. 각속도 0.5 deg/s 이하 수렴 확인
cmd.DetumblingConverged = tel.AngularRateRadPerSec.Length() < 0.0087f;
}
}
}
4. 방통대 우호성 교수 랩실 교구 및 국방 AIDT 현장 적용 가이드
초·중·고 과학교육 및 우주 동아리 탐구
본 백서는 중·고등학교 물리학의 "전자기 유도와 전류가 만드는 자기장, 토크와 각운동량, 우주선 자세 제어" 단원에서 학생들이 직접 나침반과 코일로 우주선을 멈추는 원리를 탐구할 수 있는 직관적인 교육 교구입니다. 전기를 흘리면 자석이 되는 전자석의 원리가 실제 우주에 떠 있는 위성의 회전을 멈추는 핵심 브레이크가 된다는 사실을 C# 0-Alloc 알고리즘으로 시각화할 수 있습니다.
5. 결론 및 제383호 예고
자기 토커 기반 B-dot 제어는 저궤도 초소형 위성의 생존과 임무 성공을 가능케 하는 필수 핵심 기술입니다. 이어지는 제383호 백서에서는 한국형 초전도 인공태양 KSTAR 토카막(Tokamak) 초전도 자석 D자형 플라즈마 평형 및 1,000Hz 0-Alloc C# 그라드-샤프라노프(Grad-Shafranov) MHD 평형 제어 엔진을 심층 분석합니다.