« 2011年8月 | トップページ | 2011年10月 »

2011年9月の3件の記事

2011年9月27日 (火)

2台目のガイガーカウンター(CHANEY)が完成しない

 ブログの更新が滞っている。前回から2週間以上になる。何もしてなかったわけではない。いくつか前進はあったが、やはりCHANEYのガイガーカウンターキットのアナログ部に問題が出て、2台目がなかなか完成しない。日がたつと忘れてしまいそうなので、これまでの経過報告をしておく。

S_p9274271CHANEYガイガーカウンターはソフトパワースイッチにする(9/13/2011)
 今度のCHANEYのキットを使ったガイガーカウンター2号機の電源回路は、ソフトパワースイッチを使うことにしている。マイコンCPUのパワーダウンモードを使って、スイッチの長押しで電源を入り切りする今時(いまどき)の携帯機器に多いやりかたである。

 最近のマイコンは省電力化が進んでいて、パワーダウンモードに入ると、消費電流は、一般の二次電池の自己放電よりはるかに少ないところまで下がる。AVRシリーズの最近の型名で最後にPがついているのは、省電力をうたったピコパワーをあらわす文字で、スペックによればMega328Pで0.15μA(5V)と、まさしくピコアンペアクラスの消費電流だ。今度の石は皮肉にも無印のMega328だが、それでもパワーダウンモードは0.6μAである。

 しかしいくらCPUを微小な消費電流で止めたにしても、周辺機器の電源もこのとき同時にFETか何かで切らないと意味がない。CPUより消費電流の多い周辺機器はいくらでもある。ところが、この周辺機器の電源制御が意外と曲者なのである。

 当研究所ではソフトパワースイッチはこれまで何回か試みて、結局、本番では使うのを止めている。これは、この周辺機器の電源制御が面倒なためで、これまでの機器はすべてレガシーなスライドスイッチを使って物理的に電池の電源を切った。所長が古い人間で、どんなにわずかでも機械に電気が流れ続けるというのが生理的に落ち着かないというのもあるが、周辺機器の正しい電源の切り方が実はまだよくわかっていないのが大きな理由だ。

 周辺機器が独立していれば問題ないが、大抵はCPUと制御線でつながっている。これが悪さをする要因となる。待機状態になっているCPUから、電源を切ったはずの機器に電流が流れ込み、機械がこわれたり誤動作することがある。これとは逆に以前、SDカードスロットの電源をローサイドで切ったところ、SDカード制御線から大量に電流がCPUのGPIOピンに流れ込み、Mega168を2つも失うという悲劇を起こしている。

 ハイサイドで切ると大丈夫かと言うと、今度はCPUからSDカードへ電流が制御線を通して流れ込み、壊れはしなかったが周辺機器が幽霊動作しておかしなことになったことがある。パワーダウンモードの時のCPUのI/Oピンの状況がどうなるかは厳密に調べておかないと機械は予期せぬ動きをする。油断がならない(厳密にはフォトカプラー接続するのだそうだ)。

 これが、どうしてその気になったかと言うと、レガシーなスライドスイッチを楽だからと使い続けていたのでは、いつまでたっても進歩がない。これでは経験値を上げることが出来ないなあ、と思っていたところに、リチウムバッテリーの過放電防止回路や、この前のUSBとバッテリーの電源切り替え回路を実際に作る機会に恵まれた。これでFETの扱いに大分慣れてきて自信がついてきた。

 このときコメントを寄せてくれたeNastyさんからダイオードの代わりにチップFETを使うテクニックを教えてもらったことも後押ししたように思う。このとき、秋月でn-MOS、p-MOS含めて大量のチップFETを買い揃えた(といっても¥100内外だが)。何しろ、豆粒のようなチップで3Aの電流が流せるのである。確かにON抵抗がミリオームレベルなので通過させるだけならOKだ。トランジスターとは大違いである。

S_p9204268 今度の電源制御は、CHANEYのガイガーカウンター部と、LCDの2つの電源を切る。それに前記事で紹介したリチウム電池の過放電防止回路も組み込まねばならない。主基板は、片面基板にしてしまったので、チップ部品を載せにくい。小基板に部品を載せて、これを取り付けることにする。過放電防止回路はブレッドボードでOKになっているので、小基板に作り直す。これは順調に出来た。

DC-DCコンバーターのENABLE端子は使えない(9/15/2011)
 周辺機器の電源制御はFETでやると張り切って始めたが、考えてみれば周辺機器はすべてDC-DCコンバーター経由であることに気づいた(LCDの5Vも既成のDC-DCコンバーターを使う)。それなら何も自前のスイッチをつけなくても、DC-DCコンバーターに必ずついているシャットダウン端子(ENABLEピンともいう)で出来るではないか。勢い込んではみたものの、これで制御できれば何もわざわざ作ることもない。早速ブレッドボードでテストしてみた。

 既製品のコンバーターはあとにして、まずは自作のLM2735を使ったDC-DCコンバーターを手始めに試してみる。CHANEYのキットを動作させながら、ENABLEピンをグランドに落とす。これでシャットダウンされるはずである。60mAほど流れている。

P9274275

 ありゃあ、電圧計は0にならない。しかも、コンバーターからは「チーッ」という音が出る。インダクターからの音だろう。ガイガーカウンターも何か動きそうな雰囲気だ。LEDを点けるくらいなら、音も出ず、ピタッと0Vになるが、数十mAを消費するガイガーカウンターでは駄目である。

 いかん、おかしい。誤配線か。自作のコンバーターだったので、自分を疑って色々調べた。いや、リファレンス回路と違いはない。どこも悪くない。仕方がない。フォトフレームにつけてあったストロベリーリナックスの同一の石を使った既製品をはずして動かしてみた。何と何と、全く同じように音が出て機能しないではないか。なんだなんだ。どうしてだ。

 ストロベリーリナックスの説明書を読んで問題は氷解した。ちゃんと説明書に「ENABLEピンをグランドに落とすと、チップの動作が止まるだけで電圧は余り下がりません」とある。変な仕様である。要するにチップの動作(発振)を止めるだけの端子なのである。この回路(メーカー推奨)では、電流が負荷に流れ込むからだそうだ。何のためのENABLE端子なのだろう。

簡単な回路が動かない。チップが燃える(9/19/2011)
 友人に誘われて東北の温泉に一泊旅行をしてきた。行きかえりにサービスエリアなどで放射線量を測った。自作の良い加減なガイガーカウンター(SparkFunのもの)なので数値、場所の公表は差し控えるが、確かに、ホットスポットと呼ばれる地域の線量は高かった。時間がなくて寄れなかったが、別の友人の別荘地に近い高速道路上で、東京あたりの4~5倍。最も高いところでは10倍以上を記録した。反面、仙台あたりは東京よりBG(バックグラウンド)線量が低い。どこまでも0.05μSv/h以下が続く。

 旅行から帰って久しぶりの電子工作が楽しい。すっかり中毒になっている。DC-DCコンバーターのシャットダウン端子は使い物にならないことがわかったので、自前のシャットダウン回路を、電源周りの小基板に作っている。FETとチップTRで組む。お手本はここのページである。

 このページによると、マイコンCPUのGPIOピンは、電源OFFのときはグランドに導通するのだそうだ。今回は、Mega328はパワーダウンモードで、I/Oピンの状態は保持されるはずだ。パワーダウンモードはすぐには作れないので、とりあえず実際にMega328をつないでテストしてみた。

 やはり負論理では、電源OFFのときは、プルアップしておく必要があり、もし、パワーダウンモードでI/Oピンが保持されていなければ、電源が入ってしまいそうだ。このページの通り、トランジスタをひとつ入れて正論理にしておくと、CPUが生きた時だけONになって安心である。

S_p9204251 ところが、ありあわせのTRをブレッドボードにつけてOKになり、チップTRで実際の回路を組むと、おかしい。FETが異常に熱を持つ。ゲートをジャンパーでグランドに落として問題なくONになるのに、ここにチップTR(2SC4116)のコレクターをつないで、Vcc(論理1)を入れると、見る見るうちにFETが熱くなる。2回目の通電では薄い煙が出てあわてて電源を切る。いかん、壊れたか。TRをはずしてFETだけでテスト。良かった。FETはまだ生きていた。しかし、どうしてだ?わけがわからない。発振でもしているのか。

電源制御回路がやっと出来た(9/20/2011)
 結局、チップTR2ヶを失って電源制御回路は完成した。原因は、今度もなんともお馬鹿な単純なミスだった。TO92と違って、チップTRは誤接続に弱い。間違えてベースに直接Vccをかけていたのに気づかなかった。前にフォトカプラーに制限抵抗をつけずにVccをかけたのと同じである。

 最初、FETの方から煙があがり、FETが持てないほど熱くなったと思ったので、こちらばかり調べていた。実はこれは完全な勘違いで煙がでていたのは隣のチップTRのほうだった。いやいや申し訳ないことをした。

 電源回路の構成は当初から相当変えた。最初は、DC-DCコンバーターの5V出力をCPU(Mega328)とLCDに使おうと考えていたが、コンバーターは無負荷でも相当な消費電流が流れることに気づいたので、コンバーターの5VはLCDだけに使うことに変更した。考えてみれば、今度のCPUは定電圧にしないとだめなADCなどの機能は使わない。4V程度で少々変動しても十分動くはずだ。

 小基板を完成させてそこからピンのようにリードを出し、ブレッドボードにさしてテストする。それが終われば、そのリード線を使って主基板に固定し、その間を配線する。この方式はなかなか合理的でうまくいった。

ガイガー管SBM-20のパルス数が段々増えてくる(9/26/2011)
 CHANEYのガイガーカウンターキットは、マイコンと接続されて、カウントをUARTに表示するところまで進んだ。ファームは前のSparkFunと同じでLCDとの配線はまだやっていない。しかしUARTに出されたカウント数は、人間がこれまでストップウオッチ片手に集計したCPMより明らかに多い。しかも、時間がたつに連れて増えてくる。

Longtest

 CHANEYのキットのGM管は、ロシア製のSBM-20である。ウェブの情報を元に、平滑コンデンサーを入れ、バイアス抵抗を100KΩから10MΩに換えて、電圧は、350Vまで下げた。ところが、測ってみると、500V近くが出ている。おかしいけれど、何度測っても(DVMで)同じだ。

 これには心当たりがある、オシロで高圧電源を見ると派手なパルスである。電圧計はこの平均を出しているので、正確な電圧を出しにくい。それに、CHANEYの高圧部は、SparkFunのより更にインピーダンスが高く、1GΩの負荷でも影響があってオシロでは正確な値が出てこない。

 とにかく電圧を下げてみることにした。平滑コンデンサーをとると、バイアス抵抗が10MΩでは、全く電圧が出なくなる。1 MΩまで下げると出たが、電圧は同じ。今度は、NE555の発振周波数を下げてみる。NE555のパルス間隔を決める抵抗を、12kΩから20kΩにする。発振周波数は280Hzから170Hzまで下がったが、電圧降下には余り効果がない。

 電源電圧を5Vくらいまで下げても変わらない。5Vまで下げると、パルストランスがうなりだす。色々なことをしても、420~480V近辺で、これ以下にするとパルスを検知しなくなる。明らかにプローブをあてると様子が変わり(スピーカー音が変わる)、どうもこれが本当の電圧か疑わしい。

 SparkFunのLND712との比較では、SBM-20のCPMの数は、電源投入直後が最も、スペックに近い。図を見てもらえばわかるように、CPMは時間が経つとともに、増え始め、だいたい2倍から3倍のところで落ち着く。どうも不安定だ。始めは少なくて、時間がたつにつれて徐々にカウント数が増えていくのは、どの状態でも同じだ。測定器としてはとても使い物にはならない。

 調整している間にスピーカーから音が出なくなった。こういうときは、だいたいプローブがどこかに当たってICチップを飛ばした可能性が高い。スピーカーをドライブしているのは何のチップだ。ああ、FETだ。おお、こいつはこのあいだ秋月で沢山買った2N7000だ。早速とりかえる。予想通りFETがこわれていた。音が戻る。今回は犠牲者が多い。チップTR2ヶも失っている。少し気を引き締めなければ。

 思い切って、これまで改造で加えていた平滑コンデンサーなどの変更を全部やめて、オリジナルに戻してみた。スピーカーからのクリック音は、大きくなりLEDの光も強く、パルスも見たところ一番少なくなったように見えた。

S_p9274270 ところが、マイコンが示すCPM数は、パルス音などよりはるかに高い数値になる。オシロでみると一目瞭然である。平滑コンデンサーがないため、電源の脈流パルスが、放射線で発生した大きなパルスの度に複数のパルスになってカウントされている。人間が音やLEDで知るカウントが正しくても、マイコンでは副次的なパルスを識別することができない。チャタリング防止のようなソフトで解決する方法もあるが、近接して本当のパルスが発生した時と区別がつかなくなる。

 困った。安定を求めて平滑コンデンサーをとり、電圧を下げると(350V)、電源ノイズでパルスがとれなくなる。電源を平らにしてパルスをとれるようにすると、電圧が上がってしまって(420V以上)、パルスカウントがどんどん上がり、正常な測定が出来なくなる。一時間で2倍から3倍では、話にならぬ。

 しかし、オリジナルのまま、手動でパルスをストップウオッチ片手に、1時間以上測定してみて、愕然となった。オリジナルでも、明らかに時間とともにパルスカウントが上がることが確認された。パルス増加の原因は、電圧が高いためではなかった。

Chaney_org となると、これはGM管そのものに問題があると言うことである。ただ、このGM管は色々な線量計で使われている定評のある管だ。元から不良だった?オリジナルで長時間、測定したことがないので何とも言えない。あっ、そういえば、ケースに入れるテストをしているときGM管を少し凹ませてしまった。これが原因なのか。

 パルスが出るので問題ないと思っていたが、ウェブの情報を良く読むと、内部クエンチと言って、一旦放電したあとに連続放電を止めるのは内部に封入したガスによるものであり、このガスが少なくなればパルスがどんどん増えてしまう結果になるのはおかしくない。

S_p9274272 うーむ、GM管を取り替えねばならないか。最初は、いっそのことこの回路をあきらめて自作してみようか、電流消費も多いことだしと思っていたが、それ以前に問題があったとは。

 少し頭を冷やして、善後策を考えることにする。もう、今さらガイガーカウンターでもないのだが、なにしろ「負けず嫌い」「へそ曲がり」の性格である。完全に手段が目的化しているが、止められない。

| | コメント (0) | トラックバック (0)

2011年9月11日 (日)

もうひとつのガイガーカウンターの制作など

K型熱電対と遊ぶための準備(9/2/2011)
 SparkFunのキットの後始末が一段落しブログにその顛末をアップしてから、高揚した気分が一気に落ち着いた。モチベーションが下がり暫くは何もしたくない気分である。ところが不思議なことに、頭は休養を要求していても、手は何か動かしていないと落ち着かない性分になってしまった。本当に困ったものである。

 というわけでもないが、これまでちょっとづつ準備し、部品を集めてきた熱電対の温度測定の回路をブレッドボードで作り上げる。このページに触発されたアナログ回路である。少しアナログづいているのかもしれない。アナログが楽しい。最初は、温度測定だけだが、最終的には、SSR(ソリッドステートリレー)を使った温度制御をやる。強電工作第二段である。

 そもそもは、このあいだ作ったアクリル曲げ器の温度制御がやりたくて、秋月でK型熱電対を衝動買いしたことが始まりである。昔から炎など普通の温度計では測れない高温を測定したいと思っていた。偶然、同じ動機を持った人がサイトにわかりやすい熱電対の使い方を解説していて、チェックしてあった。

S_p6183963 熱電対による温度測定には専用のICが用意されており、これを使えばこれから作る回路は全く必要ない(以前の記事参照)。しかし、そこは凝り性の性格である。この面倒な補正をやってみたというこのページを見逃すわけには行かない。

 アクリル曲げ器の方は、このあいだ実際にオッシロの高圧測定の分圧器の端子盤を作るのに使ってみた。うすっぺらいアクリル板(CDケース)を使ったやっつけの簡単な加工だが、結構それらしく出来た。まともなケースを作るところまでになるにはまだ先が長いが、こういう簡易なしかけをつくるくらいは簡単だ。回数を重ねればもっと上手くなるだろう。このアクリル曲げ器にもう少し資本投下してみることにしよう。

S_p8224146

 温度センサーと熱電対を組み合わせた温度計のアナログ回路そのものは、記事にあるように至極簡単である。多回転ボリューム2つで倍率を調整する。温度センサーと熱電対の熱勾配を一緒にしておけば、温度センサーと熱電対の検出電圧の和が、実際の温度になるという理屈である(熱電対は2電極の温度差しか出さないので、冷極の温度が必要)。合算された電圧をオペアンプで増幅してADコンバータにかける。

S_p9094170

 結構、これが面白い。反転増幅器の2つの抵抗を可変抵抗でやるので変化が激しすぎるのが難点だが、オペアンプの理屈が良くわかる。オペアンプのオフセット電圧の計算などは、連立方程式を解くと出てくる。それらしい値が出てくる。計算値は、データシートを見るとちゃんとLM358のオフセット電圧と同じ範囲(7mV)にあったりして結構、感動した。

 熱電対はまだ使わない(ブレッドボードへの固定が難しい)。出来上がった回路は、mVの単位だが、温度センサーを手で触るとオペアンプの出力には、ちゃんと規定どおりの電圧の変化が観測できる。ただ、実際の温度への換算は簡単ではない。温度センサーそのもののオフセット(0℃のとき600mV)も計算に入れなければならない。校正もさらに必要だ。

 どうも、このあとはマイコンを動かし、値をADコンバーターに入れて、実際の数値をハンドリングした方が早そうだ。余っている7セグLEDを使って表示すれば温度計が出来上がる。さらにSSRを使ってヒーターを制御し、現在温度と設定温度の2段重ねに表示すると見栄えがするかもしれない。妄想はいくらでもふくらむが、不思議なことに、このあたりで先に進む気力が切れた。

 ということで今度は、CHANEYのガイガーカウンターキットのケースを作り始めた。この移り気の速さは自分でも驚くばかりだ。まあ、アマチュアの工作だ。許してもらおう。ケースはタカチのSW-125(125×70×40)。レイアウトに頭を捻る。このあたりもやり始めると面白くて止められない。

CHANEYガイガーカウンターキットの改造は済んでいる(8/19/2011)

 実は、SparkFunにとりかかる前に、CHANEYのキットの方も改良工作をすませてあった。このキットもウェブで散々叩かれ、改良記事が沢山出ている。ありがたく頂戴する。

 まず高圧回路に平滑コンデンサーがない。確かに入っていない。脈流ではノイズも撒き散らすし、不正確にもなるだろう。記事では、4700pFだが、手持ちは、例のSparkFunのときに買った耐圧1kVの0.01μFである。試しに、これをつないだら、600Vまで上昇する。これは少し高すぎる。

S_p9114189 もうひとつの指摘はGM管(SBM-20)のバイアス抵抗100KΩである。派手なパルスは出るが、耐久性に問題があると言われている。100Kから、10Mに取り替えてみる。不思議なことに、この変更で電圧が500Vに下がった。それでも定格より100Vも高い。心配なので、コンデンサーを0.01μFから、もうひとつの手持ち470pFにしてみた。定格より少し低い350Vになった。しかし、問題なくパルスが出ている。改造はこの程度にして、暫くこれで様子を見ることにする。

 次は、このキットからデジタル信号を出す回路の追加である。パルス信号の出力点を探す。青LEDをドライブしているダーリントントランジスタの出力(エミッタ)あたりが一番簡単なようだ。リード線を半田付けして外へ出し、オシロで波形を確認する。出た出た。6.5Vがパルスの度に1V近くまで下がっている。うーむ、パルスは一つではなく、20ms、長い時は40msの間にいくつもの付随的なパルスが出ている。

 そのまま測るべき(カウントする)なのか、無視するのか今の段階ではわからないが、LND712との換算からみれば、付随パルスとしてチャタリング防止のようなマスクが必要のようだ。それに6.5VをTTL用に5Vに下げる必要がある。

CHANEYのケース制作に忙しい(9/4/2011)
 こんどのガイガーカウンターのGM管はロシア製のSBM-20で、LND712に較べると少し長い。ケースは細長のタカチのSW-125のグレイである。SparkFunは、秋月のケース112-TS(117×84×28)を使ったが、これより気持ち小さい。透明ではないのでLCDスクリーンの窓を開ける必要がある。

S_p9014164 LCDの固定は少し工夫してみた。これまで、LCDの固定は、基板からポストで固定して化粧板には窓だけ開ける方法か、化粧板にネジで固定して基板とコードでつなぐかの、どちらかの方式だった。今度の基板は、CHANEYのキットが入って2段になり基板からポストを立てるのは難しい。とすると、化粧板に固定する方式だが、ネジが表から見えてしまうのは、みっともないなと前々から思っていた。

S_p9034165 裏からネジを当てれば良いが、のりしろが少ない(基板1.6ミリ、ケース厚2ミリ)ので小さいネジでは不安だし、少し大きくすればネジが突き抜ける心配がある。そこで、2ミリのアクリル小片を3枚使い、中にLCD基板をはさむ方式を考えた。

 こうするとLCDパネルが化粧板から大きくはみ出るのも防げる。サーキュラーソーがあるので、アクリルの小片は簡単に正確なものがいくらでも作れる。接着剤も、接着面が広いので滅法強い固定ができる。ちょっとのことでははがれない。

 出来上がりは予想以上にうまくいった。片側は枠を作るだけでネジを使わない。はさむだけである。もう一方も同じような枠を作り、上蓋を2.6ミリのタッピングネジで止める。簡単に出来て、しかも確実にLCDが固定できた。嬉しくて何度もつけたりはずしたりして出来上がりを喜ぶ。他愛ないものである。

 主基板の工作も進める。CHANEYのキットは高さ10ミリのポストで主基板上につけ、パルス検出LEDが化粧板になるべく近くなるようにする。主基板には、電池と、CPU基板などが入る。最初、ケースの上蓋をうっかり逆にして、蓋を閉めようとしてLCDがガイガー管にあたり、管をわずかだがへこましてしまう。一瞬、肝が冷えたが、問題なく動いて胸をなでおろす。

S_p9094169

 電池は、例のLPCMプレーヤーで余っている任天堂DSの互換リチウムバッテリーを使う。充電はとりあえず外部。脱着可能にしなければいけない。ついでに振動で外れないような仕掛けがいる。

kumanさんのリセットICを使ったバッテリー電源制御(9/6/2011)
 電源に頭を捻っている。CHANEYのキットの電源9Vは、DC-DCコンバータを自作したが、CPUとLCDの電源が悩ましい。リチウム電池の4.1Vをシリーズレギュレーターで3.3Vに落とせば、LCDのドライブには、何らかの負電源が必要になる。

 最初は、前のリニアPCMプレーヤー1号機のときの予備のLTC1144を使おうと思っていたが、電源関係のICチップが3つも必要になるのは、どうも気に入らない。そこで思いついたのが、ストロベリーリナックスのDC-DCコンバーターである。面白がっていくつか買って、電源可変のやつは、フォトフレームの12V電源では重宝した。もう一種類の0.9Vから3.3Vと5Vまで昇圧できるコンバーターは、特に使う予定もなく、使い終わった単4電池(ワイヤレスマウスに使ったのが多量に残っていて捨てられない)ひとつで白色LEDをつけて遊ぶくらいにしか使われていない。

S_p9114187

 そうだ、これなら、リチウムバッテリー(4.2V)からなので5Vに高効率で昇圧できる。200mAまでとれるので全く余裕だ(LCDはバックライト無しなので全部で10mAも流れない)。シリーズレギュレーターよりはるかに地球に優しい(おおげさな)。これで、電源ICを2つに出来る。

 しかし今度は、リチウム電池の過放電が心配である。これまでは、シリーズレギュレーターなので電圧が下がればLCDが薄くなったり、音が割れてきたりして電圧低下がすぐわかったが、DC-DCコンバーターは、ギリギリまで電圧を維持し電源から電気をしぼりとる。こいつは何らかの予防手段をとらないと危ない。

 そこで、あらたに電源電圧が一定以下になれば供給をストップする過放電防止回路を検討した。最初は、AVRのADコンバータかなにかで調べてなどと大層なことを考えていたが、ウェブですごく簡単なものを見つけた。リセットICを使う方法である。リセットICは電圧が規定以下になると、論理0を出力する。こいつは簡単だ。

 でも、このページ何か前に見たようなページだなあと、良く見たら、何と何とAVRを始めたころお世話になったkumanさんのサイトだった。ローサイドでnMOS-FETをリセットICの出力でスイッチし、リチウム電池の過放電を防止する方法である。部品はたったそれだけ。

Photo

 ただリセットICは閾値が2.6V(3.3V用)なので、リチウム電池の下限まで上げてやる必要がある。kumanさんは、ダイオードを使っておられたが、ここは半固定か何かの抵抗で分圧した方が良いかもしれない。いずれにしても、以前、電子リモコンボリュームの電源を切る時に1ヶ使ったきりで遊んでいたリセットICが役に立つことは有難い。kumanさん、ありがとう。

Windowsのプログラム開発に手を出す。AVRSPの再ビルド(9/10/2011)
 可能な限り敬遠していたPC上のプログラム開発をどうしてもやらなければならなくなり、久しぶりにコマンドラインでChaNさんのAVRSPをソースからビルドした。

 そのきっかけは、DigiKeyから買ったTQFPのMega328である。CHANEYのキットのCPUにするべく、鼻歌まじりで、秋月で買った変換基板に取り付け、クリスタルやパスコンなどを基板上に表面実装し、機嫌よくブレッドボードで動作テストを開始した。

S_p9114178

 ところが、愛用のプログラムライターAVRSPがこのチップを認識しないのである。配線間違い?いやあ、そんなことはない。エラーメッセージをよく見ると、"Unknown device"となってDeviceIDが出ている。ふむ、いつものエラーとは違うなあ。ありゃりゃー、もしかするとAVRSPはTQFP版のMega328をサポートしていない?いや、SparkFunのもTQFPのMega328だった。何の問題なく認識した。

 あわてて型番を確認する。SparkFunの石は、Mega328P(DeviceID 1E-95-0F)で、DigiKeyから買ったやつは、良く見るとMega328(同 1E-95-14)。迂闊だった。全く意識していなかった。何い、AVRSPのサポートは?ええー、何と、何とMega328Pはサポートしているが、無印のMega328はサポートされていない!(avrsp -h で確認できる)。

 スペックで見た限りでは、328と328Pは電源消費量が違うだけで、後は殆ど何も変わらない。恐らくこのAVRSPのサポートディバイスリストに一行足すだけで良いのだろうとは思うけれど、AVRSPはPCのプログラムである。修正はWindowsのプログラム開発環境が必要になる。

 ふーむ、困った。AVRSPはソースコードまで公開されているが、所長は、Windowsの開発環境が大嫌いで、これまで可能な限り近づかないようにしていた。昔、MFCか何かで少しWindows95のソフトをいじろうとして、その長大でおどろおどろしい開発環境に恐れをなして以来、敬して遠ざけている。まだ、Macintoshのアセンブラーを使った面倒な画面制御の方が精神衛生上よほど落ち着ける(昔、何本かパッチをあてて遊んでいた)。

 だからといって、これしきのことを大騒ぎして、ChaNさんの手を煩わすのも気が引ける。DIP版のMega328Pはストックがあるので、これで作り替えれば良いのだが、ここまで変換基板に作り込んだものが無駄になるのも悔しい。

 他のプログラムライターも必ずしも無印328をサポートしているとは限らない(78K0のAVRISPもサポートしていなかった)。秋月で安くなった純正のプログラムライターAVRISP MkⅡを買えば解決するだろうが、これも何か抵抗がある(どうせ純正を買うなら、パラレルのDragonが欲しい)。

 しばらく悩んでいたが、ここまできたらAVRSPを自力で直すしかないだろう。ゆるゆるとウェブで方法を探し始めた。調べて見たら都合の良いことに、コマンドラインだけの開発環境があるようだ。これなら簡単そうだ。特に、このページは、AVRSPそのもののコンパイル法が詳しく出ている。

 土曜のお昼過ぎから、このサイトを頼りに、ボーランドの無償Cコンパイラ(BCC5.5)を手に入れ、本格的な開発環境を整え始める。修正を加えて(avrsp.cのディバイステーブルと、avrsp.hのenum変数宣言)、恐る恐るコンパイルしてみる。

S_p9114177

 いやあ、沢山コンパイルエラーが出る。念のため修正前のオリジナルでコンパイル。なーんだ、最初からエラーが出ている。ふむふむ、_outpとか、_inpというダイレクトにポートを叩く関数がライブラリーにないようだ。GiVEIO用のライブラリが見つからない。

 おや、このページは、本来はAVRSPをユーザーモードで動かす方法(GIVEIOを使わない)の紹介で、別のフリーのライブラリをリンクすれば、これが出来るようなことが書いてある。店をこれ以上広げたくはないけれど、この際これに乗っかってみよう。言われるとおりのライブラリをダウンロードしてリンクしてみる。

Avrsp_bcc

 よーし、コンパイルは警告だけになった。うむ、EXEファイルが出来たようである。だめもとで、こいつを動かしてみた。おおー良いぞ。無印のMega328を認識した。フューズビットは変えられるか。よしよし、これも大丈夫だ。オシロには勢い良く8MHzのクリスタルの発振波形が確認できた。勢いに乗ってSparkFunで動かしているファームを焼いてみる。問題なく焼けた。LEDなどがブリンクし、UARTからメッセージが出る。これで万全だ。

 いやいや、こういう抜け道のようなコンパイルでAVRSPが作り直せた。こんなに簡単にWindows(まあ限りなくDOSですが)のプログラムがコンパイルできるとは正直、思っていなかった。それにしても、ソースコードがあるというのはありがたいことである。 このページの作者、木村 真也さん、それにChaNさん、ありがとう。

| | コメント (8) | トラックバック (0)

2011年9月 1日 (木)

SparkFunのガイガーカウンターを正しく動かす

 前回の記事の反響は大きかった。次の日、研究所開設以来の最大アクセス(一日866)を記録したかと思ったら、週明けの月曜はその記録もあっさり抜いて一日のアクセスが1200を越えた(1244)。いつもの3倍である。

 「ゆきの研究室」という著名なサイト(ここの作品は見事と言うしかない)や、所長もお世話になっているsimさんあたりが話題にしてくれてアクセスに拍車がかかった。有難いことだと思うと同時に何か責任の重さを感じる(あまり好き勝手なことが出来なくなってくる)。

 ただ、SparkFunのキットの問題は、前回ですべてが解決したわけではない。もう少しこのキットにこだわってみることにした。それにしても、つっこみどころ満載のキットである。

時々動かなくなる原因を見つけたか(8/26/2011)

 ブログの初日のアクセス急増はツイッターによるところが大きい。アクセスログに見慣れないリンク先が出てくるのでアクセスすると、自分のブログが出てくる。Googleで検索しても見つからない。おかしいなあと思って、このあたりに詳しい娘に聞くとツィッターの短縮URLというものらしい。ツィッターのページからは検索できる。所長もあわててツィッター登録し、震源地を調査した。これが不慣れで、どなたが最初にtwittしたのか見極められない。とりあえず、この場を借りて御礼申し上げておきたい。

S_p8244149 それはともかく、過大電圧でガイガー管を壊してしまう危険は回避した。しかし、そもそもはそれが問題ではなかった。最初のトラブルは時々動かなくなることだった。この原因は解明されていない。 このトラブルシューティングのために部品を次々にはずし、結果としてブレッドボード上に別の部品で配線図どおり組み立てて動かすところまで行った(トランスだけは、基板から取り出した同じもの)。この状態では高圧が出なくなることは一度も起きていない。

 時々動かなくなるのは、基板上の発振回路のパターンに、接着剤でスペーサーをつけたためと結論付けたが、どうも納得できていない。接着剤そのものは絶縁物だし、基板の上にはかなり厚いレジストが塗られており、これが原因とは考えにくい。トランジスターは2つともはずしてブレッドボードにつけなおし、正常動作を確認している。

 原因究明はさておき、このキットを実用品に戻さなければいけない。ケースのLCDとスイッチを無駄にするわけには行かないのだ。 ブレッドボードで作った回路を小さなサブ基板に作り直し、ケースの中に入れて動かそうと考えた。まず、ブレッドボードにはずしてあったトランスを正規の場所に戻して、そこからサブ基板に行くリード線を出す。

 念のため、これでちゃんと動くか確かめる(用心深くなった)。おやあ、動かない。どういうことだ。トランスと基板の接続がおかしいのか。テスターで測る。何い、Vccがトランスにかかっていない。トランスはハンダ面でしっかりついているが、良く見るとVccのパターンは部品面にある。

 えー、このホールはスルーホールじゃないのか。うそだろう。最初にトランスを取り外す時、例の低温ハンダが部品面まで行かずパターンを傷つけてしまったのかもしれない。しぶしぶ、トランスをもういちど外す。パターンは一部がはがれているだけでVccとの間は切れていなかった。ルーペで仔細に調査する。やっぱりそうだ。穴の中は、エポキシ基板の生地が出ている。スルーホールじゃない。

 わかったぞ、接着剤でおかしくなったのではない。このトランスの固定が問題だ。スルーホールではないので、ハンダ面からハンダを余程たくさん盛って、部品面まで流し込むか、クリームハンダか何かで前処理しておかないと、ここの接続は不安定になってしまう。

 ハンダがそこまで行かなければ、このトランスの端子(幅1.5ミリほどの平ピン)と、部品面のランドは物理的に接触していることしか期待できず、金属表面が酸化してしまえば、ちょっとしたショックや温度差などで簡単に接触不良になる可能性は十分ある。

 そういえば思い当たる節がある。最初に動かなくなったのは、車に持ち込み、急ブレーキを踏んだときに、座席から落とした衝撃から動かなくなった。そのうち復旧したけれど、ここの接触が不安定だと、こういうことは起こりうる。コンデンサーを取り替えて、全く戻らなくなったが、これは接触点の近くに熱を加えたことで、状況が固定的になったのだ。

 ふむむ、もしかすると、このトランスのところを完全に接続し直せば、元の基板パターンに部品を戻しても動くのではないだろうか。どうもスペーサーの接着剤が原因ではないような気がする。迷ったが、だめもとである。全部のパーツを元の位置に戻してみた。電源を入れる。やった。順調に高圧が上がり、パルスを検出するようになった。

 パルスは、当初より少し多い環境放射線量を記録するようになった。以前は、0.08程度だったが、0.11μSv/hくらいに上がる。過大電圧の時のパルスは、オシロにあったように相当派手なパルスにならないとカウントしていない。こちらの方が本当の値なのかもしれない。

 ちょっと心配になり、電圧を測ってみた。おやおや何と800Vもある。ブレッドボードのときは、600V近辺で、ちょっと高いがまあいいかと思っていたが、これではいくら何でも高すぎる。回路の効率が良くなったからかもしれない。それにしても、定格の倍だ。何とかしないといけない。

検出回路もインチキだった(8/28/2011)

 電圧を下げるには、電圧制限回路を追加するのが一番確実だが(部品も買ってある)、とりあえず発振回路のコンデンサーを1μFから、さらに0.47μFに落としてみた。電圧は、400~450Vに下がった。しかし、今度は、パルスを拾えなくなってしまった。今まで効果のあった出力回路にあるコンデンサーの値をいくら小さくしても駄目である。

 試しに、このコンデンサーをはずしてみた。さすがにこれでパルスを拾うようになったが、オシロで見てみると、このパルスは、反応パルスが起きた後の電源の変動のピークも拾っている。多数のパルスが起きる。電圧が下がったせいで本来のパルスが小さくなり区別がつかなくなっている。

S_p8294153 どうもおかしい。トランジスターのベースに入る入力パルスが負電圧なのだ。GM管の反応パルスは、高電圧から一気に0Vに落ちるパルスなので、コンデンサーを通すと逆方向に電流が流れ、ベースが負電圧になるのは納得できる。ところが、どういうわけか今までの検出は、このパルスのオーバーシュートの部分でベース電圧がプラスになるところで、コレクター電流が流れてパルスが落ちる。結果として、正論理のままの出力になる

 これは明らかにおかしい。オーバーシュートの部分をトリガーにしている。考えてみれば、GM管の反応が負論理なのに、トランジスターの出力も負論理のままである。本来のトランジスターバッファーは反転しなければならない。

 これまでの過大電圧(1500V近く)のときは、GM管は10ms以上の間、立て続けにパルスが発生し、派手なオーバーシュートが出ていたので、コンデンサーでなまらせて1パルスにしていたが、定格のパルスでは、このままでは正規のパルスと電源変動のパルスの区別がつかない。

 パルスが負電圧なので、いわばプルアップしてやれば良い筈だと、ベースに交流増幅のように分圧抵抗で持ち上げるが駄目。パルスが消えてしまう。ウェブで「負電圧 ベース入力 プルアップ」などのキーワードで調べるが埒(らち)は明かない。トランジスター回路の応用なのだが、アナログの素人の悲しさ、どうしてこれを解決すれば良いのか方策が見当たらない。

先人の回路を真似る。見事なパルス(8/29/2011)
 そのうち気がついた。自分で回路を開発しようというのが無謀なのだ。他の人がどうやっているか調べてみるべきだ。これまでの集めてきた自作ガイガーカウンターのサイトをしらみつぶしに検出回路について調べてみた。

 すると、ここのサイトの説明で、謎がすっかり解けた。ここには簡潔に書いてある。「アノード検出回路は、負パルスなのでPNPトランジスターを使います。」なるほど、そういうことなのか。NPNで一生懸命プルアップしても、ベースとエミッターの間の電圧は一定なので動作点が変わってしまい、負電圧は拾えないのだ(少し勉強した)。

 SparkFunの検出回路はGM管のアノードからなのに、NPNを使っている。そもそも根本的なところから間違っている。これではまともなパルスは検出できないわけだ。しかし、市販のキットでもこんなことがあるのかとちょっとあきれ気味である。しかも、クリエイティブコモンで、回路図もボード図もEagleで公開している。暇があったら英訳して送ってあげたいところだ。

S_p8304156

 検出回路をブレッドボードに移して、このサイトの回路図や、別のサイト(ここやここ)でも見つけた回路図を参考に、回路を組んでみた。ブレッドボードなので簡単に組みあがる。オシロで波形を見る。おおお、何と言う美しさだ。見事な検出パルスが出た。サイドのノイズは、回路図にある100pFのコンデンサーで綺麗に消えた。素晴らしい。教科書にでてくるようなパルスだ。マイコンは立下りでとっているはずで、ソフトは全くいじらないで、この正パルスで動くはずだ。

S_p8304155キットの実装に熱中する(8/31/2011)
 ブレッドボードの検出回路は見事に動いた。次はキットの基板への実装である。頭を捻る。検出TRのパッケージはチップでなくお馴染みのTO-62(MPSA18)だ。NPNからPNPに換える必要がある。PNPは手持ちの2SA1015で、キットの石のピンアサインは、CHANEYのときと同じ、EBCである。注意しないと前の二の舞になる。

 こういう改良は、なぜか心が躍る。いかにこれまでのパターンを活用して簡潔に回路を完成させるか。メモ用紙に実体図を描いて検討する。ほどなく空中配線にならず、一番合理的な方法を考え付いた(おおげさな)。

 まず、カッターでTRのエミッターの接地部分を切り離す。ここは感心にもスルーホールになっていた。そうか、トランスのところも最初はスルーホールだったが、トランスのピンが大きすぎて広げた結果、そうでなくなってしまったのかもしれないと勝手な推理をする。

 当初のエミッターのピンはご丁寧に両面ともベタアースにつながっており、ここはPNPになるとVccにつながるので余裕を見てカットしておかないといけない。切り離しに時間がかかる。ルーペで何度も確認する。

S_p8304158

 次は、部品面にある1KΩのダンピング抵抗を47Kに変更し、プルアップ抵抗(1M)とノイズ防止コンデンサー(100pF)をハンダ面に固定する。Vccラインを遠方から引っ張ってトランジスター(エミッター)のところへ配線する。最後は、当初のVccからのプルアップ抵抗(1K)を除去し、4.7μFの載っていた大きなランドにコレクターの負荷抵抗(100K)をつければ完了である。

 何度も配線をなぞって間違いがないか確かめる。よーし、問題ない。これで動くはずだ。S_p8304160念を入れて電源をONする。暫くたって赤いLEDが消え、LCDに「ケンチシマシタ!」のメッセージが出た。いやあ、SparkFunのガイガーカウンターは、これでやっと本来の機能を取り戻した。GM管の高圧は、400~450V。問題ない値だ。

 回路図はいくつかのサイトを参考にさせてもらったが、著作権の問題を避けるために、そのまま掲載することはやめることにする。リンク先の回路図をご覧になっていただきたい。回路図がなくてもこれまでの説明と画像で変更はできる。ただし、トランジスターのピンアサインにはくれぐれもご注意(前々回記事参照)。

S_p8304163

 ついでに、ソースコードの修正をしておく。正規のパルスにしたせいでタイマーの1tick 128μs以内に複数回起きるパルスを拾うようになった。LND712のデッドタイムは、90μsなので、128/2=64μsは、独立したパルスとみなさないほうが良い。これを無視するように修正してある。

ここに、AVRStudioのプロジェクトになったソース一式を置きます。

「SparkGeiger901_2011.zip」をダウンロード

S_p8304162x

| | コメント (8) | トラックバック (0)

« 2011年8月 | トップページ | 2011年10月 »