Open12

物理学実験

nikuniku

単一光子や電子の実験がしてみたいので、とりあえずそれに繋がりそうなことを積み重ねていく。
この前Kindle Unlimitedでどうせ大した書籍がないんだろうなと思って探したら、結構良さげなのを発見。
Kindle Unlimitedはもっと検索機能を充実させてほしい。

発見したのは「実践! 腑に落ちる放射線の計測 : ~作って学ぶスペクトロメータ~ 前編「放射線の基礎と基本設計」 Kindle版 前川立行 (著)」
https://amzn.asia/d/5bSwKNI
この本すごく良さそう。

ということで、この本に基づいて、まずは作ることを目指して作業を積み重ねていくことにした。

nikuniku

Fritzingのインストール

この本ではユニバーサル基板上に回路を実装するようで、ユニバーサル基板用回路図エディタ「marmelo」を紹介していた。だが、これはWindowsでしか使えないようなので、Ubuntu 22.04.5 LTSで使えるユニバーサル基板用回路図エディタを探したところ「Fritzing」なるものを発見した。まずは、インストールしてみる。

# fritzingのインストール
sudo apt install fritzing
nikuniku

Fritzingで回路図作成

https://amzn.asia/d/5bSwKNI
の図5-14の回路図を作成していく

Fritzingの起動

# Fritzingの起動
fritzing

(当時の感想:起動しても初めて使うので、全然使い方がわからない。まずはGUIを見て使い方を推測してみる。

  1. GUI上のタブに回路図なるものを発見、選択してみる。
  2. 回路図エディタが起動したようだ。
  3. どうやって、コンデンサなどのシンボルを配置するのだろう?
  4. GUI右側にパーツ > CORE > Basicに抵抗、セラミックコンデンサ、タンタルコンデンサ、電解コンデンサなどのイラストのアイコンがあるので、それを回路図エディタにドラッグ&ドロップしたところ、回路図にシンボルが配置された。
  5. グランドはどこだろう?
  6. パーツ > CORE > 回路図表示にあった。回路図に配置する。
  7. 配線はどうやるのだろう?
  8. とりあえずシンボルの端点からドラッグ、別のシンボルの端点にドロップでできた
    とりあえず、これで回路図作成のキホンは抑えたっぽい)

回路図の保存・再起動時保存した回路図を開く

とりあえず、回路図の作成方法はわかったので、保存して、プログラム停止して再開してみる
GUIのメニューバーに「ファイル」メニューがあったので、後は他のプログラムと同じように保存、開くができるようだ。

nikuniku

フォトダイオードからの信号取り出し部分(回路図)


フォトダイオードからの信号取り出し部分をFritzingで作成した結果のスクリーンショット

ここの部分の回路は何を考えて設計されたのか現時点では全然わからないので勉強する必要がある

nikuniku

フォトダイオードからの信号取り出し部分(回路の勉強)

まずは「実践! 腑に落ちる放射線の計測 : ~作って学ぶスペクトロメータ~ 前編「放射線の基礎と基本設計」 Kindle版 前川立行 (著)」の 92ページの◆フォトダイオードの等価回路動作というセクションから詳細に読んでいく

nikuniku

フォトダイオードの等価回路

「実践! 腑に落ちる放射線の計測 : ~作って学ぶスペクトロメータ~ 前編「放射線の基礎と基本設計」 Kindle版 前川立行 (著)」の 92ページの図4-3 cをLTSpiceを使って自分用に焼き直した


フォトダイオードの等価回路

覚えるべきこと

等価回路図の各要素の実体
I_L : 受光により生成する電流(光による励起作用で生成した電子・正孔対による電流)
D : ダイオード
C : PN接合容量(PN接合にある空乏層で生じる容量?)
R : 内部並列抵抗(電流源みなすため出力インピーダンスを決めるための抵抗?)
R_s : 直列抵抗(配線などで生じた抵抗?)

nikuniku

フォトダイオードから発生する電流の時間波形概算

フォトダイオードの等価回路の電流源からの波形を模擬したいのでそれを概算したい。

※本と違ってかなり簡略化しているし、結果も違うが、より簡易的な考え方を抑えておきたいので自分で理解しやすいように変更した。本の95ページ〜96ページを参考にした。

γ線の入射によって発生したシンチレーション光パルスを受けたフォトダイオードが出力するパルス信号がどんなものか推測する

1回のシンチレーションパルスによる電荷量を算出

  1. ・CsI(Tl)の発光量と入射するγ線から光子数を算出する
    CsI(Tl)の発光量=56000(photons/MeV)
    想定しているγ線は662keV
    光電吸収(全エネルギー吸収)により、56000 x 0.662 = 37072個の光子が発生
  2. ・シンチレーター内部の光子数の損失を算出する(フォトダイオードに入射する高指数を算出)
    特にこれといった根拠はないがフォトダイオードの光電面に入射するのは
    発生した光子数の50%とする 37072 x 0.5 = 18536個の光子が入射
  3. ・フォトダイオードの量子効率から光子が電子・正孔対数を算出する
    特にこれといった根拠はないがフォトダイオードの量子効率は75%とする
    18536 x 0.75 = 13902
  4. ・電子・正孔対数から電荷量を算出する
    電子1つあたりの電荷は1.602E-19[C]なので
    1.602E-19 x 13902 = 2.227e-15 [C]

1回のシンチレーションパルスで発生する電荷量の時間分布を算出

・CsI(Tl)の発光は680nsecでの指数関数減衰が支配的なので、大雑把に矩形パルスとして
Q = I Δt ⇛ I = Q/Δt = 2.227e-15 / 680e-9 = 3.275e-9 [A]と大まかに考える

(ホントは全然違う算出、わかりやすさ優先)

nikuniku

フォトダイオードのPN接合容量と逆バイアス電圧の関係について

まだ、後段の回路は出てきてないが、ノイズに関係する量となるフォトダイオードのPN接合容量は
あるていど逆バイアス電圧でコントロールできるようだ。

どういうことかというと
逆バイアス電圧が高い→PN接合の空乏層厚さが増える→平行平板コンデンサとしてみたとき電極間距離=PN接合の空某層厚さ、なので容量が減る
ということらしい。参考までに平行平板コンデンサの式を記載する。

C= \varepsilon \cdot \frac{S}{d} = \varepsilon_0 \cdot \varepsilon_{r} \cdot \frac{S}{d}
\varepsilon : 誘電体誘電率
\varepsilon_0 : 真空の誘電率
\varepsilon_r : 誘電体の比誘電率
S : 電極面積
d : 電極間距離

nikuniku

フォトダイオードのバイアス抵抗値の選定

ジョンソンノイズ(熱雑音)や分圧ノイズ電圧に関する記述が135ページにあったのだが、どうも納得できないので

ジャンク堂 第11回 オペアンプとノイズ(後半)

抵抗の熱ノイズを信号源として、回路の周波数特性を評価する

https://www.analog.com/jp/resources/technical-articles/tnj-004.html

https://ja.wikipedia.org/wiki/熱雑音

あたりをじっくりと勉強してみる

nikuniku

UbuntuでLTSpiceを使えるようにセットアップ

https://github.com/joaocarvalhoopen/LTSpice_on_Linux_Ubuntu__How_to_install_and_use
を参考にセットアップした。

wineのインストール

sudo apt install wine-stable

LT Spiceのダウンロード

cd /tmp
#すでにサポートは終了しているバージョンだけど、しかたない
wget https://ltspice.analog.com/software/LTspice64.exe

LT Spiceのインストール

wine LTspice64.exe
#インストールが終わったらインストーラー削除
rm LTspice64.exe

LT Spiceの実行

wine ~/.wine/drive_c/Program\ Files/LTC/LTspiceXVII/XVIIx64.exe

起動できた

nikuniku

LT Spiceで熱雑音のシミュレート

https://www.denshi.club/ltspice/2020/10/ltspice1ltspice-noize.html
を参考に実行してみる。

手順1:こんな感じの回路をLTSpiceで作成する
電源だけの回路

手順2:電源に直列抵抗を設定する
電源を右クリックすると電源の直列抵抗値を入力できる
Series Resistance[Ω]がその欄

右クリックして直列抵抗を1kΩに設定

手順3:ノイズシミュレーションの設定をする
メニューバー>Simulate>Edit Simulation Cmd をクリックすると、シミュレーションの設定画面が出てくる
その際にタブ Noiseを選択すると下の画像のような設定画面がでてくる


こんな感じで設定する。着目すべきはInputとOutputの項目、下の図で意味を推測する

*
注意点は
赤は測定したい箇所のnet labelを指定するであろうこと
緑はノイズを発生させる電源名を指定するであろうこと*

手順4:ノイズシミュレーションする
メニューバー>Simulate>Runをクリック でシミュレーション開始
シミュレーション結果、ジョンソンノイズの式を満たしていることがわかる
ジョンソンノイズの式
V_n = \sqrt{4k_B T R \Delta f}
V_n:ノイズ電圧
k_B:ボルツマン定数 = 1.38 \times 10^{-23} [J/K]
T:抵抗の温度 = 300 [K]
R:抵抗値 = 1000 [Ω]
\Delta f:帯域幅 = 1 [Hz](※単位帯域幅あたりの値を求めたいので1とする)

としてノイズ電圧を手計算すると
V_n = 4.069 [nV]となりシミュレーション結果と(ほぼ)一致している。(シミュレーション結果を数値で読む方法を現時点では知らないため)

結局何がわかったか

熱雑音源としての抵抗は電圧源のシンボルを配置しなくちゃならない。

ちょっとまてよ?

今回設定した限りじゃ、1電源にしか設定してない。どういうことか?
複数の抵抗がノイズ源となったときのシミュレーションできないのでは?
このあと、もう少し動作について掘り下げる

nikuniku

LT Spiceで熱雑音のノイズシミュレーションを少し掘り下げる

ノイズシミュレーションの特性を掘り下げるため以下のような回路を組んでシミュレーションした


PARA_Rでのノイズの大きさと、各抵抗からの熱雑音の寄与
このような回路を組んでPARA_Rの点でのノイズの大きさをシミュレーションした結果、
回路図上のそれぞれの抵抗をクリックすると、シミュレーション結果にグラフが追加される。
推測するに、それぞれの抵抗のPARA_Rの点でのノイズの大きさの寄与が示されている。
実際抵抗からの電源の二乗の和はPARA_Rのノイズの二乗と等しくなっている。
また、抵抗R1,R2のPARA_Rのノイズの大きさへの寄与はほとんど0のはずで、実際それを反映している。

ということで、ノイズシミュレーションでは、各抵抗をノイズ源としたときにノイズの大きさを評価したい場所を指定すると、その場所でのノイズと各抵抗からのノイズの寄与が与えられることがわかる


OUT_OPAのノイズの大きさと各抵抗からの熱雑音の寄与