Проект: CanSat «РадиоПрофиль-1»
Платформа: UniSat cansat_standard (Ø68×80 мм, ≤500 г)
Основной датчик: SBM-20 Geiger-Müller tube (уже реализован в firmware/stm32/Drivers/SBM20/)
Как меняется мощность дозы гамма-излучения с высотой в приземном слое атмосферы (0–500 м) над конкретной местностью, и есть ли локальные аномалии, превышающие естественный фон более чем на 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₁.
| Параметр | 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/.
Компромисс: высокое временное разрешение при записи, низкочастотное сглаживание при анализе.
На каждый импульс SBM-20:
{t_ms, sample_counter}.Барометр MS5611 читается в 25 Hz (core task) с разрешением 10 см. Для каждого SBM-20 события:
altitude_m[k] = interpolate_baro(timestamp_k, baro_samples)
Линейная интерполяция между соседними baro-сэмплами (40 мс шаг) — ошибка ≤ 1.5 см по высоте.
Pre-flight bench калибровка:
Обе калибровки записываются в docs/characterization/sbm20_calibration_<date>.csv до запуска.
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-командам.
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.
altitude_m, mu_sv_per_h, n_counts_window, gnss_lat, gnss_lon, time_ms — 950 строк.| Источник | Тип | Величина | Митигация |
|---|---|---|---|
| Пуассоновский шум счёта | Случайная | √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₀.
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 после миссии.
| Критерий регламента | Как эта миссия отвечает |
|---|---|
| Оригинальность научной задачи | Радиационный высотный профиль с 80-м разрешением — редко делается на CanSat-уровне |
| Научная ценность эксперимента | Валидирует модель UNSCEAR в приземном слое для конкретной местности |
| Обоснование выбора датчиков | §3 выше — SBM-20 победил 4 альтернативы по 5 критериям |
| Оригинальность использования платформы | SBM-20 + 80-м разрешением по высоте через интерполяцию баро = нестандартно |
Регламентный бонус: за доп. датчик (SBM-20 помимо обязательных IMU+баро) — +5 баллов за инновационность.
Связанные документы:
CDR.md — Critical Design Review всего аппаратаKEY_DATA_PACKET.md — формат «ключевых данных»PRESENTATION.md — слайд-дек на 10 слайдовbaseline_sitl_dataset.csv — эталонный SITL-датасет, baseline для анализа