unisat

Научная миссия — высотный профиль гамма-радиации

Проект: CanSat «РадиоПрофиль-1» Платформа: UniSat cansat_standard (Ø68×80 мм, ≤500 г) Основной датчик: SBM-20 Geiger-Müller tube (уже реализован в firmware/stm32/Drivers/SBM20/)


1. Научный вопрос

Как меняется мощность дозы гамма-излучения с высотой в приземном слое атмосферы (0–500 м) над конкретной местностью, и есть ли локальные аномалии, превышающие естественный фон более чем на 2 σ?

Вопрос имеет прикладную ценность сразу в трёх областях:

  1. Радиационная безопасность полётов БПЛА — операторы коптеров над промышленными зонами должны знать высотный профиль фона.
  2. Валидация моделей ослабления космической составляющей — существующая модель UNSCEAR предсказывает рост фона с высотой, но разрешение таблиц — 500 м. CanSat даёт профиль в 50× лучшим разрешением.
  3. Детекция техногенных источников — локальные пики (свалки, промплощадки, утечки) видны как всплески > 2 σ на фоне монотонного профиля.

2. Гипотеза

H₀: мощность дозы в высотном диапазоне 0–500 м монотонно растёт с высотой по зависимости $D(h) = D_0 + k \cdot h$, где $D_0 \approx 0.10$ мкЗв/ч (средний наземный фон), $k \approx 6 \times 10^{-5}$ мкЗв/ч/м (градиент космической составляющей в нижней тропосфере).

H₁: на профиле присутствует ≥ 1 локальная аномалия амплитудой > 2 σ относительно H₀-прогноза в окне ±20 м.

Ожидаемое: если запуск над «чистой» местностью — H₀ подтвердится. Если над промзоной / свалкой / исторической территорией (пример: Чернобыльская зона, склады изотопов) — H₁.


3. Обоснование выбора SBM-20

Параметр SBM-20 Требование миссии ✓/✗
Рабочий диапазон 0.014–144 мкЗв/ч Естественный фон ~0.1 мкЗв/ч; аномалии до 10×
Чувствительность 22 имп·с⁻¹·мкЗв⁻¹·ч⁻¹ При 0.1 мкЗв/ч → 2.2 имп/с · 60 = 132 имп/мин — статистика за 5 с окно: ≥11 событий, ошибка √N/N ≈ 30 % достаточно для H₁ при 3σ
Dead-time ~100 мкс При максимальной скорости счёта 1000 имп/с потери < 10 %
Рабочее напряжение +400 В DC DC-DC boost 3.7 В → 400 В ~ 5 г модуль
Чувствительность к β Да Отфильтруется корпусом CanSat (1 мм Al гасит β до 2 МэВ)
Масса 42 г Бюджет 50 г (трубка + HV)
Доступность Советский / постсоветский массовый датчик, ~$15–25 Легко закупить
Цифровой выход GPIO импульс (RC-дифф. → MOSFET → логический уровень) EXTI на STM32 ✓ уже реализовано

Альтернативы, почему отвергнуты:

Вывод: SBM-20 — оптимум по (чувствительность × цена × масса × сложность интеграции). Это уже зашито в firmware/stm32/Drivers/SBM20/.


4. Метод измерения

4.1 Временное окно

Компромисс: высокое временное разрешение при записи, низкочастотное сглаживание при анализе.

4.2 Триггер и метка времени

На каждый импульс SBM-20:

  1. EXTI прерывание на GPIO (rising edge, dead-time 100 мкс задан RC-константой аппаратно).
  2. В ISR сохраняется timestamp HAL_GetTick() → на SD пишется {t_ms, sample_counter}.
  3. Параллельно в 10 Hz пакете телеметрии идёт скользящий rate (события / последняя секунда).

4.3 Высотная привязка

Барометр MS5611 читается в 25 Hz (core task) с разрешением 10 см. Для каждого SBM-20 события:

altitude_m[k] = interpolate_baro(timestamp_k, baro_samples)

Линейная интерполяция между соседними baro-сэмплами (40 мс шаг) — ошибка ≤ 1.5 см по высоте.

4.4 Калибровка

Pre-flight bench калибровка:

  1. Нулевая точка: 15 минут измерений в подвале / помещении со свинцовой защитой 2 см → фон вычитается.
  2. Известная точка: эталонный источник Cs-137 активностью 100 кБк на расстоянии 10 см → ожидаемая скорость счёта 2000 имп/мин; фактическая соотносится с паспортной чувствительностью 22 имп·с⁻¹·мкЗв⁻¹·ч⁻¹ для коррекции индивидуальной трубки.

Обе калибровки записываются в docs/characterization/sbm20_calibration_<date>.csv до запуска.


5. Ожидаемые результаты

5.1 График профиля (H₀)

Altitude (m)
    500 ├─────────────────┤ ← 0.130 μSv/h (H₀ прогноз)
    400 ├───────────┤
    300 ├────────┤
    200 ├─────┤
    100 ├──┤
      0 ├┤           ← 0.100 μSv/h (наземный фон)
        └┬─────┬────┬────┬─────┬─────
          0.10 0.11 0.12 0.13 0.14  μSv/h

Кривая — линейный рост +0.006 мкЗв/ч на каждые 100 м. Интегральная доза за миссию (0.11 мкЗв/ч × 95 с / 3600 с/ч ≈ 0.0029 нЗв) ничтожна для CanSat, но её измерение с 80-метровым разрешением само по себе редко доступно CanSat-командам.

5.2 Локальная аномалия (H₁, пример)

      500 ├──────────┤
      400 ├───────┤
      300 ├──────────────────────┤ ← ПИК +0.08 мкЗв/ч (3.5σ над H₀)
      200 ├─────┤
      100 ├──┤
        0 ├┤
          └┬─────┬────┬────┬─────┬─────
            0.10 0.11 0.12 0.13 0.20  μSv/h

Пик на 300 м — признак возможного точечного источника в зоне запуска. Будет задокументирован с координатами GNSS.

5.3 Post-flight deliverables

  1. CSV с сырыми данными: altitude_m, mu_sv_per_h, n_counts_window, gnss_lat, gnss_lon, time_ms — 950 строк.
  2. Profile plot (Python matplotlib): высота vs мощность дозы с error bars.
  3. Anomaly detection script: z-score > 2 σ между измерением и H₀-моделью → помечается точка.
  4. Report (2 страницы): сравнение с UNSCEAR-моделью, найденные аномалии (если есть), методология, источники погрешностей.

6. Источники погрешностей

Источник Тип Величина Митигация
Пуассоновский шум счёта Случайная √N/N = 21 % на окно 10 с Скользящее усреднение
Cos-θ зависимость SBM-20 Систематическая ±5 % при кувыркании LIS3MDL подтверждает стабильную ориентацию
Барометр — дрифт Систематическая 2 Па / °C Термокомпенсация MS5611 встроенная
Температурная зависимость SBM-20 Систематическая ±3 % в диапазоне −10..+40 °C Логируется BME280 — post-correction
Дистанция до ближайших источников Случайная GNSS × баро дают 3D-позицию для карты
Dead-time SBM-20 Систематическая < 10 % при < 1000 имп/с Поправка N_true = N_meas / (1 − τ·N_meas)

Общая ожидаемая точность одного измерения дозы: ±25 % (1 σ), что достаточно для детекции 2σ-аномалий амплитудой ≥ 50 % над H₀.


7. Пост-миссионный анализ

Jupyter-notebook будет создан в ../../../notebooks/cansat_radiation_analysis.ipynb — шаблон публикуется вместе с baseline SITL-датасетом (см. baseline_sitl_dataset.csv) чтобы команда могла отладить весь pipeline ДО реального полёта.

Скрипт анализа:

import pandas as pd
df = pd.read_csv("flight_YYYYMMDD.csv")
df["dose_rate"] = df["n_counts"] / df["window_s"] / 22 * 3600  # μSv/h
baseline = lambda h: 0.10 + 6e-5 * h
df["residual"] = df["dose_rate"] - baseline(df["altitude_m"])
anomalies = df[abs(df["residual"]) > 2 * df["dose_rate"].std()]

Полная реализация — в notebook после миссии.


8. Связь с регламентом CanSat

Критерий регламента Как эта миссия отвечает
Оригинальность научной задачи Радиационный высотный профиль с 80-м разрешением — редко делается на CanSat-уровне
Научная ценность эксперимента Валидирует модель UNSCEAR в приземном слое для конкретной местности
Обоснование выбора датчиков §3 выше — SBM-20 победил 4 альтернативы по 5 критериям
Оригинальность использования платформы SBM-20 + 80-м разрешением по высоте через интерполяцию баро = нестандартно

Регламентный бонус: за доп. датчик (SBM-20 помимо обязательных IMU+баро) — +5 баллов за инновационность.


Связанные документы: