2015年1月3日土曜日

SparkFun Geiger Counterの改修

震災の年にback-orderで注文し数ヶ月待って入手してあったSparkFunのSEN-09848というGeiger Counterだが、いざ届いて使おうとする前に、同製品のComments欄で「回路設計に重大な問題があり、そのままで使うと貴重なGeiger管に定格(450~650V)を超える過大な電圧(1,000~1,500V)がかかっている」という事が指摘され、物議を醸していた。

そこではいろいろ回路修正方法が議論されていたが、ともかく修正しない事には使えない代物だという事が判り、少しガッカリするとともに、いつか修正しようとして箱にしまったまま、忙しさに紛れて早3年以上過ぎてしまった。

しかし気になって仕方がなかったので、この正月休みに遂にその修復を試みてみる事にした。

SparkFun Geiger Counterの世代

  
SparkFunのGeiger Counterは原発事故後に当然ながら注目を浴びたが、これから述べる不具合をusersから指摘されたためその後改版を繰り返している。当方が入手したのは震災当時販売されていたSEN-09848という一番左の物である。

SEN-10742では、見て判る通り真ん中左の高圧印加用のswitchがより耐圧のある適正な物に変更されたが、過大電圧の問題や、後に述べる検出回路の誤りはここでも修正されていない。

現行品のSEN-11345になり、高圧回路には本来あるべき定電圧回路が挿入され(右端に新しく増えた黒い部品がZener diodes)、また検出回路がanode検出からcathode検出に変更され正しいpulsesを拾うようになった。SEN-11345の回路には問題は無いので、これから買われる方は安心して注文されて良いと思う。

一方、SEN-10742迄の製品をお持ちの方は、これから述べる回路修正が必要である。さもないとGeiger管を過大電圧により壊してしまう事になるかもしれない。なおSEN-09848の前にさらに古いversion(SEN-09298)もあるが、当然ながら不具合品である。

問題点

これは主に2つある。
  • (1)Geiger管に定格(450~650V)を超える高圧(1,000~1,500V)がかかっている。
    • 高圧系の定電圧回路が省略されていることと、恐らく作者が設計時にtesterの誤用により適正な電圧であると誤解した事が原因と推測されている。
  • (2)検出回路の極性に誤りがあり、適正にpulseを検出できない。
    • anode検出を採用しているにもかかわらず、NPN transistorでinterfaceを組んでいる。
他にもswitchの耐圧の問題とかあるのだが、省略する。

SparkFunの製品siteのComments欄では主に(1)の問題しか議論されていないが、日本の「がた老AVR研究所」のblogで、(2)の問題とその対策が詳細に解説されていた。

当方は、この「がた老」さんの方法を参考に修正しようと考えていたが、基板のresistを削ったり、遠方から配線を引き回したりという手順がやや複雑に見え、そのまま放置してしまっていた訳である。


修正作業


修正前の状態

それでは修正作業について解説していきたいが、その前に修正前の状況をoscilloscope(DSO Nano v2)で確認しておく。SEN-09848の修正前の検出回路周りは次の様になっている。
OUTがATmega MPUに入る、transistorで整形された(はずの)trigger出力である。

まず、Geiger管のanode出力であるSIGTP1で見てみる。
これが正規のpulseなのだろうが、高圧過ぎるためか雪崩効果(avalanche effect)が起き、次のような連続pulsesも頻繁に観測される。
実際にはSEN-09848のoriginalの状態では、上の正規pulseの方をcountしているのではなく、下の雪崩効果の連続pulsesをQ4の出力(collector)側の大容量capacitor C9で平滑してOUTに出力しているらしい。TP2OUT)での観察結果を見てみよう。
このように雪崩効果の持続時間にもよるのだろうが、50~100msecの矩形pulseとなってQ4から出力され、これがATmega MPUに入力されていた。

しかしこれでは、本来のGeiger管のpulsesを計測しているのではなく、「雪崩効果」の数を計測している事になってしまう。そもそも0.1秒なんて長さのpulseは線量計測としてはどう考えてもおかしい。

途中経過

「がた老AVR研究所」の方法が正しいことは最初から判っていたが、blogに記載されているresistを削ったりする方法が面倒に思えてしまい、他の2、3の部品の交換だけで何とかならないか、最初試行錯誤していた。

問題(1)の高圧を適正化する方法は、C2 10uFを 0.5~1uFにすることで良いのだという。まずそれを行い、また検出回路のQ4のcollector側の平滑用のC9を0.33uFに下げてみた。しかしそれではpulseを殆ど全くcountしなくなってしまった。Oscilloscopeで見てみると、まずQ4のbase(TP1)ではこのような物が見られた。
Geiger管のpulseは真ん中の大きなnegative pulseであるが、それ以外に小さな周期性pulse(1.6msec周期くらい)を見るようになった。(なぜこういうのが出るようになったのかは今でもよく分からない。)Geiger管のpulseもovershootがあり、何だか不思議な形だ。

Q4の出力側(TP2)で見ると、それなりにpulseらしい波形であったが、何故かこのpulseではMPUが殆ど全くcountしてくれないのだった。Firmwareのsourceを見てみると、ちゃんとfalling edgeで入力pinをtriggerするようにprogramされているのだが。

最終修正

高圧の修正と平滑capacitorの値の修正だけでは結局駄目だと分かったので、意を決して検出回路の修正もすることにした。

やった事は、「がた老AVR研究所」のblogを参考に、こちらのsiteの「アノード検出方式のインターフェース回路」ほぼそのままに改めたのである。より具体的には、上に引用したSparkFunの回路図上で説明すると、下記のように修正を行った。
  • Q4 MPSA18(NPN)→ 2SA1015(PNP)に変更
  • R9 1k → 56k に変更
  • Q4 Emitter を VCC に配線
  • SIG と VCC 間に、R 2MとC 100pFを並列に挿入
  • R10 1k8 は削除
  • C9 47uF は R 100k に置換
お手本にした回路と少し抵抗値が違うのは、手持ち部品の都合である。

Resistを削るのはやや面倒だから、横着をしてtransistorの脚を1本空中配線して誤魔化した。
この修正により、見事にGeiger Counterとして正規のpulseをcountするようになった。もし「がた老AVR研究所」の記事がなかったら、筆者の知識だけでは到底修正し得なかった事である。「がた老」さんにはこの場を借りて心より御礼申し上げる次第である。

その正常動作を再びoscilloscopeで見てみよう。まずTP1だが、transistorをPNPに変えたためVCC基準で測定した。 
先ほどの途中経過での不思議なpulseと違い、美しい正規pulseが入るようになった。周期性の小さなpulse(原因不明)は見られているが、これらはMPUでのcountに全く影響を与えないので気にしないことにする。C2 capacitorを都合で1uFにしてしまったためまだ電圧がやや高いのか2枚めの写真のような連続pulseを時に見ることがあるが、それほど計測に影響はないようである。C2は0.47~0.68uFが良いと思う。

検出transistorを通過したTP2での出力は次のように綺麗な100usec前後の矩形波pulseとなり、ATmega MPUできちんとcountされるようになった。
但しfirmwareではまだfalling edgeで検出するようにprogramされているようなので、rising edgeに修正するのが良いかも知れない。どちらでも同じようにはcountするけれど。

なおSparkFunがSEN-11345で行った検出回路の修正は、Q4はNPN transistorのまま、検出方式をanode検出からcathode検出に変更している。このためOUTでの出力はactive low(negative pulse)であり、falling edgeでのtrigger検出のままでprogram上も問題ない。同じ方式で修正するにはGeiger管周りの回路変更が必要で大がかりになりすぎるため、筆者は「がた老」さんと同じくPNP transistorによる検出方式とした。

あとがき

因みにこのGeiger Counterを設計したAaronという人は、もう転職してしまってSparkFunに居ないそうである。彼(a1ronzo)は最初問題に気付いていなかったようで、製品のComments欄で「電圧も高くないし、製品はずっと正常に動作している」としきりに不具合を否定していた。

このGeiger Counterは元々放射線量計測を目的としたというよりは、乱数発生器として企画された面がある。だから元から入っているfirmwareには時間線量を出力する機能は無く、ただpulseのcountに応じて0か1かを出力するだけの単純なprogram(countの間隔が前の間隔より長い時0、短い時1)となっている。

彼がこのGeiger Counterを設計・販売後に日本の原発事故が起こり、本製品が世界中から注目を集めることになり、結果的に設計ミスが白日の下に晒されることになったのは、彼にとっては不遇だったと言えよう。

日本のmakerだったら、非を認めて製品を無償交換するくらいの設計ミスだと思うが、海外には日本のような「謝罪文化」は無いので、問題点が指摘されても交換は行われないし、買った人もそれを強く要求するわけでもない。

日本人の感覚だとAaronの立場に立たされれば、責任を取って退職したのではないかと思う。

Aaronは途中から設計ミスを認める発言をするようになっていたし、結果的にSparkFunは設計ミスとみられる部分を完全に修正して現行品をreleaseしている。最後の改修品がAaronの手によるものかどうかは筆者には判らない。

筆者は、Aaronは日本人ではないから引責退職したわけではなかろうけど、自身の設計ミスがこれだけ大きく取り沙汰されてしまった事の責任を痛感してはいたと思う。だから彼は転職という形でそれを清算した(早く言えば「逃げた」?)のではないか、というのは上記の改修作業をしながらの筆者の空想である。

0 件のコメント:

コメントを投稿