光を受ける シンチレータ × SiPM
ミューオンがシンチレータを通ると、落としたエネルギーの一部が光になります。その光を 6 mm 角の SiPM(onsemi MICROFC-60035)が電気のパルスに変えます。SiPM は 40 mm 角の子基板にのっていて、子基板ごと品種を差し替えられます。
- マイクロセル 35 µm × 18,980
- Vbr 24.2〜24.7 V
- J1 / J2:HV・GND・信号 ×2
v2 基板 ・ Arduino Nano ESP32
ACCEL KITCHEN — COSMIC RAY DETECTOR v2
シンチレータの光を SiPM で受け、ピークホールドで波の高さをつかみます。Arduino Nano ESP32 が波高・時刻・温度・湿度・気圧を 1 イベント 1 行で記録し、USB・Bluetooth・microSD に同時に出力。外部の検出器を 3 台までつないで、同時計測もできます。
01 — INSIDE
光を受けてから記録するまで。カメラが該当する部品へ移動します。
ミューオンがシンチレータを通ると、落としたエネルギーの一部が光になります。その光を 6 mm 角の SiPM(onsemi MICROFC-60035)が電気のパルスに変えます。SiPM は 40 mm 角の子基板にのっていて、子基板ごと品種を差し替えられます。
裏面の LT3461 が USB の 5 V から 29.0 V を昇圧してつくり、降伏電圧より 4.3〜4.8 V 高くかけます。値は抵抗の分圧で固定。子基板の 49.9 Ω と 10 µF でノイズを落としてから SiPM に届けます。
SiPM の電流は子基板の R12(49.9 Ω)で電圧になり、U2A の非反転アンプで増幅されます。ゲインは裏面のトリマ R10 で ×5.0〜×45。入力は 1 kΩ と BAT54S で守られています。アンプの出力は TP2 で測れます。
U2B のピークホールドが、数百 ns のパルスの山を 2 倍にしてコンデンサ C6 にためます。ためた電圧は A0 に出てきます。マイコンが読み終わると、D8 から 20 µs のパルスを出して Q1 で放電し、次のパルスに備えます。
A0(ホールドの出力)を読み続け、しきい値を超えたらイベントとして扱います。外部検出器の同時判定を待ってから A0 を 12 bit で読み、その値が波高になります。しきい値は起動のたびに、A0 を 1 秒見てノイズの最大値 + 50 に自動で合わせます。
FAT32 のカードに /LOG0001.TXT から順にログを書きます。1 行ごとに書き込みを確定するので、USB を抜いても失うのはせいぜい最後の 1 行。USB と Bluetooth に出すのと同じ行がそのまま残ります。
温度・湿度・気圧を 2 秒ごとに読み、各イベントの行に書きます。気圧が上がると計数率が下がる「気圧効果」を調べられます。SiPM の降伏電圧は 1 °C あたり約 21.5 mV 変わるので、温度はあとで波高を見直すときにも使います。
基板の端に立てた 0.96 インチ OLED に、計数・計数率・しきい値・環境値を 2 秒ごとに表示。イベントごとに LED が光り、ブザーが波高に応じた高さで「ピッ」と鳴ります(対数で 500〜4000 Hz)。A7 に振動モーターを後付けすると、大きなパルスほど長く震えます。
OUT が 1 つ、IN が 3 つ。自分がトリガーすると COIN_OUT(3.3 V・100 µs)を出し、50 µs 待ってから相手の COIN_OUT を読みます。相手もほぼ同時に反応していれば、そのジャックの列が 1 になります。アナログの波高も読めます。
底のついた箱に基板を上から入れ、上蓋を M2 ねじ 4 本で留める 2 ピース構成です。前面に OLED の窓と RESET・LED の穴、側面に USB と、ジャック 4 つ・microSD をまとめた四角い開口があります。LED の光は、透明な導光パイプで前面の穴まで導きます。STL は cad/ にあります。
02 — EXPLORE
「操作する」を押すと、指で回せます。
PART
基板・ケース・ねじまで、80 個あまりの部品に説明が付いています。
SCINTILLATOR
基板もケースも同じで、光を出す部分だけが違います。広く集めたいか、小さく持ち運びたいかで選べます。
板のように広い形です。受ける面積が 25 cm² あるので、宇宙線にたくさん当たります。短い時間でも数が集まり、計数率の変化を追いたいときや、2 台を重ねたコインシデンスに向きます。
サイコロのように小さな形です。コンパクトで、持ち運びや狭い場所への設置に向きます。受ける面積が小さいぶん、数えられる宇宙線の数は少なめです。
どちらも、宇宙線が通ると光り、その光を SiPM が電気のパルスに変えるしくみは同じです。横軸は光の強さ(=落としたエネルギー)、縦軸は数えた回数です。計数率はシンチレータの面積にほぼ比例します(海抜 0 m で 1 cm² あたり毎分およそ 1 個が目安)。
ACTUAL UNIT
試作機の写真です。黒いテープで包んだ四角いかたまりがシンチレータと SiPM。手前の青い OLED に計数が出て、基板の端で緑の LED が光ります。
03 — PHYSICS
一次宇宙線(主に陽子)が大気の上のほうで原子核とぶつかり、粒子のシャワーをつくります。地上に届くのはほとんどがミューオン。海抜 0 m で 1 cm² あたり毎分およそ 1 個です。
ミューオンはシンチレータを通るあいだにエネルギーを落とし、その一部が光になります。プラスチックなら 1 cm で約 2 MeV(青い光)、CsI なら 1 cm で約 5〜6 MeV。
35 µm のマイクロセルが 18,980 個並んだ SiPM。光子が当たったセルで、なだれ増倍が起きます。
子基板の R12(49.9 Ω)で電圧になります。数百 ns の速いパルスです。
×5〜×45 に増幅し、ピークホールドが山の高さを 2 倍にしてためます。A0 の電圧がしきい値を超えたら、イベントとして読み取ります。
トリガーの約 60 µs 後に A0 を 12 bit で読み、時刻・環境値と一緒に 1 行で出します。読み終えたら D8 でホールドを空にします。
04 — SIGNAL
パルスの大きさ、アンプのゲイン、しきい値を変えると、アンプの出力・ピークホールド・記録される波高(ログの ADC 列)が変わります。ホールドのコンデンサは 1 µs に 1.36 V までしか充電できないので、速いパルスほど山を取りこぼします。
arduino/shaping.html と同じ 1 次遅れのモデル(SiPM 60035 + GAGG:Ce、R12 = 49.9 Ω、TP2 の半値幅 432 ns)に、電荷で頭打ちになるピークホールド(U2B の出力電流 30 mA ÷ C6 22 nF)を足した目安です。「ミューオン」はアンプにレールがなければ TP2 で 7.9 V になる大きさで、実際は 4.9 V で頭打ちになります。ホールドの放電は時定数 300 µs、ADC は約 3.1 V をフルスケールとして近似しています。
05 — COINCIDENCE
ミューオンは光速近くで飛ぶので、上下に重ねた 2 台をほぼ同時に通ります。SiPM のノイズや環境放射線は 1 台だけで起きることがほとんど。「両方がほぼ同時に反応した」イベントだけを選べば、ミューオンをより確実に選べます。間隔を広げるほど、真上から来たものだけが残ります。
関係のない 2 つのイベントがたまたま窓(±W)に入る頻度は 2 × W × R1 × R2。v2 の窓はおよそ ±50 µs です。
1 時間に約 0.36 回
COIN_OUT(D7、3.3 V・100 µs)と、自分のピークホールド出力 ANA_OUT
相手の COIN_OUT を D6、アナログを A1 で読む
同じく D5 / A2
同じく D4 / A6
06 — USE CASES
宇宙線の数は、場所や高さ、そして太陽の活動で変わります。実際に測ったデータの例です。
登りながら 1 分ごとの計数を記録。高いところほど大気が薄く、宇宙線が多く届きます。ふもとで毎分 7 回ほどだったのが、山頂近くでは 20 回ほどに増えました。
点が宇宙線の数、薄い青が登った高さ。1 泊 2 日の登山で測定。
モバイルバッテリーで動くので、機内に持ち込んで測れます。地上では毎分 45 回ほどが、高度 10 km 付近では 400 回ほどに。空の上では、地上の 9 倍ほどの宇宙線が降っています。
離陸から着陸まで、約 90 分の記録。
太陽が大きな爆発を起こすと、地球に届く宇宙線が一時的に減ることがあります。学校に置いた検出器は、太陽から粒子が届いた直後に、毎秒 29.5 回ほどから 28.3 回ほどへの減少をとらえました。
上:太陽から届いた粒子(人工衛星 GOES)。下:学校で数えた宇宙線。
宇宙線はコンクリートを少しずつ通り抜けながら弱まります。校舎の階ごとに測ると、上の階ほど数が増え、1 階の約 3.5 回/分に対して屋上では約 5.4 回/分でした。頭の上の天井や床が少ないほど、たくさん届くからです。この差から、壁や天井の厚みを調べられます。
校舎の 3 つの棟で、1 階から屋上まで階ごとに測定。
グラフは実際の測定例です。検出器の種類や大きさによって、数えられる数は変わります。動く絵は測定の傾向をもとにしたイメージです(フォーブッシュ効果の減り方は見やすいよう強調しています)。
07 — WEB APPS
インストールは要りません。Chrome か Edge でコンソールを開き、USB(Web Serial)か Bluetooth(Web Bluetooth)でつなぐだけです。下はその画面のデモで、ボタンを押すと動きます。
宇宙線検出器 v2 のデータ記録アプリ
宇宙線を数えよう
検出器をパソコンにつなぐと、届いた宇宙線がその場でグラフになります。
エネルギー分布ADC ヒストグラム・ビン幅 64
カウントレートの変化20 秒ごと
A0 を 12 µs ごとに読んだ波形(トリガーの前 32 点・後 128 点)。表示中は計数が止まります。
データを待っています…
Web Serial と Web Bluetooth(Nordic UART)。同じコマンドと応答で動き、切れても Bluetooth は自動でつなぎ直します。
フォルダを選ぶと、届いたデータを .dat・.csv で書き続けます。日付が変わるとファイルも分かれます。
波高の分布、計数率の推移、温度・湿度・気圧の統計。計数率はデッドタイムを引いて計算します。
A0 を DMA で 83.3 kHz(12 µs ごと)に読み、イベントごとの波形を 161 点で表示。開いているあいだは計数が止まります。
信号しきい値(起動時の自動調整つき)、microSD・外部検出器・OLED・ブザー・振動の入り切りをボタンで。
測定サーバーへリアルタイムにアップロード。複数地点の比較に。日本語と英語の表示を切り替えられます。
保存した .dat・.csv・microSD のログを読み込んで、ADC ヒストグラム・天頂角分布・エネルギー校正。
console/plotter.html マニュアルコンソールの画面の流れに沿った説明。画面写真と図つきで、技術資料は付録にまとめてあります。
console/manual.html Waveform Probe波形ファームと組み合わせて、ピークホールドの波形とベースラインのノイズを見る波形ビューア。
wave_plotter.html 旧ダッシュボードコンソールの前のダッシュボード。機能は同じで、1 枚の画面にすべてが並びます。
v2/index.html パルスの解析アナログ前段の時定数・飽和・ピークホールドの取りこぼしを、計算と実測で調べた報告。
shaping.html08 — DATA
1 個検出するごとに 1 行の記録ができます。半角スペース区切りの文字なので、表計算ソフトでも Python でもそのまま開けます。
通った粒子がどれだけエネルギーを落としたか。ヒストグラムにすると、宇宙線ごとの山が見えます。
起動からの時刻をマイクロ秒単位で。計数率の変化も、1 個ごとの間隔も追えます。
1 イベントごとにその場の環境を記録。気圧が上がると計数率が下がる「気圧効果」を、自分のデータで確かめられます。
つないだ検出器(最大 3 台)が同時に反応したかどうかが、イベントごとに残ります。重ねて置けば、真上から来た宇宙線だけを選べます。
同時に反応した相手の粒子の大きさも一緒に。2 台で同じ粒子を測ったときの比較に使えます。
データを書き込んでいて数えられなかった時間も記録するので、正しい計数率を計算できます。
まで同時に計測できる
の記録先(USB・Bluetooth・microSD)
の環境値(温度・湿度・気圧)
宇宙線を数えて記録する
09 — START
ファームウェアが書き込まれていれば、USB-C をつなぐだけで測り始めます。
USB を抜いた状態で、子基板の J1 を読み出し基板の J2 に差し、M2 のスペーサとねじで固定します。
反射材で包み、黒いテープで光をふさいで SiPM にのせます。すき間があると蛍光灯の光でカウントが跳ね上がります。
FAT32 のカードを側面の開口から J8 に。入れなくても USB と Bluetooth には出ます。
PC かモバイルバッテリーへ。起動のたびに A0 を 1 秒見てしきい値を決めるので、その間は動かさずに待ちます。
Cnt が増え、LED が光ってブザーが鳴れば動いています。Thr: がしきい値です。
Chrome / Edge で arduino/v2/console/index.html を開いて「USBでつなぐ」。時間とともにヒストグラムが育ち、計数率の誤差が小さくなります。
10 — SPEC
数値は回路図(KiCad 9)・ファームウェア(COSMICRAY_DETECTOR_ESP32-S3-Nano-v2)・arduino/description.md・shaping.html による値です。回路の見直しを反映した後継機 v2.1 では、整形段と DAC によるしきい値に置き換えています。この装置は自然の宇宙線を数えるためのもので、線量計としての校正はしていません。