« SparkFunのガイガーカウンターを正しく動かす | トップページ | 2台目のガイガーカウンター(CHANEY)が完成しない »

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さん、ありがとう。

|

« SparkFunのガイガーカウンターを正しく動かす | トップページ | 2台目のガイガーカウンター(CHANEY)が完成しない »

AVR」カテゴリの記事

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

コメント

レスありがとうございます。

>何のためにこの機能があるか
 私にも分かりません。

でしたら、私は、気にしなくてもいいですね。
なんとなくCD-RWのようなものかと妄想なのです。

> 長持ち?まさか。

はい^^;
そうですよね。少なくとも書き換えの回数が増えるのですね。言われて見るまでは未知数なんです。^^

投稿: TACTAC | 2013年1月26日 (土) 15時17分

>avrXX.exeには -E optionがありますが

 フラッシュをクリア(FFのはず)しておけば、
 あとの検証などに便利なためでしょうか
(書き込んだあとがのこる)
 
 昔は、バイナリを読まれないためにクリアした
 とも聞いていますが、何のためにこの機能があるか
 私にも分かりません。

 長持ち?まさか。

投稿: がた老 | 2013年1月25日 (金) 21時34分

先ほどは失礼しました。
これは本来ELMさんのBBSというか自分でsrc読めよ。^^
というところなのでしょうが
お情けでひとつだけご教授お願いします。m(_ _)m

avrXX.exeには -E optionがありますが

これってイレースしなくとも書き換えれてるようなのですが、わざわざ -E optionがあるということは、よくHDDで完全イレース(企業などが廃棄するとき)のためのものなのか、それともAVRを書き換えの際、-Eで消去したほうが長持ち?するとかどうも本を追いかけても当たり前のことなのか超初心者にはわかりません。

できましたら何卒よろしくお願いします。
一般論的なご意見でもなんでも結構です。

投稿: TACTAC | 2013年1月25日 (金) 18時47分

>grepを使うほどでもなく、実行ファイル(avrsp.exe)を、
>え、avrsp.cを探されました? 最初の方の DevLst[]に

あらら、そうでしたか。^^;

最初ヘッダみて変数名で追いかけていたものですから~
コンパイルを教えてもらったのは、いいのですがどこをどう触っていいかわからず、暴挙を思いついたというわけです。何かWin独自のdbにでも書いてると思い込んだというところです。

その後、328[-]の書き込まれてる版で参照してみたら
動きましたし、168Pは普通に書けました。

窓でのコンパイルも確立したいのですが
腰が重い。。。
でもAVRだけはWin-AVRですか?慣れてきたら使ってみよようと思っています。(かなり当てにしていますので
よろしくご指導のほどを~^^)

LINUXも一応は環境あります。Centの5あたり?


投稿: TACTAC | 2013年1月24日 (木) 15時00分

TACTACさん、いらっしゃい。

>ソース内にデバイスIDそのものが見たららず
 え、avrsp.cを探されました? 最初の方の DevLst[]に
 ありますけど(今、見ています。行番号43)。それによれば、
 デバイスIDは、16進で入っています。

 grepを使うほどでもなく、実行ファイル(avrsp.exe)を、
 バイナリエディターで開き、有効な、328Pのシグネチャー
 0X1E950Fを探し出し(テーブルになっているのですぐわかる)、
 無印328の0X1E9514にすりかえるだけで動きますね(ただ、
 328Pは動かなくなる)。

>フューズの件ですが、削除しとうと思った
 削除という概念はありません。

 私がいつもやっている方法は、AVRSP -rf でフューズが
 見えるので、AVRSP -flxxxxxxxx か、-fhyyyyyyyyy で、
 設定します(lはlower hはhigerアドレス、xyはビット)
 

投稿: がた老 | 2013年1月24日 (木) 13時08分

GM管(SBM-20)も作成されたのですね。
ストリナのキット付属のものより感度よさげで
複雑な気持ちです。^^;

でもどーせ。プラケースに入れているので
あまり関係ないかと
不気味にチッチッとなりますねえ。

投稿: TACTAC | 2013年1月24日 (木) 00時40分

こんばんは。

先ほどはelmさんところでお世話になりました。

一からコンパイルの方も挑戦してみたいと思いますが
ソース内にデバイスIDそのものが見たららず
とまっていました。商品名はあるようですが。。。
Grepしたのでよほど探し方が悪いのか???状態です。

それとフューズの件ですが、削除しとうと思ったのですが、削除機能がないのですか?自投稿の。。。

よくわからないですが avrss.exe -F AABBCC
って感じでバイナリデータを送信するまえに
設定しておくようにすればいいのかな?と
こちらのページの内容で感じました。

本日は本当にありがとうございます。

追伸:早速テストしようとしたら
   COMポートがないのです@@

   明日にでも実家に取りに行かないという
   お粗末ぶりです。^^;

投稿: TACTAC | 2013年1月24日 (木) 00時36分

初めまして。

いつも興味深く拝見させていただいております。

折り入ってのお願いがありまして、先ほどメールさせていただいた者です。

どうぞよろしくお願いいたします。

投稿: ryou | 2011年9月17日 (土) 22時07分

コメントを書く



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


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



トラックバック


この記事へのトラックバック一覧です: もうひとつのガイガーカウンターの制作など:

« SparkFunのガイガーカウンターを正しく動かす | トップページ | 2台目のガイガーカウンター(CHANEY)が完成しない »