« FreeRTOSマルチタスク対応UARTとガイガーカウンターキット | トップページ | ログ機能を持ったSparkFunガイガーカウンターのソース公開 »

2011年7月18日 (月)

SparkFunガイガーカウンターキットをポータブルにする

 女子サッカーワールドカップ日本代表初優勝おめでとう。決勝戦は珍しく早起きしてTV観戦したが、これほど感動、興奮したことはこれまでにない。アメリカが点を入れても入れても追いつき、PK戦では余裕の勝利。希望を捨てないことが、いかに大切かを身をもって教えてくれた。津波、原発事故、政治迷走と暗い話題ばかりの日本に大きな勇気と力を与えてくれた代表チームに心からありがとうと言いたい。

S_p7174022 それはさておき、電子工作である。今までのFreeRTOSのプロジェクトはちょっとお休みして、2ヶ月待って届いたSparkFunのガイガーカウンターキットを少し実用的な形にすることにした。みんなに自慢したい気持ちも後押ししている。「電子工作が趣味です」と言っても誰も怪訝な顔をするが、これを見せれば何をしているか理解してもらえるだろう。

面実装のCPUからI/Oピンをとりださなければならない(7/10/2011)
 このSparkFunキットは、ガイガーミュラー(GM)管がストロベリーリナックスのキットのと同じアメリカ製のLND712で、CPUチップがAVRのMega328、USBから5Vを貰い、放射線量に応じてGM管が出すパルスを、USBの仮想UART(FT232RL外付け)を通して01のASCII文字として出力する。表示装置などは何もついていない(あ、LEDが2つあるか)。

 CPUチップはMega328という結構、大きな(Arduinoでも使っている)石なので、色々なことが出来そうだが、基板には空きピンは出ておらず、ピンとして用意されているのは、UARTの送受信ピン、GM管からのパルスTTLとリセットピン、Vcc、GNDだけである。音ぐらいは外付けで出せそうだが、LCDなどの表示をしたければ、表面実装のCPUチップからピン出力を取り出さなければならない。

 別のCPU基板をつければ好きなことが出来るが、それでは折角のフラッシュが32KバイトもあるMega328は何にも使われないままになってしまう。これでは余りにも資源の無駄遣いである。地球資源に優しい(ケチとも言うが)がた老AVR研究所は当然そんなことは考えない。Mega328をとことん使ってあげなければ可哀そうである。

 品物が来る前から構想は考えてあった。当面の目標は電池駆動にして、表示装置を16文字2行のキャラクターLCDモジュールとし、持ち運びが出来るようにすることである。これを今のCPUで実現するためには、I/Oピンを少なくとも6ピン、電源、GNDの2本あわせて8ピンを引き出してLCDと接続しなければならない。

 RTC(リアルタイマークロック)や、データロガーの機能も欲しいが、これは次のバージョンとしよう。余り一度に沢山のことを企むと上手く行かないことが多い。それにCPUがクリスタルで動いていないので、このあたりも改修したいと思っているところだ。

基板のスペースにLCDと接続するソケットを固定する(7/11/2011)
 Mega328のパッケージは、自分でもこの間digikeyで手に入れたTQFP32ピンである。0.8ミリピッチなので、ここにUEW線をつけていくのはそれほど難しくはない。しかし周りにチップ抵抗や、LEDが近接しているところがあるので取れるところは限られてくる。それより引き出した線をどうまとめて外と接続するかが問題である。

 0.8ミリピッチとはいえ、通常の拡大鏡(2倍程度)では細かいハンダ付けは無理で、このあいだSTM32の0.5ミリピッチのバッテリーバックアップピンの切り離しに使ったヘッドルーペ(3.5倍以上)を取り出す。作業机の廻りを片付け、精神を集中して1本づつ引き出していく。このあたりが腕の見せどころである。

S_p7114017 ハンダ付けを終わる度に、20倍ルーペで仔細に確認する。拡大してみると綺麗についたと思っているところも結構暴れていて満足できるところは少ないが、それでも順調に線の引き出しが進み、6ピンまでとれた。調子に乗ってVccとGNDもCPUのピンから取り出す。これで8本。

 LCDモジュールで、ループウェイトかレディ待ちかで議論のあったR/W線をつけるかどうか迷ったが、何か、次ぐらいで失敗しそうな気がしてやめた。へたれである。

 次は問題の線の固定だ。色々考えた末、2ミリピッチのピンヘッダー(Xbee用)を2ミリピッチ基板(秋月で買ったもの)の小片に固定し、この基板小片をスペーサーで基板に固定することにした。

 ソケットを固定するためのスペーサーで手間取る。両方とも接着してしまえば簡単に固定できるが、これでは保守性が悪い。配線間違いなども直せない。せめて基板小片の方はネジ止めしてはずせるようにと、5ミリのスチロールパイプにドリルで穴を空け、セルフタッピングの2ミリねじで固定しようとした。 

S_p7114019

  しかし、スチロールが硬くてネジ山が切れない。丸い割り箸を切って使うと簡単だが見栄えが悪い。変なところにこだわりがある。結局、道具箱で見つけた建材の一部(家具の棚のホゾ?径5ミリ丸棒)をサーキュラーソーで5ミリに切って、そこへ錐で穴を空け、2ミリタッピングネジで止めた。意外に上手く行った。最近の瞬間接着剤(シアノクレート系)は強力になった。

LCDがスペック通りの早さで動かない(7/13/2011)
 接続ソケットとケーブルが出来たのでケースに実装する前に、テスト用のLCDをブレッドボードでつないでテストする。LCDライブラリは、ピンの位置が任意に選べる最新版。しかしこの最新版は、ループウェイトしないレディ待ちする方式なので、待ち時間を適当に入れなおして組み込む。

Ws000001 色別に線を選んで誤配線を防ぐ。ここは前に何度も誤配線したところだ。予想したとおり最初はうんとすんとも言わなかった。ははは、残っていたR/Wラインをグランドに落としていなかった。ジャンパー線でグランドに落とす。よーし、これでめでたくLCDに表示が出た。

 最初、息つくような遅さだったが、待ち時間を徐々に減らして、大体満足できる更新時間になった。しかし、データシートにあるような待ち時間ではとても動かない。40μsは全く無理で、500μs以上の待ち時間が必要である。

 まあ、チューニングは後にして、長時間LCDを出しっぱなしにして様子を見る。LCDモジュールは余り安定性が高くなく、たまにハングアップすることがあるからである。全体の消費電流は30mA。GM管は殆ど消費がないようだ(GM管への電源ON/OFFで変わらないことから)。

 とりあえず動いたがLCDの表示速度が、スペック通りではないのが気になっている。今までは手探りだったが、ロジアナがあるので、こういう外部への出力は簡単に時間やタイミングを見ることが出来るようになった。しかも正確な時間が出てくるので余計気になる。 スペック通りの待ち時間では全く反応しない。40μsどころか、その10倍以上、400μsの待ち時間にしても、コマンドのあとハングする(700μsも必要)。

 最近はLCDをレディ待ちで使うことが多かったので、こんなに待ち時間が必要だとは思ってもいなかった。大体、CPUループで作る待ち時間も良い加減なものが多い。前はカットアンドトライで動けばOKとしていたので気にならなかったのかもしれないが、知ってしまうと気になって先に進めない性分である。

 他の人のソースをいくつか見せてもらう。何い?ちゃんとスペック通り40μsで動いている。ところが、なんと、コマンドのENABLEサイクルがミリセカンドオーダーだ。こちらは、スペック通り、マイクロセカンドのオーダーで、ENABLEパルスを送っている。だから動かないのか。

 その通りにする。待ち時間をスペック通りに短くし、ENABLEをマイクロセカンドーオーダーから数百マイクロ秒(700μsも必要)で上下するようにした。これで上手く行った。そうか。こういうオチだったのか。

 LCDの全体の表示サイクルというのはミリセカンドオーダーなのだ。しかし、考えてみるとこちらの方が遅い。ENABLEの長さは、HとLで2つ変わる(つまり倍で効いてくる)が、コマンドの方は1回だけである。しかし色々いじるが結構頑固で全体でミリセカンド以下にはならなかった。

 今までのテスト用のLCD(秋月「超小型」SD1602)が一応表示されたので、次は、今度の実装に予定している少し大きいSC1602(これも秋月商品)で動かそうとした。ところが、こいつが意外に手間取ってしまった。今度は全部が工作ミスである。いやいや情けない。

 コントラストピンが0Vでは、画面がギラギラするので、コントラストを下げるため、コントラストピンに分圧した電圧をかけようと、ピンそばの抵抗の半田付けをしているうちLCDが表示されなくなり慌てた。どうも熱で隣のグランドの部分の半田付けがゆるんでしまっていたらしい。このピンをハンダ付けしなおして回復した。

 最後のミスは、10Kオームと1Kオームの誤認である。仮止めしてOKになったので、リードを切って正式につけた抵抗が、実は、隣にあった別の抵抗だったというお粗末である。出来上がったLCDはまた画面が消えて大騒ぎになった。いかん。今日は天中殺だ。

ケースの実装とちょっとした変更(7/15/2011)
 少しづつケースの工作の方も進めている。ケースは秋月電子のABS樹脂ケース112-TS(¥120)を使った。アクリルに較べ丈夫で傷つきにくい。電池ケースは4本を2本づつ横に並べるつもりだったが、これがぎりぎりで入らない。1ミリ程度の超過なので最初、両側をやすりで削って入れようとしたが、削っている最中にはたと気がついた。

 1ヶ入りのホルダーを2本連ねようとするから窮屈なので、片側を切り離して電池2本が直接ケースの中で並ぶようにすれば良い!コロンブスの卵である。サーキュラーソーで片側を切り取り電池をつけてみる。余裕でケースの中に入る。LCDの時とは打って変わって快調である。

S_p7174033 電池はエネループを予定している。しかしこの電池の電圧は微妙である。定格は1.2Vだが、満充電時は、1.4Vで1.3Vあたりが長い。Vccを5Vとすると、4本では最初は明らかに絶対定格を越え(5.6V)、長い間5.2Vというのもきつい。といって3本では、常用時は4V以下に下がってしまう。一応測定器ということなので、余り電源電圧は下げたくない。

 迷った挙句、電池は4本として、ロードロップのレギュレーターを入れることにした。これなら問題ないが、電池電圧が5Vを下回ったときにレギュレーターがどうなるか、ちょっと不安は残る。

 さらに、気になっているのがSparkFun基板に2つ付いているLEDの色である。powerが赤、GM管のパルス表示が緑だが、これはどうみても逆だろう。この赤の電源LEDはキットが届いてすぐ、CPUでブリンクするようにしたが、赤が点滅するのは非常に目立つのに、緑はよく見えない。

 暫く考えていたが、意を決してこの表面実装のLEDも交換してみることにした。例の低温ハンダを使う。しかし、ここでも、お馬鹿な失敗を2つやった。最初は、無事2つのチップLEDをはずして、意気揚々と付け直したら同じところにもう一度取り付けている。肩の力が抜ける。今度こそと、取り付け直したら、今度はLEDのひとつを逆さまに取り付けていた。やれやれ。

 電池ケースの固定は、エポキシ系の接着剤を使う。接触面積はあるが、こういう重さがあって、力がかかるところは瞬間接着剤は止めたほうが良いというのが今までのノウハウである。これは固まるのに時間がかかるので、ケースの工作は中止して1日寝かせる。無機質の部品が組み合わさって、段々、ひとつのものの形になって行くという過程は、何度やってもいつも楽しいものである。

ポータブルガイガーカウンター完成(7/17/2011)
 電池ケースの接着を待つ間に、レギュレーターの小基板の工作を始める。ポータブルということなので、電池ケーブルのソケットはちゃんとした日圧の2ピンソケットを使う。最初、主基板とはピンヘッダーでハンダ付けを考えていたが保守性を考慮して、ここもピンソケットにした。

 ケースの上蓋のヒンジをはずしてLCDの工作も始める。LCDは4つのスペーサーをつけたネジで上から固定する。化粧面なので慎重に4つの穴をまず小さいドリルで開け、やすりで調整していく。ここのスペーサーは、最近、近くのDIY店で買った5ミリのABSチューブである。スペーサーは5ミリや10ミリのものも買えば一ヶ¥5から¥10でばかにならない。ABSチューブは1メートルで¥120。サーキュラーソーがあるので切断は問題なく、地球にやさしい(これは単にケチなだけ)。

S_p7174021

 細かい調整(レギュレーターの電解コンデンサーの高さがつかえて、つけなおし)や、USBコネクターをつけるため主基板を移動(エポキシ系の接着力を確認した。元のままでは大きな穴を開けねばコネクターがつかず、泣く泣く移動)させられるなど紆余曲折はまだいくつかあったが、やっとSparkFunのガイガーカウンターキットはポータブルになった。

 持ち運べるようになったので、色々な場所に移動して測定し始めた。すぐに気が付いたことは、やはりデータログが出来ないと瞬間値をいくら測ってみてもあまり意味がないということである。バックグラウンド程度の放射線量というのは、最小と最大の幅が3倍以上あるのは普通で、現在のカウンターは10回のパルスの平均を取っているが、それでもそれくらいの差は出来る。

 すんさんの掲示板にも載せたが、アマゾンで入手した放射線源のキャンプ用のランタンの芯(マントル)では派手にパルスが上がって、このキットが間違いなく放射線を測っていることは確認できた。

Ws000000 東京も、3/15あたりはこれくらいの線量だったようで、まあ、あの程度が続けば問題になるのだろうけれど、このランタンの芯は、別に何の規制も受けていないし、だいたい30センチも離せばもう殆ど反応しない。

 ただ、ここが通常より低いところか、高いところかを判断するには、最低でも1時間程度は連続して測らないと良くわからないようだ。Mega328の内蔵のEEPROMでは1Kバイトしかないのでパルスカウントでは精々30分くらいしか記録できないが、それでもあったほうが良いようにも思える。

 ただ、I2CのフラッシュROMがこのあいだのフォトフレームのために買って沢山余っているし、これを実装してから考えるべきか思案している。これなら何時間でもログが出来る。RTCとGPSまでつければ完全だけれど、どうもこれも余り深入りしたくない気持ちもあって迷うところである。

|

« FreeRTOSマルチタスク対応UARTとガイガーカウンターキット | トップページ | ログ機能を持ったSparkFunガイガーカウンターのソース公開 »

AVR」カテゴリの記事

電子工作」カテゴリの記事

コメント

すんさん、コメントありがとうございます。

あのあと、Mega328内蔵の1KBのEEPROMでも結構データが貯められることがわかったので、EEPROM版を作ってテスト中です。

これ1時間ほどほっておいて後でUSBにつなぐと、UARTで平均が見られます。これでちょっと実用的になったかという感じです(LCD上でこれをやるのが課題)

ソースの公開をこの記事でしなかったのは、すでに開発に着手していたからで次の記事ではお見せできると思います。

GM管のTTLパルス入力からあとは汎用性があるのでAVRで作るときは、少しは参考になりそうな。

投稿: がた老 | 2011年7月24日 (日) 00時32分

ガイガーカウンターで思うことはスイッチをいれてからの1~60分などの移動平均が設定できればいいのにと思います。

でもそういうのをやるのは自作しかないですね。
是非いいものを作ってください。

投稿: すん | 2011年7月22日 (金) 21時25分

はい、ロジアナで正確な時間が計測できるようになりましたので、
1.64msという待ち時間を、クリアコマンドなどのあとに入れています。

何かどこかで勘違いがあるような気もしますが、これまでのいくつかの人のソースコードを見ても、みな待ち時間はミリセカンドのオーダーのようです。

先を急いでいたので、あのままになっていますが、落ちついたら調べてみようと思っています。

投稿: がた老 | 2011年7月21日 (木) 12時19分

LCDの遅さ、へんですね。
表示クリアやカーソルホームは1mS以上時間のかかるコマンド
ですが、これは意識していますか?
(40uSという値しか出てこないので・・)

投稿: kuga | 2011年7月21日 (木) 05時01分

実装部品からの線の引き出し、参考になりました。
やっぱり、UEW線ですね。
私は、USBアダプタの増設をもくろんでいます。

投稿: きゅうる村 | 2011年7月19日 (火) 09時27分

コメントを書く



(ウェブ上には掲載しません)


コメントは記事投稿者が公開するまで表示されません。



トラックバック


この記事へのトラックバック一覧です: SparkFunガイガーカウンターキットをポータブルにする:

« FreeRTOSマルチタスク対応UARTとガイガーカウンターキット | トップページ | ログ機能を持ったSparkFunガイガーカウンターのソース公開 »