Measurement Flow (測定フロー)¶
このドキュメントは、OSECHI宇宙線検出器の測定フローを定義します。 開発中に一問一答形式で埋めていきます。
Note
This is an early design document written during initial v1 development. Some details (e.g., output format, sampling count) reflect the v1 era and may differ from the current v2 implementation.
1. 宇宙線検出方式¶
Q1: 宇宙線をどのように物理的に検出するのか?¶
A:
- 検出原理: ミューオン(宇宙線の主成分)がプラスチックシンチレーターを通過
- 検出媒体: プラスチックシンチレーター 3枚(3層構成)
- 光検出器: MPPC (半導体光センサー)
- 信号生成: シンチレーション光 → MPPC → 電気信号への変換
- 信号処理: 増幅 → コンパレーター → 閾値判定 → ヒットカウント
2. 検出回路・ハードウェア¶
Q2: 検出信号を処理するためのハードウェアは?¶
A:
- 検出ピン数: 3個(3層構成)
- 信号経路: MPPC → 増幅回路 → コンパレーター → TTLパルス出力
- ハードウェア信号処理:
- 増幅: 必須(MPPC出力は小さい)
- コンパレーター: 閾値判定回路
- 出力: TTL信号(HIGH/LOWで宇宙線ヒットを表現)
Q3: 検出信号をどのように増幅・フィルタリングするのか?¶
A:
- 増幅: MPPC信号 → アナログ増幅器 → コンパレーター入力
- 閾値設定: 各層に独立した閾値設定(DAC制御で調整可能)
- ノイズ対策: コンパレーターの閾値超過のみをカウント
- 出力形式: TTL論理レベル(HIGH = ヒット検出)
3. ソフトウェア処理¶
Q4: ESP32でのサンプリング方式は?¶
A:
- サンプリング数: 100回/サイクル
- サンプリング方法: GPIO直接レジスタアクセス(0x3FF4403C)
- 検出ピン: GPIO12 (ch1), GPIO19 (ch2), GPIO27 (ch3)
- signal1/2/3の定義: 100回のサンプリング中にHIGH状態だった回数
- HIGH状態の意味: コンパレーター閾値を超えている
- 検出判定: signal1, signal2, signal3 のいずれかが > 0 なら検出
- データ解析: 値そのものに物理的意味なし、データ解析時に処理
- 出力条件: いずれかのチャネルがHIGHなら detected = true → シリアル送信
- サンプリングレート: ? (単位: Hz または samples/sec)
- サンプル数/周期: ? (現在: 100サンプル/サイクル)
- 検出判定アルゴリズム: ?
- 閾値判定: 閾値 = ?
- 他の方法: ?
Q5: 検出信号の信頼性をどのように評価するのか?¶
A:
- ノイズ対策: コンパレーターの閾値判定でハードウェアレベルで実施
- デジタル処理: ソフトウェアではノイズ除去フィルタなし
- 検出信号範囲: 0~100 (100回のサンプリング中のHIGH回数)
- 検出判定基準: signal > 0 ならヒットあり(値の大小は区別しない)
4. センサーデータ収集¶
Q6: 検出時に読み取る環境センサーは?¶
A:
- BME280: 温度・湿度・気圧 ✓
- 読み込みタイミング: 宇宙線検出時のみ(イベント駆動)
- 追加センサー: 現在なし
Q7: ADC (アナログ・デジタル変換)は何を測定するのか?¶
A:
- ADC入力ピン: GPIO32
- 測定対象: MPPC出力信号(シンチレーション光強度 = 宇宙線エネルギー)
- 物理的意味: 検出されたミューオンのエネルギーを記録
- ADC仕様: 12ビット解像度 (0-4095)、参照電圧 3.3V
- 取得頻度: 宇宙線検出時のみ(イベント駆動)
- チャネル選択: ボード上のジャンパーピンで1チャネルのみ選択可能
- 現在の設定: チャネル1に接続
- 他チャネルの測定: ジャンパー差し替えで変更
- 特殊処理: signal1 == 0 の場合は sensorValue を強制的に 0 に設定
- 理由: ハードウェア設計上、ADCはチャネル1に固定接続されているため
5. 検出出力・データフォーマット¶
Q8: 検出データをどのような形式で出力するのか?¶
A:
- 出力インターフェース: シリアル (115200 baud) ✓
- データフォーマット:
signal1 signal2 signal3 adcValue temperature pressure humidity - 出力頻度: 検出時のみ (イベント駆動)
- 出力例:
50 45 48 2048 25.35 1013.25 45.67
Q9: 複数検出チャネルの命名規則は?¶
A:
- Channel 1 (signal1): GPIO12 - ?
- Channel 2 (signal2): GPIO19 - ?
- Channel 3 (signal3): GPIO27 - ?
6. LEDフィードバック¶
Q10: LED点灯の意味・ロジックは?¶
A:
- LED 1 (GPIO14): signal1 > 0 で点灯(チャネル1検出表示)
- LED 2 (GPIO26): signal2 > 0 で点灯(チャネル2検出表示)
- LED 3 (GPIO33): signal3 > 0 で点灯(チャネル3検出表示)
- 点灯時間: 50ms
- 目的: 視覚的フィードバック(検出イベントを確認、デバッグ補助)
7. DAC制御 (SPI)¶
Q11: DAC (デジタル・アナログ変換)の役割は?¶
A:
- 目的: コンパレーターの閾値電圧を制御(各チャネル独立)
- 制御チャネル: 3個 (GPIO5, GPIO13, GPIO15)
- GPIO5: チャネル1の閾値制御
- GPIO13: チャネル2の閾値制御
- GPIO15: チャネル3の閾値制御
- SPI通信: 100 kHz、MSBFIRST、SPI_MODE0
- 目的: MPPC信号の増幅度またはコンパレーター閾値を調整
Q12: DAC出力値の範囲と意味は?¶
A:
- 送信データ形式: 2バイト (data1, data2)で10ビット値を設定
- コンパレーター設定範囲: 0~1023 (10ビット)
- DAC入力: 8ビット値のため、10ビット値を2回に分けて送信
- data1: 上位ビット
- data2: 下位ビット
- DACの分解能: 1カウント = 4mV
- 閾値電圧の指定方法:
- 希望の閾値電圧 Vth (mV) →
設定値 = Vth / 4 - この設定値を10ビット分割して data1, data2 に設定
- 例: Vth = 1084mV の場合
- 設定値 = 1084 / 4 = 271 = 0x10F (10ビット)
- data1 = 上位ビット、data2 = 下位ビット
8. 較正・精度¶
Q13: 検出精度をどのように較正するのか?¶
A:
- 較正方法(現在): 今後の課題
- 検討中の較正手法:
- 外部信号シミュレーション: ファンクションジェネレーターでGPIO信号をシミュレート
- 自己較正: Arduino/ESP32から較正パルス信号を出力して応答確認
- 較正内容: ボードへの外部入力に対する応答確認、検出感度測定
- 将来実装予定: 自動較正機能(ESP32から較正信号出力)
Q14: 検出信号の精度要件は?¶
A:
- 精度要件: 要確認(開発進行に伴い決定予定)
- 測定対象: S/N比、偽検出率、検出漏れ率など
9. テスト・検証方法¶
Q15: 開発中の検出動作をどのようにテストするのか?¶
A:
- 実環境テスト: 屋外で実際の宇宙線を測定
- 最終検証方法
- 複数回の測定で信頼性確認
- シミュレーションテスト:
- GPIO信号シミュレーション: ファンクションジェネレーター/Arduino/ESP32で外部パルス生成
- ADC信号シミュレーション: 別途検討予定
- デバッグモード: コード内に疑似検出ロジックを仕込む(開発時の加速テスト用)
Q16: 長時間稼働テストの基準は?¶
A:
- テスト時間: ? 時間以上(開発進行に伴い決定)
- 期待される検出数: ? 回/時間(環境に依存)
- メモリリーク確認: 有(実装予定)
- 許容クラッシュ回数: 0回
- テスト方法: RAM使用量の推移監視、エラーログ確認
10. ハードウェア制約・注意点¶
Q17: ADCとチャネル1の関係は?¶
A:
- 制約: ADC値は signal1 (Channel 1) == 0 の場合、強制的に0に設定
- 理由: ハードウェアジャンパー設定により、ADCはチャネル1に固定接続
- 複数チャネル測定: ジャンパー差し替えで別チャネルを測定可能
- 1回の測定ではいずれか1チャネルのみ測定
Q18: GPIO直接レジスタアクセスの理由は?¶
A:
- 理由: パフォーマンス(GPIO読み込みのタイミング精度向上)
- レジスタアドレス: 0x3FF4403C (ESP32固有)
- 利点: Arduino digitalRead()のオーバーヘッド回避
- サンプリングジッター: ? μs(実測定予定)
- 現在のサンプリング速度: ? MHz(実測定予定)
11. 検出器の性能指標¶
Q19: この検出器の期待される性能スペックは?¶
A:
- 検出感度: シンチレーション光強度(MPPC応答)に依存
- 検出範囲: ミューオンエネルギー範囲(要実測)
- ダイナミックレンジ: ADC 12ビット (0-4095)
- 温度動作範囲: ? ℃~? ℃(要確認)
- 消費電力: ? mW(要計測)
12. 今後の拡張予定¶
Q20: 将来的な拡張予定は?¶
A:
- 検出チャネル数の増加: 検討中(現在:3層3チャネル)
- ADC複数チャネル測定: 予定(ジャンパー差し替え方式を改善)
- 新しいセンサー追加: 検討中(要仕様決定)
- 無線通信対応: 検討中(WiFi/BLE)
- ストレージ機能: 検討中(SDカード等のデータ記録)
- 自動較正機能: 実装予定(ESP32からのパルス生成)
回答サマリー¶
| 項目 | 回答 |
|---|---|
| 検出原理 | ミューオン → プラスチックシンチレーター → MPPC光検出 → 増幅・コンパレーター → TTL出力 |
| 検出チャネル数 | 3層(各層独立) |
| サンプリング方式 | GPIO直接レジスタアクセス(0x3FF4403C)×100回/サイクル |
| 検出判定 | signal1/2/3 のいずれかが > 0 なら検出 |
| 環境センサー | BME280 (温度・湿度・気圧) |
| エネルギー測定 | ADC (12ビット, 0-4095) - チャネル1専用 |
| 閾値制御 | DAC (SPI) - 各チャネル独立、10ビット設定 |
| LED フィードバック | 3個(検出時に50ms点灯) |
| 出力インターフェース | シリアル 115200 baud |
| 出力フォーマット | signal1 signal2 signal3 adcValue temp pressure humidity |
| テスト方法 | 実環境測定 + GPIO信号シミュレーション + デバッグモード |
| 較正方法 | ファンクションジェネレーター/ESP32パルス信号(検討中) |
| 今後の拡張 | 無線通信、ストレージ、自動較正機能など |
リファレンス¶
- API Reference - モジュールAPI詳細
- Hardware Guide - ハードウェア詳細