*この記事はTAKA(JA2GRC)氏の全面的な尽力により実現できたものであり、プログラム本体、基本回路図に関して、氏に著作権があります。
また、基本コンセプト、基本仕様については、utsunomiaに著作権があります。
利用者はこの点を理解のうえ、著作者権利等遵守をお願いいたします。
*開発に関わる記事等は、氏のブログに詳細がありますので、そちらを参照下さい(巻末にリンクがあります)。基本コンセプト、基本仕様については、本文に「思考」として記載いたしましたので、ご参照ください
*この情報の利用により、使用者が受けた不利益や損失から、企画者・本文執筆者であるy.utsunomia、TAKA氏、サイト管理者は免責されるものとします。
*お気づきの点や不具合などは、当サイトに遠慮なくお寄せ下さい。
*解説や付属する機能について簡略化したEASY版もあります。
**基板レスでの組み立て写真などはEASY版を参照下さい。
*プログラムダウンロードアドレス
http://ja2grc.dip.jp/~ja2grc/my_software/my_software.htm#TGP
○簡易な目次
○仕様・概観
機能と品名 :ユニバーサル・カウンターTUC162との組み合わせを考慮した、ゲートタイミング発生装置。
ゲートパルサーTGP132
開発者 :TAKA(JA2GRC)
企画者 :Y.Utsunomia
謝辞 : 主要な仕様は企画者の考案によりますが、その解釈、すべてのコーディングは開発者によって成されたものです。矛盾や不条理などが含まれる中、実現に尽力いただいたTAKA(JA2GRC)氏に、深く感謝いたします。
また、このパルサーは学習型で、必ず学習もとの「お手本」が必要(低精度でも問題が無ければ、手動も可)ですが、この企画では広く一般で入手可能な「お手本」パルス作成ソフトとして、efu氏作、WaveGeneを推奨しています。このような優れたフリーウェアが存在しなければ、実現は困難であったかもしれません。重ねて感謝いたします。
バージョン番号 :1.34_5
採用PIC品種 :PIC16F1823
設定時間範囲:最小0.1秒~最大229分
最小値は出力パルス幅によって制限される
最小値0.1秒は、出力パルス幅50msecに由来するが、出力パルス幅を狭めることで、最小値をさらに小さく設定可能。
最大値229分は、時間十倍スイッチ機能により、2290分とすることが可能。ただし、設定時間最大値、最小値ともに、次項の分解能と関連し、初期値では115分。
時間分解能 :ソフトウェア的には最小0.4μsec、または最大3.2μsecに設定可能。ただし、使用するクロックの影響を受ける。
初期値は1.6μsec。
時間設定方法:外部からのパルス間隔の学習、またはEEPROM領域への直接書き込み。
時間記憶個数:15バンク(各32ビット幅)
出力 :ゲートパルス出力
C-MOS負論理(アクティブLOW)、パルス幅可変(標準50msec)
ゲート時間進捗出力
PWM(8bit相当、設定時間を1としたときの、相対進捗度をPWM 0%~100%で表現。メータ、LEDを想定。キャリア=500Hz
LCDモジュール用出力(主としてデバッグ用・・これを設定することで、バンク切り替えはできなくなる)
入力 :学習入力
ヒステリシス付きコンパレータ入力。
コンパレータ閾値はEEPROM領域に書き込みで変更可能。
設定範囲:+0.15V~+4.8V 32段階 初期値:0.78V(コード05)
想定信号源: C-MOSロジックハード・・閾値+3V程度設定または減衰器使用を推奨
PCソフト関数発生器(efu氏作、WaveGeneを推奨)
ユニバーサルカウンターのアップカウント入力端子と共用することを想定。学習時にはコンパレータ閾値を設定値に、通常再生時にはコンパレータ閾値を電源電圧に吊り上げ、ユニバーサルカウンター入力のインピーダンスが低下することを防ぐように配慮されている。
リセットスイッチ プッシュ閉型(タクトスイッチ可・ユニバーサルカウンタTUC162のリセットスイッチと共用することを想定。
学習モードへの切り替え(起動後、5秒以上の長押し、学習モードからの離脱は、電源断)
バンク切り替えスイッチ 4ビット・ディップスイッチ、サムホイールスイッチ(16進)、デジタルロータリースイッチ(16進)等を想定。入力はプルアップなのでコンプリートコードタイプを推奨。このスイッチの読み込みは、起動時、リセットボタンが押されたとき、学習後書き込みが終わった後に限られ、通常再生時に切り替えても、バンクは切り替わらない。このスイッチに接触不良が生じた場合の対応策としての配慮。
10倍時間スイッチ トグルスイッチ。
バンク切り替えとは異なり、常時読み込み。内部の学習数値は常に1倍。学習時、再生時に学習数値を10倍して使用。学習時1倍、再生時10倍なら、そのまま学習時の10倍のゲートタイム、学習時10倍、再生時1倍なら、1/10のゲートタイムに、学習時10倍、再生時10倍なら、学習時の時間のまま(分解能は10倍に)。
ゲートタイム10倍機能は、定時間計測の10回平均を能率よく行うための機能。
LCD表示パネルの可否スイッチ
PICの端子が、バンク切り替えスイッチとLCDへの連結が共用であるために、択一。LCD接続時のバンク切り替えはEEPROMへの直接書き込みによる切り替え。
クロック入力
クロックそのものは10MHzを想定しているが、外部からのクロック注入は、6MHz~15MHz程度で動作可能。(ただし学習範囲、分解能などが影響を受ける。動作限界については未検証)
クロックは、PIC内部のR/C発振、クロック端子へのセラロック取り付け、外部からのクロック注入に対して、起動時に自動判定。
参考精度:PIC内部R/C発振(外付け部品無し)0.1%
セラロック 200ppm(=0.02%)
水晶発振モジュール 100ppm~1ppm
原子時計モジュール 0.1ppb以下
標準的PCでのWaveGene 200ppm
注) 同じPCハードでもOSによる違いが顕著にあるようです。
WindowsでもXPよりも7では、ジッタ、精度が向上するとの指摘があります。
注意! :学習型であるため学習時と再生時のクロックが同一でなければ所定の数値は得られない。また、10ppm以上の精度を要求する場合は、それに見合ったクロックを使用し、EEPROMへの直接書き込みを推奨します。
TAKA氏の提供するHEXファイルに、書き込み値を算出するためのEXCELシートが添付されています
○開発経緯・企画の思考
ガイガーカウンターや周波数カウンターの計数構造は類似している。一般的には一定時間入力を計数し、その結果を表示するという仕組みでできている。周波数カウンターでは、周波数の定義から、1秒間(ゲートタイム)の入力をカウントし、次の1秒でそのカウント結果を表示、表示しながらカウンターは現在の入力をカウントする・・・という動作を繰り返している。つまり、1秒(1周期)遅れで集計結果を逐次表示出力しているのである。
1)1秒計数
2)→表示ホールド・直後にカウンターリセット
3)2秒計数
4)→表示ホールド・直後にカウンターリセット
note) 2)、4)は、ホールド→リセットの順で、できるだけ速く、瞬時に行われる。
実際の周波数カウンターでは、ゲートタイムは1秒だけでなく、10秒、100秒、逆に高い周波数を測る場合には、0.1秒、0.01秒のように変えることができるようになっている機種が多い。
これは必ずしも1秒測ったものを周波数と呼ぶわけではなく、2秒測った結果を2で割っても「周波数」であることにかわりはないことで注意すべきで、直読に都合がよいので、10秒、100秒、0.1秒・・・のようになっている。
ガイガーカウンターの場合はCPS(毎秒のカウント数・・周波数カウンターと同じ)やCPM(毎分のカウント数・・・CPSの60倍)が単位として用いられる。これも「必ず1分間測らなければならない」というものではなく、「1分間に換算したなら」という概念である。
ところが、周波数カウンターの場合と異なるのは、使用するガイガー管によって同じ強さの放射線であっても計数率(カウント数)が異なるうえ、一般的なガイガー管では1分間で得られるカウント数が、汚染されていない正常な状態では10~100程度しかなく、さらに個々のカウントがポアソン過程と呼ばれる、非常に気まぐれな(一定間隔ではない)状態であるために、短時間の計測では統計確度が悪く、信憑性のある数値が得にくい、という問題がある。
この問題(ポアソン過程)に対応するために、utsunomia.comでは当初から「定確度計測」を提唱してきました。また、このPIC BLOCKシリーズの第1弾として、TAKA(JA2GRC)氏の協力によりユニバーサルカウンターTUC162を開発しました。
TUC162は非常にシンプルで、汎用性に富み、低コストで製作できる有用なものと確信していますが、定時間計測に関わる機能が虚弱(敢えてそのような規格となっている)で、この点に関して(定時間計測について)も、究極の性能を求める意見が強く ありました。
ガイガーカウンターでは1分間のカウントを測り、換算係数からシーベルトを求めればいい、という安直な方にはこれらの性能はむしろ邪魔になるものとも思います。例えば、食品に含まれる放射性同位元素の崩壊イベントを正確に求めたい、あるいはもっと高い確度で数値化したい、積算線量を求めながら宇宙線由来のカウントを排除したいなどの要求や実験に使用できる機材は、これまでのところ十分にあるとは言い難く、また特定の目的のためだけにプログラムやハードを構築することは、大変な手間がかかるだけではなく、しかも入門の敷居が高くなることはもちろん、さまざまな意味で手遅れになってしまう危険性があります。
計測の論理を考え付いたら(研究として、あるいは民間の工夫として)、即座に組み立て(数分から数時間で)、試してみることができる、、そんな「部品」がもっと必要なのです。
このユニバーサルカウンターやゲートパルサーは、それぞれ数ヶ月にわたり、様々な角度から検討を加え、どのような用途にも応用ができる資産として開発されたものです。いざというときには、備蓄した資産を組み合わせることで、必要な機能が得られるように拡充することで、それぞれの機能実現のための「数ヶ月」が節約できるわけです・・・。
また小さく機能的に組み立てるのは、それなりの工作熟練が必要ですが、基本的にはブレッドボード上の組み立てで、十分な能力を発揮できるように開発されています。
このような観点からユニバーサルカウンターにふさわしいゲートパルサーを組み合わせると、様々な可能性やアイディアが創出できます。
☆構想
ゲートパルサーに必要な機能は、正確な一定時間周期を発生できることだ。
一定時間周期は一般に、正確な基準周期(周波数)を発生する装置を用意し、そこから得られる時間をもとに、その整数倍、整数分の1倍にすることで、目的の時間周期を得る。
周波数の基準といえば、音楽演奏では、古くから音叉が用いられるが、音叉の機械的な固有振動を利用したものである。
多くのデジタル機器ではクロックが必要であるため、それを発生するのに用いられるのが水晶振動子やセラミック振動子だが、これも音叉同様、機械的な固有振動である。原子時計では、原子の固有吸収周波数から基準を得ているが、それが正確であるには、物体としての寸法精度や固有の振動が安定であることをうまく利用する必要がある。
したがって、正確な周期出力を持たせるには、正確なクロックが必要となるが、この部分がコストの大部分を占めることになることは明白である(高精度=高価格)。
構想では、「正確なクロック」の部分について使用者が自分の状況に応じて自由に選択ができることを実現したかった。仕様にもあるように最小限のセットで適当な精度(0.1%程度)を低コストで得るか、極限の精度を原子時計によって得るのか。またその周波数は10MHzを想定しているが、それもその周波数が得られるか、都合で12MHzしか用意できないかもしれない。それらすべての都合に自動で対応できること。
任意の周波数(周期)を自由に設定するには、キーボードや多くのダイアルを並べる必要が(アップダウンスイッチやロータリーエンコーダで入力する場合では、表示が必要となる)あり、これだけで十分に大規模工作となってしまう。
設定はPCやプログラミング専用のハードを用意するという方法もあるが、この場合にはインターフェースの問題が重くのしかかる。利便性や標準的なインターフェースを搭載することは、組み立てが不自由になってしまうのである。
これらをまとめると、この要求に応えられるゲートパルサーは、表示を持たない、大規模な入力装置は持たない、精度は必要に応じてクロック選択できて、そのクロックで得られる上限の精度が得られる、という条件になる。
仕様をおおまかに決めることは容易だが、実際のプログラムでは学習数値がそのまま再生時の数値にならないなどの問題が生じたり、、仕様と現実のギャップについてはTAKA氏のブログに詳細があります。
この条件を満たすべく考案した手法が「学習型」ゲートパルサーである。ドリフトがなければ、動作範囲内のクロックで、学習時と再生時が同じクロックであるなら、使用者は内部の数値を意識することなく、任意の時間間隔(ゲートタイム)を学習させ利用することができる。もし、外部クロックであるなら、複数用意したゲートパルサーは周期において同期関係であることが保障され、内部数値も共有することができる。
内部数値を複数記憶することができるようにすることで、実際に現場に持ち出した場合でも、困ることは少ないだろう。ガイガーカウンターとして実使用時に、複数のガイガー管を切り替えて使用すると仮定し、15種類のゲート時間を学習記憶できるとし、また、10回平均化相当として10倍時間スイッチを装備。
スイッチは実使用において、リセットスイッチ、バンク切り替えスイッチ、10倍時間スイッチのみで、リセットスイッチはユニバーサルカウンターTUC162のリセットスイッチと共用できる。またこれらのスイッチはすべてプルアップされていて、実装しない場合は、リセット=通常、バンク=F(16)、10倍時間スイッチ=1倍となる。
*複数のゲート時間を用意する理由
ガイガー管の感度に相当するパラメータとして計数率があるが、これはガイガー管の種類や厳密に言えばガイガー管個々に固有のものである。また、γスペクトルに対しても固有の特性を持つために、単純に換算はできないが、それでも測定値をつき合わせて数値の比較を行ったり、いい加減であることを承知のうえで線量当量に換算する必要がある。
一般的には1分間に得られたカウント数に、換算係数を乗じて(掛け合わせて)線量当量を導くが、換算係数そのものが小数点以下6桁にも及ぶもので、乗じたことで得られた数値の有効桁数や、信憑性が実にまぎらわしい。拙作「簡易な換算」を参照。[SBM-20の場合コバルト60の場合の係数は0.00664、ラジウム226で0.00504]
この問題を単純化するには、1分間カウントして係数を乗じるよりも、係数の根拠となった数値150.51cpm(=1μSv/h・・コバルト60)から逆算し、60秒(1分間)×100(cpm)÷150.51(cpm)=39.86(秒)間計測すれば、直読(100cpmとして計算しているため、読み取った数値を1/100しなければならないが・・)することができ、しかも誤差が蓄積したり有効桁数で悩む必要が無い。プログラムもすべて整数演算で行うことができるため速度低下が起こりにくい。
また、学習型であるので、39.86秒のように半端な数値であったとしても、学習時にお手本パルス間隔をその数値にしておくだけでよいので、装置としての入力I/Fや表示が大掛かりにならずに済ませることができる。
つまりガイガー管固有のγ線計数率からゲート時間を割り出し(上記の式で)そのゲート時間(あるいはその10倍の時間)計測すれば、めんどうな浮動小数点掛け算のプログラムや精度計算を排除することができるのである。実にスマートでしょ!!
(このあたりのノウハウやアルゴリズムは、旧ソビエト実機から学んだものです)
*バンクの使用例 (SBM-20 ×1本として)設定周波数は、手本周期発生にWaveGeneを用いた場合の例。
[適用範囲:SBM-20を所定の条件(動作電圧400V±20V、アノード抵抗5MΩ±10%、カソード検出、必要十分なβ線遮蔽を施したものの例であるが、運用方法やアセンブリー方法によって変動があることを考慮ください]
バンク番号
時間
設定周波数(Hz)
意味
#1
1.0秒
1.00
cps
#2
3.986秒
0.251
μSv/h直読(×1/10)高速・高線量向け
#3
39.86秒
0.0251
μSv/h直読(×1/100)通常
#4
60.0秒
0.01666
cpm
#5
100秒
0.01
cps100回平均
#6
3600秒(60分)
0.000277
β線ストリーム計数
#7
6000秒(100分)
0.0001666
β線ストリーム計数
* #2、#3の線量当量への変換は、厳密には標準線源による校正・確認を必要としますが、正常なSBM-20を正常な運用方法で使用する限り、計数率そのものは標準値±15%程度に収まるようです(220本からの調査による)。
* 計数率が正しい=正確な線量当量が得られる、ではないことに注意。
* #2や#3で得られた数値は線量当量直読相当であるが、得られた数値に150.51(cpm)/100(cpm)することでリアルcpmが得られる。
実機例としてSIM-05では、SBM-20が2連装であるため、300(330)cpm/μSv/hで換算されるが、ゲートタイムを20秒とし、3回のゲートタイムでリアルcpmが得られるように作られている(公式なゲートタイムは25秒のようだが)。
* この数値群に、さらに10倍時間スイッチがあるので、計測メニューはさらに豊富になる。
実際に自分が所有するガイガー管すべて、あるいはそれらを複数化したものなどのデータから直読に必要なゲート時間を割り出し、15のバンクに配置しておけば、いかなる組み合わせであろうと、学習の手間だけで解決することができる。カウントについてのみでよいなら、PMTを用いたシンチレーションでも十分な能力を発揮する。
また長時間に対応しているのは、β線ストリームからベクレル計算するための配慮で、TUC162の機能である減算入力の同時利用機能を用い、バックグラウンドの補正も同時にこなすことができる(数十分~100分・・SBM-20×2本の場合)。
○特徴:
製作容易
基本回路部分について、徹底した省部品化により、PIC、LCDモジュール、パスコン(0.1μFセラミック)以外の部品は不要。
*入出力端子や保護回路、スイッチ類を除く。
ピンの並びが考慮されているため、配線をシンプルにまとめることができます。ユニバーサルカウンタTUC162とともに、基盤レスで組み立てる場合、共通端子が4本あるため、2段重ねにレイアウトしやすい。
セットとして、学習入力はTUC162の入力端子と、リセットスイッチはTUC162のリセットスイッチと共用できるため、操作系やパネルを単純化しやすい。
*ただし、学習を行うには、最低、リセットスイッチ1つが必要。
バンク切り替えの4本の端子は、内部でプルアップされているため、バンクを1つしか利用しない場合は、配線不要。
小型軽量
製作容易にもあるように、外付け部品が無く、また基板省略できることから、時間発生を使用する用途一般に応用が可能で、わずかな隙間があれば組み込むことができる。
ステータス表示
とくに動作ステータスの表示は付いていませんが、再生時には進捗表示出力があるため、この表示を確認することで、動作状態を把握することができる。
この出力はキャリア周波数500HzのPWM(パルス幅変調)信号で、LEDや小型の電圧計(アナログまたはデジタル)を接続可能で、別の回路への情報出力としても利用可能である。(直列抵抗値に注意のこと)
○使用部品
マイクロコントローラー :PIC16F1823
参考価格:¥90~¥210-
(プログラム書き込みにはMICROCHIP製 PICkit2以降とPCが必要。
書き込み方法については、諸注意とともに後述)
プッシュスイッチ :プッシュ・オン・タイプ
タクトスイッチ可
リセットスイッチとして使用。ユニバーサルカウンターTUC162と組み合わせる場合、それぞれ独立のリセットスイッチである必要は無く、共用のスイッチ一つでリセットを兼用することができる。
LED :各種の色、各動作電圧のものが使用可能
ゲートタイム進捗表示、内部の動作状態の表示ただし進捗状態は、PWMリニアになっているので、LEDを正面直視では増大具合が見えづらく、光学的配慮が必要。
また小型電圧計あるいは回路テスタ(アナログ・デジタルを利用可能。進捗満了で約5VDCとなるので、電圧計を使用する場合には、直列抵抗でフルスケール値を合わせておく。
○PICへの書き込み
ユニバーサルカウンターTUC162の解説を参照ください。
本ゲートパルサーでは想定している「学習型」として利用する以外に、PICのEEPROM領域に直接数値を記述するような利用が考えられます。
注意)
その場合、PICKIT2を用いてアクセスすることになりますが、PICKIT2が用いる端子とバンク切り替えのスイッチが重複するため、PICKIT2でアクセスする場合はDIPスイッチなら全てOFF、
デジタルロータリースイッチ(コンプリートコード)の場合なら「F」、デジタルロータリースイッチ(リアルコード)の場合は「0」を設定しPIKIT2でアクセスしてください。
もしこれ以外の設定になっている場合は、「PICが見つからない」のメッセージがPICKIT2コントロールソフト画面上に表示されます。
○操作とLED表示
☆再生
通常の起動を経た場合、ゲートパルサーは再生状態(学習した結果のタイミングで、連続したパルス出力)となります。
ただし、起動時最初の2秒間はユニバーサルカウンターや周辺装置との調相を行う期間として出力はMUTEされます。このときにPWM出力は100%のまま(LEDは全灯)
起動時にバンク番号とその内容を読み込みなおします。
リセットボタンとバンク切り替え
通常再生動作中にリセットボタンを押すとゲートパルサーの時限動作はリセットされ、1秒間の調相期間(その間にバンク番号とその内容を読み込みなおし)を経て再び再生状態に戻ります。
バンクを切り替えた場合は、必ずリセットボタンを押してください。バンクを常時読み込まないのは、このスイッチの接触不良に起因する動作不良を回避するためです。
10倍時間スイッチ
10倍時間スイッチは常時読み込みで、再生中でも学習中でも切り替えるとただちに時限動作に反映します。また、この1:10は正確な比率で実行されますが、同じ時限を得るのに、10倍は1倍よりも時間解像度が1桁低下します。通常は1倍(スイッチでは開)で使用することを推奨します。
主要な用途は、1倍のゲートタイムの10回平均相当を得ることを想定しています。
☆学習(sampling)
1)起動後5秒以上経過してから、リセットボタンを5秒長押しすると、学習モードへ入ります。
●WaveGeneを用いる場合、周波数をセットし、■ボタン(出力停止)で待機。
2)リセットボタンを押すと、LEDは全灯になりますが、5秒後に5%の明るさにダウンします。= 学習モードへの移行の表示 → 学習入力パルス待ち状態
注)このときにバンク番号が読み込まれます。
●WaveGeneの再生ボタン(緑右向き三角ボタン)を押しパルスを発生。
3)学習入力に最初のパルスが入力されると、LEDの明るさが5%から100%に変わり、パルス入力を受け付けたことを使用者に知らせます。
4)学習入力に次のパルスが入力されると、LEDの明るさが100%から点滅に変わり、学習したことを知らせます。
しかし学習が終了したわけではなく、ひきつづき次のパルスが入力されるのを待っていますが、その間もLEDは点滅のままです。
★★学習プログラムは複数の学習パルスが入力されたときに、最後のパルス間隔を有効データとして採用します。
●WaveGeneの■ボタンを押し、パルスを出力を止める。
注) この時点でも、学習結果はまだEEPROMに書き込まれません。間違った操作ですでに入っているデータを上書きしないための配慮で、書き込むバンクが間違っていたり、学習するつもりで無かった場合は、電源をOFFにすることで、その学習を無効とし、上書きを防ぐことができます。
5)★★★LED点滅中にリセットボタンを押すと(常時読み込みではないので1秒程度押す)「現在の学習結果」が「学習モードに入ったときのバンク番号」のEEPROMに書き込まれます。書き込まれるとLEDが全灯に変わります。
注)LEDが全灯にならない場合はEEPROMに書き込まれていません。もう一度リセットボタンを押してみてください。
重要) バンク番号は原則としてリセットボタンを押したときに読み込まれますが、★★★のステップ(学習後、EEPROM書き込み前・・・LED点滅中)では「EEPROMへの書き込み→バンク番号の読み込み」となっています。
したがって学習動作に入った後にバンク番号を切り替えても、そのバンクには書き込まれません。その学習が始まったときのバンク番号に書き込まれます。
このロジックは、連続して複数のバンクを次々に書き換えるための工夫です。どうぞご理解ください。
注) ステップ3)で、WaveGeneから出力が送られているはずなのに、LEDが全灯にならない(つまり、ゲートパルサーが学習入力を受け取れない)場合、多くはWindows側のオーディオ設定が原因で、出力ミキサーや出力レベルが低い場合、受け取れない場合があります。出力の形式は「ライン」でも「ヘッドホン出力」のどちらでも問題なく受け取れるはずです。稀にオーディオデバイスそのものの出力が低く、閾値に達しない場合があるかもしれませんが(utsunomia側では6台のPCで確認したがすべて正常)、外付けデバイスがある場合、それを利用してみるのも、解決策としてよいと思います。
また外部オーディオデバイスの場合サンプリング周波数が96KHzなどの設定ができる場合、できるだけ高いほうが、分解能は上がります。分解能そのものは、サンプリング周波数の逆数になります。
☆複数の学習を効率的に行う
1)●WaveGeneに周波数をセットし、■で停止しておく。
2)書き込む最初のバンク番号にセットする。
3)起動後5秒以上経過してから、リセットボタンを5秒長押し、学習モードへ入れる。
4)LEDが5%になり学習待機状態を確認したら、WaveGeneをスタートする。
5)LEDが点滅になったら、
WaveGeneを停止し、
WaveGeneに次の周波数をセット
次の書き込むバンクに切り替え
6)リセットボタンを押し、EEPROMに書き込み(+次のバンクを読み込み)・・4)に戻る。
最後にリセットボタンを押し、電源を切り、学習モードから脱出する。
☆WaveGeneの設定(WaveGene ver,1.40)
ダウンロード・アドレス
http://www.ne.jp/asahi/fa/efu/soft/wg/wg.html
WaveGeneの主操作パネルには表示されませんが、最初にこの作業に使用するオーディオデバイスが選ばれているか確認します。
確認は主操作パネルの右上のスピーカー印をクリックすると、デバイス画面が現れ、再生デバイスが選択できるようになります。
PCのオーディオ出力(ヘッドホンまたはライン出力)を選び、Windows画面下の通知領域にあるスピーカアイコンをクリックし、出力を最大にします。
ノートPCなどで、Fnキーで音量を可変できる場合は、同様に最大にセットします。
これらの準備ができたら、PCのオーディオ出力と、ゲートパルサーの学習入力を接続します。
主画面は次のように設定を行います。
画面上段サンプリング周波数 : 48000(Hz)
ビット深度 : 16(bit)
Wave1のみ使用
波形 : パルス
周波数 : 後述の計算式に従い、算出した値を入力
出力レベル: 正(+)のパルスが出力されるように、最大にセット(後述)
スィープ、変調 : チェックなし
オフセット、ゲートON、ゲートOFF:すべて0
出力チャンネル:L
Wave2、Wave3は出力チャンネル(最下段)OFF
Note;
PCハードにより、波形にパルスを選択しても正(+)方向のパルスが出力されるか、あるいは負(-)方向のパルスが出力されるかは不明。
(筆者が所有するPCでは、半々であった)
実際にパルスを出力し、ハードオッシロスコープなどで確認すればよいが、ゲートパルサー製作者の多くは、ユニバーサルカウンターTUC162も製作していることと思う。
PCの出力にTUC162を接続し、TUC162の閾値を「05」程度にセットし、WaveGeneのパルス出力をカウントするようであれば、その出力は正パルスと考えられる。
もし出力をカウントしないようであれば、出力が負方向のパルスの可能性がある。
その場合は、周波数設定窓の下の出力レベル(窓横の単位はデフォルトでdB)の単位にカーソルを合わせ、右クリック。単位の選択画面が現れるので、%を選択する。入力窓に「-100」を入力すると、出力波形が極性反転し、負出力だった場合には正出力にかわる。
この状態でカウントするようであれば、元の状態が負出力であったのだろう。
ゲートパルサーは正出力のパルスしか学習しない。
★設定する周波数の計算
ガイガー管のデータシートを調べ、γ線感度を見つける。
SbM20(旧ソビエト製)
22cps/mR/h 60Co 毎分では22×60=1320cpm/mR/h
29cps/mR/h 226Ra 毎分では29×60=1740cpm/mR/h
LND712(アメリカ製)
18cps/mR/h 137Cs 毎分では18×60=1080cpm/mR/h
この数値の意味は、最上段、コバルト60から毎時1ミリレントゲンの強度のγ線をSbM20に照射したときに、毎秒22カウントすることを表している。
同じγ線の単位線量であるにも関わらず、線源の物質によってカウント数が異なる性質がある。(60Co=コバルト60、226Ra=ラジウム226、137Cs=セシウム137)
1(ミリ・レントゲン[mR])=8.77(マイクロ・グレイ[uGy])=8.77(マイクロ・シーベルト[uSv]上記のウエイトとして) で換算されるので、1μSv/hは
SbM20では
1320÷8.77=150.51cpm(=1uSv/h)(コバルト60)
1740÷8,77=198.40cpm(=1uSv/h)(ラジウム226)
LND712
1080÷8.77=123.14cpm(=1uSv/h)(セシウム137)
拙作「簡易換算」から引用
注)1[mR]=8.77[uGy]=8.77[uSv]とともに、1[mR]=10[uGy]=10[uSv]とする換算方法も一般に使用されている。その場合はSBM-20 132cpm/uSv/h (60Co)174cpm/uSv/h (226Ra) LND712では108cpm/uSv/h (137Cs)。
両者の間で、大した議論もなく、また実用上の支障も無い・・・程度の大雑把な換算しかできないと考えることが妥当。しかしこれは絶対的な数値換算についてであり、相対的な測定値の比較は、これよりもはるかに(2桁以上)正確で、また意味のある事象だ。
同じSBM-20であっても放射核種により計数率がことなるという厄介な問題もあるが、一般的には150~166cpm/μSv/hを採用することが多いようだ。
(utsunomia.comのワークショップで歩数計を用いた製作では、低レベルのカウントが低率であったことと、係数速度が遅いという問題から100cpm/μSv/hを採用していたが、ワークショップで製作したガイガープローブもTUC162でカウントする場合は150~166cpm/μSv/hを採用ください)
仮に166cpm/μSv/hを採用するなら、
直読できるゲートタイムTは T=60×(100/166)=6000/166=36.145秒
設定する周波数「F」はその逆数なので、F=1/36.145=0.02766Hz
となる。
LND712の場合は0.0205Hzとなる。
この数値をWaveGeneの周波数設定窓に入力すれば、あとはそれを学習させるだけでよい。
★カタログデータから換算したゲートタイム一覧
注)この一覧はあくまでカタログデータからの換算値で、実測値と合致しないものもそのまま記載しています。利用は参考に留めてください。
品名 公称値
核種
出典
cpm/uSv/h
gate time(sec)
設定周波数(Hz)
SBM-20
22cps/mR/h
29cps/mR/h
SBM-20 X2 (SIM-05)
48.24/mR/h
SBM-20/TX4B(DP-5V)
26.5cps/mR/h
LND-712
18cps/mR/h
SBT-11A
44cps/mR/h
41.5-54.5cps/uR/s
SBT-10A
240cps/mR/h
322.5-402.3cps
SI-3BG
188-282cps/R/h
60Co
226Ra
137Cs
All
137Cs
137Cs
↑
137Cs
↑
不明
公式
公式
準公式
公式
非公式
参考
公式
参考
公式
150.51
198.40
330
180
123.14
301.02
180
1642
1300
1.29~1.93
39.86
30.24
18.2
33.33
48.73
19.93
33.33
3.654
4.6
4651~3109
0.025
0.033
0.055
0.030
0.0205
0.0501
0.030
0.274
0.217
0.000215~0.000322
パンケーキ管(マイカ端窓 上記SBT-10A、SBT-11A)では、正面はマイカ窓で、コンプトン散乱が低く抑制されているために、正面からのγ線感度が極めて低い。
ガイガー管のγ線感度(計数率)はγ線直接の検出ではなく、金属壁に衝突したγ線が電子を管内部にはじき出す(散乱)ことで、間接的に検出している。
このため、正面からのγ線検出を行うには、鉛や鉄でできた1mm~2mm 程度の散乱板を使うようで、これを用いない場合、上記のパンケーキ管は上記の数値にも達しない。そもそもこれらの管は、γ線検出で線量等量を算出するには向かないようだ(β線、α線による表面汚染の検出向け)。
筆者の自家用工作ではパンケーキ管単独ではなく、金属管のものとの併用、また製品実機では2台のパンケーキ管を用いて、片方は散乱板を固定設置し、対処していることが多いようである。
☆クロック精度、あるいはその表れ
PCでタイミング発生し、アナログ的に受け取り学習するという手法は、如何に短時間のパルスであったとしても、一定の取り込み誤差が生じる可能性があります。例えば、PCのオーディオ出力は直流からの帯域はありませんが、パルスそのものを正しく伝送するには直流からの帯域が必要で、実際にオーディオ出力からのパルス波高を変えて伝送してみると、ゲートパルサーが正しく受け取れない、あるいは誤差が大きいなどの症状が出ることがあることが確認できます。
しかし、多くの分野の計測は(とくに放射線量では)、一定の熟練や、コツと呼ばれる要素があり、このゲートパルサーの学習機能もアナログ伝送であることから同様の問題から逃れることはできません。
学習ができたら、必ず学習結果が妥当であるかどうか、確認することを習慣付けましょう。
長周期のゲートでは、ユニバーサルカウンターTUC162の左3桁に、ゲートタイムが秒で表示されます。
TUC162が指定の方法で校正されていたら、誤差は0.1%以内のはずなので、表示は下一桁で±1(秒)になるはずです(1000秒以内の場合)。TUC162、ゲートパルサーの学習が、ともに正確であっても、やはり下一桁には±1(秒)の誤差は出るもしれません。
ゲートタイムが1秒や10秒(あるいは整数の秒数・・計算が必要だが)の場合、学習後に、そのゲートタイムを呼び出し、WaveGeneから、1000Hzや10000Hzのパルスを発生させ、ユニバーサルカウンタ(ゲートモード)で計測すると、やはり一定の誤差が生じます。PIC内臓のクロックを用いている場合、その誤差は0.1%程度はあるので、有効桁数3桁目以下で誤差が生じることは正常と言えます。
例えばゲートタイム10秒(学習)、周波数1000Hzの場合、表示はおよそ10000になりますが、10033や10015に、あるいは9993や9996になる場合もありますし、それが変動もします。
もしクロックに十分な精度の水晶発振モジュールなどを用いて、学習・再生すれば全桁ぴたりと合います。学習と再生の両方で同じ高精度が必要です。
上記のような数値の変動があっても失望しないでください。これが精度の本質なのです。
参考) セラロック(10MHz)を実装すると有効数4桁に、標準的水晶モジュールで5桁、高精度水晶モジュールで6桁、ルビジウム発振器で10桁の精度と安定性が得られます。 必要に応じてご利用ください。またこれらを交換した場合、学習をしなおす必要があります。
単独クロックを複数のゲートパルサーで共有する場合は、学習内容の数値も共有できます。
上図は開発用の回路図で、LCDは必須ではありません。LCDを装備すると、バンク切り替えスイッチが使用できなくなります。LCDかバンク切り替えスイッチかは択一です。
EEPROMへ頻繁に読み書きを行う場合は、PICKIT2用の端子を装備しておくことをお勧め します。筆者のセットでは、周りとの接触をおきにくくするために、このPICKIT2との連結に、オスピンヘッダーは使用せず、メスピンヘッダーとし、PICKIT2側に「オスーオス」のジョイントを使用しています。
○EEPROM マップ
Address
レンジ
初期値
意味
00
01
02
03
04
00~1F
00~03
--
00~FF
00~FF
05(0.78V)
02(1/4:1.6us)
00
E8
01
学習モード入力感度 0~5V、32段階
内部プリスケーラ
設定 分解能 最大ゲートタイム
00=1/1 0.4uS 1,717S (29Min)
01=1/2 0.8uS 3,435S (57Min)
02=1/4 1.6uS 6,871S (115Min)
03=1/8 3.2uS 13,743S (229Min)
極性、未使用
出力パルス幅:03、04、05
03、04番地をつないだ値がタイマー値05
00~08
07
05番地:プリスケーラ
00=1/2 04=1/32 08=1/1
01=1/4 05=1/64
02=1/8 06=1/128
03=1/16 07=1/256出力パルス幅計算式
基本クロック×タイマー値×プリスケーラの逆数
システムクロックが10MHzの場合、基本クロックは400nS
50mS : 03=E8 04=01 05=07
6uS : 03=08 04=00 05=08 設定下限値
06
07
08
09
01~0F
00~01
00~FF
00~FF
01
00
04
0D
LCD使用時のバンク番号
LCD使用時の10倍時間モード(00=X1、01=X10)
学習モードに入るまでのリセットボタン押し時間(秒
学習モード時待機状態でのLED輝度(5%)
0A~0F
10
11
12
13
14
15
16
17
18~1F
--
00~FF
00~FF
00~FF
00~FF
00~FF
00~FF
00~FF
00~FF
FF
10
28
08
14
04
0A
02
05
FF
Reserved
01番地=00時の学習補正値
01番地=00時の再生補正値
01番地=01時の学習補正値
01番地=01時の再生補正値
01番地=02時の学習補正値
01番地=02時の再生補正値
01番地=03時の学習補正値
01番地=03時の再生補正値
Reserved
20~23
--
FF FF FF FF
BANK 0
バンク0は学習禁止+出力禁止
以下のバンクデータ初期値は、01番地設定を02とし、クロック10MHzとしたときのゲートタイム24~27
28~2B
2C~2F
30~33
34~37
38~3B
3C~3F
40~43
44~47
48~4B
4C~4F
50~53
54~57
58~5B
5C~5F00~FF
00~FF
00~FF
00~FF
00~FF
00~FF
00~FF
00~FF
00~FF
00~FF
00~FF
00~FF
00~FF
00~FF
00~FF24 F4 00 00
48 E8 01 00
B4 C4 04 00
68 89 09 00
D0 12 13 00
08 AF 2F 00
10 5E 5F 00
20 BC BE 00
60 34 3C 02
C0 68 78 04
E0 05 2D 0B
C0 0B 5A 16
80 17 B4 2C
C0 3A C2 6F
80 75 84 DFBANK 1
BANK 2
BANK 3
BANK 4
BANK 5
BANK 6
BANK 7
BANK 8
BANK 9
BANK A
BANK B
BANK C
BANK D
BANK E
BANK F0.1秒
0.2秒
0.5秒
1秒
2秒
5秒
10秒
20秒
1分
2分
5分
10分
20分
50分
100分
○開発記「TAKAさんの毎日が発見・ブログ」の関連記事
・PIC Gate Pulse Gen : 初めに。 32ビットカウンタの動作確認 (この記事)。
http://ja2grc.blog3.fc2.com/blog-entry-2023.html
・PIC Gate Pulse Gen その2: バラツキ、内部RC発振と外部セラミック発振の違い。
http://ja2grc.blog3.fc2.com/blog-entry-2024.html
・PIC Gate Pulse Gen その3: 学習モード(お手本パルスの測定)。
http://ja2grc.blog3.fc2.com/blog-entry-2026.html
・PIC Gate Pulse Gen その4: システムクロックの自動切り替え
http://ja2grc.blog3.fc2.com/blog-entry-2027.html
・PIC Gate Pulse Gen その5: 全体をまとめてみる。
http://ja2grc.blog3.fc2.com/blog-entry-2029.html
・PIC Gate Pulse Gen その6: 細かな調製、機能の追加。
http://ja2grc.blog3.fc2.com/blog-entry-2031.html
・PIC Gate Pulse Gen その7: 学習時の分解能の確認。
http://ja2grc.blog3.fc2.com/blog-entry-2033.html
・PIC Gate Pulse Gen その8: 学習値の補正を入れる。
http://ja2grc.blog3.fc2.com/blog-entry-2034.html
・PIC Gate Pulse Gen その9: プリスケーラを変えてみる。
http://ja2grc.blog3.fc2.com/blog-entry-2035.html
・PIC Gate Pulse Gen その10: システムクロックを変えてみる。
http://ja2grc.blog3.fc2.com/blog-entry-2036.html
・PIC Gate Pulse Gen その11: 50mSパルス出力に変更。10倍モード追加。
アナログ出力再実装。
http://ja2grc.blog3.fc2.com/blog-entry-2037.html
・PIC Gate Pulse Gen その12: 細かな要求仕様の確認。最終まとめ。
http://ja2grc.blog3.fc2.com/blog-entry-2039.html
・PIC Gate Pulse Gen その13: メモリ使用量削減。実使用での要望を反映。
http://ja2grc.blog3.fc2.com/blog-entry-2041.html
・PMT proj その4 (ゲートパルサーの応用・カスタマイズ例)
http://ja2grc.blog3.fc2.com/blog-entry-2054.html
○Q and A
Q1 :TUC162やTGP134を用いたセットに、ガイガープローブを接続した瞬間にTUC162のみリセットがかかる。静電ノイズであることは理解できるが、なぜTGPにはリセットがかからないのか。
A1 :利用する上では、どちらも「リセット」ではあるが、TUCはエッジ検出を行っているが、TGPでは単なる論理値検出であるため、このような挙動の違いが生じるのです(TAKA氏の解説による)。
とくにプラスティックケースに収め、シリコンジャケットをかぶせた場合にこの現象が起きやすいようです。対策としては、ボディー底部(液晶表字の反対側)に、銅板0.1mm程度を敷き、入力ジャック部分アースと接続することで、大幅に改善します。
Q2 :「★カタログデータから換算したゲートタイム一覧」を読むと、換算に関して「1[mR]=8.77[uGy]=8.77[uSv]とともに、1[mR]=10[uGy]=10[uSv]とする換算方法も一般に使用されている」とあり、どちらを採用するかで得られる結果が相当に異なる(また管そのものの計数率についても同様)が、そのようないい加減なことで問題は無いのか。
A2 :私の主張を繰り返すことになりますが、絶対値としての線量当量を、ガイガー計数から求めることは根本的に無理であり、誰がどのようにしようと絶対値換算は困難です。これはガイガー管の物理的性質が不安定という意味ではなく(安定性はPDやシンチレーションなどの、他の方式と比べても十分に高く、条件によってはそれらを十分に凌駕します)、ガイガー管はそもそも荷電粒子計数であり、光子計数ではないということが根本にあります。
したがってゲートタイム一覧では有効数4桁で記述していますが、相対値としてガイガー管はさらに高精度であり、線量当量への絶対値換算としては有効数2桁程度(パンケーキ管に至っては1桁程度)が現実といえます。
例えばSBM-20の計数率から求められる、直読ゲートタイムは39.86秒となっていますが、切の良い40秒としても事実上得られる線量当量の値とその誤差に多大な影響を及ぼしません。個別の測定系において相対値として「39.86秒」は初めて意味を持ちます。
Q3 :PCからのパルス(WaveGeneなどで発生)を拾って、それを学習、とのことだが、何度やってみても拾っていないようだ・・(学習できない)。
A3 :まずPCからの出力が出ているか、確認ください。PC内臓のオーディオデバイスを使用している場合は、出力端子のゲートタイマーへの配線を外し、WaveGeneを「パルス」「1Hz」にセットし、PC内臓のスピーカーから1秒に1回「ポツッ、ポツッ」と発音しているか確認ください。
注) あまり大きな音に聴こえないと思いますが、最大出力に達しているはずなので、長時間その状態を続けないで下さい。
出力レベルはWindows PCの場合、
アプリケーションの出力レベル、
OSに含まれるMixer(実質、セレクタ)、
出力レベル、
があり、出力はそれらの相積(dBでは相和)となります。
つまり、それらのレベル調整のどれかひとつが下がっていると、出力は所定のレベルになりません。これらを確認し、原則としてすべてのレベル調整が「最大」になっているか、また最大になっていない場合は、最大にしてください。
・ USBなどで拡張された外付けオーディオデバイスの場合多くの場合、コントロールパネルの「サウンドとオーディオデバイス」からレベル調整できるはずですが、そのデバイスに専用のドライバがある場合には、OSがデバイスを認識していて音が出ていても、レベル調整ができない場合があります。
確認ください。
・ オッシロスコープなどがある場合には、出力レベルが1V(peak)程度あるか、確認ください。ゲートパルサーの学習に必要なレベルは、デフォルトで0.78Vです。
・ 学習に必要なレベル(スレッショルドレベル)は、可変になっています。可変はPICのEEPROMの00番地に書かれている数値(00~1F)を書き換えることで、スレッショルド(認識するレベル)を可変できます。デフォルトは05(0.78V)なので、数値を下げると高感度に、数値を上げると低感度になります。設定数値と電圧値の関係は、ユニバーサルカウンターTUC162の入力感度調整と同様です。
・ ユニバーサルカウンターTUC162と入力を共用している場合
ユニバーサルカウンターの入力感度設定が、低く設定されている場合、(03以下)入力インピーダンスが低下し、ゲートパルサーに信号が十分に行かない場合があります。うまく学習できない場合、ユニバーサルカウンターの入力感度調整を最大(31)に設定し、学習してみてください。
Q4 :C-MOSレベル(あるいはTTL出力)を学習させようとしたが、うまく学習しないことがあるようだ・・・。
A4 :ゲートパルサーのデフォルト入力感度は0.78Vになっています。C-MOS、TTLレベルの回路出力は、0V、+5Vの2値のように考えがちですが、場合によっては1V程度のノイズを含んでいることは珍しくありません。
このためデフォルトの入力感度では、感度が高すぎるために、誤動作を起こしたり、あるいは過飽和のために正常に学習できないことがあります。
レベルの整合を行うには、次の2つの方法があります。
1) ゲートパルサーのEEPROM、00番地の数値(デフォルト05、0.78V、00~1F可変)を10(約2.5V)以上に書き換えて、C-MOSあるいはTTLレベルに合わせる、
2) ロジック出力とゲートパルサー間に、減衰器を入れ、レベルを適正化する。
減衰量は1/2~1/3(-6~-10dB、 抵抗値、10KΩ/10KΩ、あるいは10KΩ/5KΩ)、またはボリューム(10KΩB)を挿入するなど。 下図参照
Q5 :あなた(utsunomia)の主張では長時間(あるいは定確度計測)からのCPMベースであるなら、高精度・高安定に計測でき、他の検出方式にも劣らないということだが、実際にガイガー管を用いた計測では、β線を除外しても明確に数値が高い。これは精度や安定性以前にノイズが多いということではないのか(高安定で精密なゲートパルサーや、ユニバーサルカウンターなどの能力は、無意味なのではないか・・)。
A5 :一般的にガイガー管を用いた計測では、PD(PINフォトダイオード)やシンチレーション方式と比較して、明示的に高い数値が得られます。とくに低線量では顕著で、大型のガイガー管ほどその割合が大きく出るようです。
しかし実際にこの「高く出る分」について実験を行うと(あるいは幾多の文献からも)、その「高く出る分」のほとんどは、いわゆる宇宙線由来で、地表では計測される線量の高低に関わらずおおよそ一定の値(6.8uR/h = 0.06uSv/h at SBM-20)となります。宇宙線由来なので、太陽の活動や天体天候の影響が大きく、24時間で一定の周期が見られ、また長期的にみると比較的大きな変動もあります。
(0.041μSv/ hから0.081μSv/ h のように解説されることが多いようです。・・Wikipedia/Blacksmith Institute )
宇宙線は非常に強い物質貫通性を持つものもある一方、地殻で容易に弱まるものも相当な割合あり、地下深くでは一定の減衰が観測できます。(鉛数cmは容易に通過)
この点について実際に地下で観測していただいたデータが公表されているので、リンクいたします。
「子どもを放射能からまもる会in千葉」
ガイガーカウンターの低線量時の挙動についての検証
ガイガーカウンターの低線量時の動作について(1)
http://protectchildren311.blog.fc2.com/blog-entry-256.html
ガイガーカウンターの低線量時の動作について(2)
http://protectchildren311.blog.fc2.com/blog-entry-257.html
ガイガーカウンターの低線量時の動作について(3)
http://protectchildren311.blog.fc2.com/blog-entry-265.html
ガイガーカウンターの低線量時の動作について(4)
http://protectchildren311.blog.fc2.com/blog-entry-268.html
ガイガーカウンターの低線量時の動作について(5)
http://protectchildren311.blog.fc2.com/blog-entry-279.html
「赤いナターシアがやってきた」
http://protectchildren311.blog.fc2.com/blog-entry-293.html
この結果から推定すると、SBM-20に関しては自己ノイズといえそうなものは非常に低く、「高く出る分」(0.06uSv/h相当)のほとんどすべては宇宙線由来(地殻によって減衰する成分)であるということになります。
しかしこの宇宙線由来と考えられる成分も、先に記述したように24時間周期、天体天候が反映されることから、リアルタイムの観測を行い、計測値からそのつど補正する必要があります。宇宙線由来分とその場の計測分を同時に処理することが望ましいということ になります。
このような計測にも対応できるように、ユニバーサルカウンターには加算入力と減算入力があり、通常の計測を行うプローブ(加算入力)とは別に、ガイガー管のみ鉛遮蔽した宇宙線由来専用の補正プローブカウント(減算入力)を同時に処理し、差分検出できるように工夫してあります。
検出管が同じSBM-20であるなら同時処理も可能ですが、計数率の異なるガイガー管について、すべて通常プローブと補正プローブの両方を作ることは大変無駄が多いといえます。
このような場合には、ユニバーサルカウンターを2台用意し、1台のゲートパルサーからゲート制御し、両方の計数値を記録しておくことで、それぞれのガイガー管(実際にはSBM-20との相対計数率)に補正係数を与えることで、どのような場合にも補正が可能となるはずです(実績についてはこれから・・・)。
Q6 :完成後に、EEPROMのデータを直接読み書きしようとしているが、PICKIT2がPIC(PIC16F1823)を見つけられない、あるいは不認識
A6 :バンク切り替えがF(4回路すべてOFF)のとき以外は、認識できません。4連ディップスイッチを採用した方はわかりやすいのですが、私の作例のように、デジタル・ロータリー・スイッチを用いている方は、ご注意ください
デジタルロータリースイッチには、同じように見えて、「コンプリートコード」タイプと「リアルコード」タイプの2種類あります。このデジタルロータリースイッチはディップスイッチと似たようなものなのですが、操作方法が異なります。
ディップスイッチは単なるON/OFFスイッチで、4連の場合は、それが4つ並んでいるに過ぎません。これは2進数4桁を表す
16進数
2進4桁
コンプリートコード
リアルコード
コンプリ/リアルを間違えた場合
0
1
2
3
4
5
6
7
8
9
A(10)
B(11)
C(12)
D(13)
E(14)
F(15)0000
0001
0010
0011
0100
0101
0110
0111
1000
1001
1010
1011
1100
1101
1110
1111ON- ON- ON- ON
ON- ON- ON- OFF
ON- ON- OFF-ON
ON- ON- OFF-OFF
ON- OFF-ON- ON
ON- OFF-ON- OFF
ON- OFF-OFF-ON
ON- OFF-OFF-OFF
OFF-ON- ON- ON
OFF-ON- ON- OFF
OFF-ON- OFF-ON
OFF-ON- OFF-OFF
OFF-OFF-ON- ON
OFF-OFF-ON- OFF
OFF-OFF-OFF-ON
OFF-OFF-OFF-OFFOFF-OFF-OFF-OFF
OFF-OFF-OFF-ON
OFF-OFF-ON- OFF
OFF-OFF-ON- ON
OFF-ON- OFF-OFF
OFF-ON- OFF-ON
OFF-ON- ON- OFF
OFF-ON- ON- ON
ON- OFF-OFF-OFF
ON- OFF-OFF-ON
ON- OFF-ON- OFF
ON- OFF-ON- ON
ON- ON- OFF-OFF
ON- ON- OFF-ON
ON- ON- ON- OFF
ON- ON- ON- ONF(15)
E(14)
D(13)
C(12)
B(11)
A(10)
9
8
7
6
5
4
3
2
1
0
のですが、2進4桁ではそのON/OFFの組み合わせは16通りになります。
実際の回路では、設計上の都合で、0をONとするかOFFとするか、両方の都合のための部品が、同じモデルであっても2種類存在します。
コンプリートコードとリアルコードは、ちょうど相反な関係にあり、コンプリートコードで無いと使えないと、というわけではありません。また、本機は学習型なので、どのバンクに何を書き込もうと、それは使用者の自由で、初期値は確かに入ってはいますが、あくまで参考値に過ぎません。
しかし、注意しないといけない問題が2つあります。それは、「0」と「F」の2つの バンクは特殊な用途としてリザーブされています。コンプリート・リアル関係なく、4回路すべてがONのときを「0」とし、ここには学習結果を置くことができません。実質的なゲートパルサーのOFFモードです。
カウンターとの連結を前提としているので、ゲートパルサーが不要のときに、つなぎっぱなしでOFFにすることができる必要があります。
もうひとつは、4回路すべてがOFFのときを「F」とし、PICKIT2との接続時に必要なモードです。モードというよりも単に4つのスイッチがOFFなので、重複するPICKIT2との連結が阻害されない、というだけのことなのですが。
PICKIT2と接続する場合は、バンク切り替えスイッチの4回路がすべてOFFであることを確認ください。
とにかく、ディップスイッチ、デジタルロータリースイッチを入手したら、0とFでそれぞれのスイッチがどのようになっているか、(コンプリートかリアルか)をテスターなどで確認したほうが良いと思います。