エントリー

カテゴリー「make:」の検索結果は以下のとおりです。

ガイガーカウンターを作る

  • 2011/06/07 11:52
  • カテゴリー:make:

ファイル 480-1.jpg

 秋月の出物でD3372というガイガーミューラー管が手に入ったことは先日書きました。先々週の土日に少し動かしてみようといろいろ検討をしたのですが,いやー,どうも勘が鈍っていけません。結局その後1週間ほど検討に集中して,先週金曜日には一応形にまとまったので,これで完成としました。

 AVRtiny2313を使った作例がソース付きで見つかったので,最初はこれをそのまま頂いて,最小限の変更を行うだけににしたのですが,きちんと理解をしないままにいじくり回したため,なかなか上手く動かず手こずりました。

 やはり全部をきちんと理解しておかないとダメですね。結局ほぼすべてを書き直しました。


(1)高圧の発生

 ガイガーミューラー管には,500V程度の直流電圧が必要です。D3372の場合,350V位から放射線の検出が始まります。電圧が高くなるほどに検出率は上がっていきますが,550Vくらいになると検出率が平坦になり,電圧を上げてもほとんど増えなくなります。この平坦な部分の電圧をプラトー電圧といいます。ガイガーミューラー管は,このプラトー電圧で使うのです。

 ガイガーミューラー管は,放射線が検出されたときに電流が流れるだけで,普段はほとんど電力を消費しません。ですので高圧の電源回路には電力を供給する力は必要がありません。

 プラトー電圧の発生にはいろいろな方法があります。秋月のキットではCMOS版の555を使って間欠発振させ,本当に必要なエネルギーだけ作るようになっています。おかげで消費電流が大変に小さく,優秀です。ただ欠点があって,なにせエネルギーが小さいので,その電圧を測定するには入力インピーダンスが10MΩ程度のテスタやオシロスコープではあっという間に「消費」されてしまい,真の値がわかりません。

 一方で,LCDバックライトによく使われた冷陰極管のインバータを流用することも行われていますが,供給エネルギーがGM管よりもずっと大きいものですから,インバータも常時発振しています。電池の電圧を100倍以上に昇圧する回路ですので,その効率の悪さを考えると,数十mA(あるいはそれ以上)の消費電流が常に流れていることはやむを得ません。

 カメラのストロボの駆動回路を改造する方法もあります。これは割合現実的で,よく行われている方法のようです。

 今回私がデッドコピーを試みた作例では,AVRで555の代わりをさせた省エネ方法がされています。周波数やパルス幅もプログラムで調整が自在なので,マイコンが使えるなら便利でしょうが,CMOSの555の消費電力にはかないませんので,結局数mAの消費電流は覚悟しないといけません。

 先の連休中,ペンタックスのMZ-10が壊れてしまい,それを部品取りに残しておきましたが,ここからストロボ用の部品をいくつかとります。MZ-10は6Vの電源電圧ですので,昇圧比はあまり期待できないのですが,小型のトランスと高圧用のダイオードを確保します。本当は低圧側のスイッチングトランジスタも確保したかったのですが,結構VCE(sat)の大きなトランジスタが使われていたので,手持ちのMOS-FETを使うことにします。ちょっと贅沢に,2SK703です。

 このトランスを使って100倍ほど昇圧,そしてダイオードで整流し直流を作るわけですが,実は高圧を貯めるコンデンサが最大の問題です。ストロボでは大きなエネルギーが必要ですので電解コンデンサを用いますが,GM管ではほんの一瞬ですので470pFから1000pF程度あればよいとされています。

 しかし,前述の通り,これでは電圧の測定が難しいので,あえて大きめにしたのです。2.2uFで400Vのフィルムコンデンサがあったので,これを直列にし,1uFで800V相当にします。

 とりあえず高圧発生部だけ組み立て,AVRにプログラムを書き込んだところ,どうも電圧が上がってきません。いくらなんでも100V以下というのはおかしいです。クロックが低いのではとか,パルス幅を広げようとか,いろいろやってはショートに近い状態になってあわてたりしましたが,冷静に考えてみるとこんな大きなコンデンサを十分にチャージできるような回路になっていないので,電圧が上がらないのは当然のことです。

 そこで,部品箱をあさって,小学生の時に分解したテレビから取り出した,390pFで1kVのセラミックコンデンサを2つ並列に繋いで,800pF相当にしました。これで電源電圧を6.5V位にすれば,ちょうど650V程度が作れるようです。

 これが,レンズ付きフィルムのストロボから取り出したトランスだったら,もっと低い電圧から昇圧できたでしょう。おかげで高圧発生用の電源とAVRの駆動用電源を分けることになってしまいました。


(2)パルス検出

 GM管から得られたパルスは,2SC1815で受けてAVRの割り込み端子に入れます。これはトラブルもなく,あっさりOK。


(3)カウント

 問題はここからです。パルスの数を数え,1分あたりのカウント数と,それをuSv/hに換算した値をLCDに表示する部分です。繰り返しになりますが,この部分はAVRtiny2313を使います。

 ソースをよく読まずに作り始めたものですから,おかしな動作をしても原因がわからず,試行錯誤を行うとさらに混乱するという,まるで初心者のような状態になりました。

 これではいかんと,ちゃんとソースを読むわけですが,この作例では1分間あたりのカウント数は内部で持っているのみで,表示はuSv/hに換算したものを出しているだけです。

 ロシアのGM管に合わせた係数をD3372用の係数に置き換え,内部で持っている1分間あたりのカウント数も表示させます。LCDも手持ちの16文字x2行のものに交換です。しかし,どうもワークエリアをこわしているようで,文字化けはするわ,暴走するわで散々です。tiny2313でも暴走するのかと,当たり前のことに感動しました。


(4)改良

 1分あたりのカウント数を持つ事は,ガイガーカウンターとして基礎的な機能です。しかし定義に従うと,値の確定には1分かかることになり,それまで全く表示が出ないというのはちょっとまずいです。一応,カウントされるときにはLEDとブザーが動作するようになっていますが,やっぱり表示にはそれなりの更新頻度が欲しいものです。

 作例では,3秒ごとにカウントした数を20倍してずっとその値が続いたと仮定して値を求め,,それまでの平均値との平均を取って,3秒ごとに値を更新しています。この方法は非常によいやり方に見えるのですが,私には問題が多いように思います。

 例えば,ある3秒間で2カウントあったとします。その後ずっと0カウントだったという場合を考えると,最初は40と表示され,次には20,その次は10,そして5,2,1となり,結局0になります。実際には2cpmなのに,この表示だといきなり40と出た後,21秒後には0となってしまうのです。常に一定のカウント数があるような測定には有効な手段ではあっても,カウント数が変動する場合,正確な値は全然わかりません。

 かといって,本当に1分間の間数えて表示するには,時間がかかりすぎます。

 そこで考えたのは,3秒ごとのカウント数を1分間記憶しておき,その総和を1分あたりのカウント数として使うことです。3秒ごとに新しいカウント数が得られますので,これを総和に加えると同時に,一番古いカウント数を引き算することで,常に直近の1分間のカウントの合計が得られることになります。

 過去の値の総和から,過去の値を引き算するだけですので,総和が最終的に負の数になることはありえません。そして平均を取る場合の問題点であった,最初の3秒で2カウント,それ以後ずっと0カウント言う場合の表示は,最初の1分間の間は常に2と表示され,1分を越えると0になります。

 バックグラウンドのような,1から3カウント程度の場合でも,直近の1分間の総カウント数がちゃんと表示されます。平均を用いる方法では,1カウント程度なら数秒で0になってしまいます。

 ただ,やはり欠点はあって,常に一定の線量を放出する放射線源の測定を行うと,その値が安定するのに1分かかってしまうのです。例えば1分間で200カウントの放射線源があった場合,3秒ごとに10カウント,1分間で200カウントとなります。

 しかし,平均を用いる方法では即座に200と出てくれます。急激な放射線を即座に知らせる能力に長けてはいても,それが本当の値である保証がないことは私には大問題に思えて,この方法は使わないことにしたのです。

 それに,値が安定するまでに1分間かかるとはいえ,増え方を見ていれば大体想像も付きますし,突発的な変動でも一定の場合でも,癖を掴めばそれなりの値を知る事が出来そうです。

 さらに,カウント数をゼロにしてカウントし直すボタンを取り付けてみましたが,変数を初期化した後の計数値がおかしく,どうも負の数を取ってしまう場合があるようなのです。初期化の関係か,割り込みの関係かといろいろ追いかけてはいるのですが,さっぱり理由がつかめません。

 実は,今回のプログラムはなかなか手こずってしまいました。uSv/hへの換算のために文字列操作を行っていますが,そこで確保した配列の影響もあってか,明らかにRAMを壊しているような挙動が起こっていました。

 配列のサイズを調整してなんとか動くようになったり,プログラムの最適化を行ったりしてなんとか3秒おきの更新には問題がなくなったものの,なにか機能を追加すると問題が出てくるような状態で,落ち着いてくれません。

 やむなくgoogle先生に聞いてみると,特にtiny2313ではこういう,コンパイラを使った場合の原因不明の挙動不審が話題になることがあるらしいのです。かつてGPSクロックを作ったときは,割り込みで使う変数にvolatile宣言をしなかったために動かなかったので,今回も自分の間違いを徹底的に疑っては見たもの,やっぱりよくわかりません。

 確実にAVRとコンパイラのせいだとは言えませんが,配列を使う時などは要注意のようで,配列を小さくすると正常に動いたりする今回のケースでは,やはりAVRとコンパイラの限界と考えた方がいいかもしれません。

 冷静に考えてみると,tiny2313のRAMはわずか128バイト。割り込みを使うとレジスタの待避などで数十バイト使うということですから,残り100バイト弱です。ここに配列を含む様々なワークエリアを置けば,そりゃ何かの拍子にあふれることもあるでしょう。

 AVRは確かに高機能だし,制約の少ないごく普通のC言語ですらすら書けてしまうワンチップマイコンですが,ハードウェアのリソースをソフトウェアは越える事が出来ないという,ごく当たり前の事を忘れていました。

 アセンブラならこういう問題は起きないはずで,C言語を使ってプログラムを作ることの窮屈さを,10年ぶりに感じました。

 結局有効な対策が見つからず,値のクリア機能は断念しました。負の数になって明らかにおかしい数値になっているならまだよいのですが,もっともらしい数字が出ている場合に,それが正しいのか誤りなのか判断出来ないことは最悪といってよいと思います。

 代わりに,このスイッチはAVRのリセット端子に繋げて,完全なリセットとすることにしました。入力ピンが1つ空いてしまいましたが,別になにか機能を付けることもしませんし,メモリもカツカツなので,もうこれでいいです。

 最終的に,流用したコードはほぼなくなり,ほとんど書き直してしまいました。


(5)完成に向けて

 まず,高圧発生回路への電源と,AVRへの電源を別の電圧で供給する問題を解決しないといけません。高圧発生側は約7V,AVRへは5Vです。

 ところで高圧側はそのエネルギーが小さく,手持ちの機材では直接電圧を測定出来ないため,実験用の電源器で高圧発生回路への電源電圧を可変し,レンズの放射線の測定値がばらつかないような電圧を選びました。この電圧を与えたとき高圧側にプラトー電圧が発生しているはずという根拠によって,6.5Vから7.0Vを最適値としました。

 その高圧発生回路への供給電圧の生成は,手持ちの関係でトレックスのXC9119Dを使いました。OLEDや白色LEDの駆動用に作られた昇圧コンバータICですが,効率も高く,小さく,また使いやすいよいICだと思います。入手がもっと簡単ならいう事ないのですが・・・

 これを使って作ったのは,3Vから7Vに昇圧する回路です。実際には6.8V位に調整をしました。これを高圧発生回路に入れると同時に,LDOで5Vに落とし,AVRに供給します。LDOはこれまた手持ちの関係で,NJM2387Aを使いました。1.5Aクラスの大型LDOですので明らかにオーバースペック,しかもバイポーラですのでIC自身の消費電力が結構あるため,今回のような用途には向いていませんが,CMOSの小型LDOの手持ちがなく,やむを得ません。

 昇圧回路への入力は,3.0Vで27mA,4.5Vで18mAです。81mWですね。1600mA位のNiHM電池だと45時間ほど使える計算でしょうか。昇圧回路の出力は6.8Vで10.2mAです。約70mWですので,その効率は約86.5%程度。なにも考えずに組み立てただけでこれだけの効率ですから,XC9119Dは優秀です。

 次にクロックです。内蔵RC発振では温度や電圧への依存が大きいので,水晶発振子を使いたいところです。しかし手持ちで小型の水晶発振子がないので,セラミック振動子で代用します。精度は水晶よりもずっと落ちますが,RC発振よりは断然有利ですので,これでいきましょう。

 AVRの場合,クロックソースの切り替えはプログラムで行うのではなく,デバイスのヒューズビットをライタで直接書き込みます。ソースを修正しビルドと書き込みをやり直す必要がないので楽なように思いますが,周波数の変更を伴うとどうせソースも変更が必要ですし,ヒューズビットの設定は忘れやすいので,私は非常に面倒だと思います。


(6)組み上げてみて

 手持ちのプラケースにさっと組み込みました。消費電流を測定中に過電流でXC9119Dを1つ燃やしてしまいましたし,テスターのヒューズも飛ばしてしまいました。鈍くさいことこの上なしです。

 そうそう,電流の測定ですが,手軽で使いやすい秋月のP-10というテスタでは,正確な測定が出来ず困りました。テスタの内部抵抗が結構大きくて,随分電圧が落ちるようなのです。その分を稼ごうと電源器を調整する途中でミスがあって,XC9119を燃やしたのです。

 これを,STA55で測定すると,電圧降下もほとんどなく,良い値が測定出来るようになりました。

 さて,動作試験です。まず平常時のカウント数,いわゆるバックグラウンドが2から3CPM程度であることを確認しますが,これは問題なしです。

 次になにか放射線源を使って,そのカウント数が「それらしい」ものになっているかをみます。以前も書いたように,私の手元には「放射能レンズ」がありますので,これを近づけます。いやー,やってみたかったんですよね。

 写真にあるように,164CPMという表示です。SuperTakumar50mm/F1.4の場合,D3372で大体200CPMくらいということですので,まあこのくらいで妥当でしょう。1分経過すると,大体この値で落ち着きます。1秒間に2.5回ほどのカウントになりますので,ブザーとLEDが結構うるさく,びびります。(嫁さんの目がすごい怒ってました)

 ただし,左上にあるガイガーミューラー管とレンズとの距離にカウント数が大きく左右されます。もっと近い距離に置けば250から300CPMくらいでが出てきますし,もう10mmもはなすと,数分の一まで値が下がります。15cmも離してしまえば,もう全然カウントしません。

 164CPMというのは,D3372の場合13.8uSv/hという高い線量に相当するようです。内部被曝すると洒落にならないのですが,15cmも離れればほとんど影響がないからこそ,こんな民生品に多用されたのだと思います。(とはいえ今なら絶対に世に出せないでしょうね)

 ここまでで,とりあえず放射線を検出できる事がわかりました。uSv/hへの換算は全然あてにならないのですが,そもそもガイガーミューラー管は放射線の検出器と考えた方が無難で,普段から1分あたりのカウント数をおおよそ覚えておき,それに対して多いか少ないかで危険度を見る指標とすべきでしょう。

 測定値の絶対的な値は,校正も行っていませんし,GM管の特性や放射線源にもよりますし,きちんとした線量計でも測定方法によって値が大きく異なるものなので,参考にさえならないと思います。

 ただし,普段より大きいか小さいか,そのくらいの情報でも,あるのとないのとでは大きな違いです。今から洗濯物を干そう,布団は大丈夫か,外に出ても良いかどうか,これをその場でさっと確かめることが出来るのは心強いです。なにか事故が起こっても,それがニュースで我々に届くには,数時間はかかるものです。

 そもそもガイガーカウンターというのは,ガイガーミューラー管の機能がそのまま使われているもので,これがなくては話になりません。それゆえ,回路の工夫で性能を高めることも出来ませんし,代用品もありません。

 それほど複雑な構造のデバイスではないですし,できる事なら数百円で簡単に手に入るようになって欲しいと思うのですが,冷戦終了後の需要の減少は想像に易く,それが平和利用の花形だった原子力発電の危機的状況から再び注目されるようになるとは,なんともやりきれません。


 さてさて,そんな大した製作ではなかったのですが,久々のAVRということもあって,いい頭の体操になりました。AVRも面白かったのですが,近頃は昇圧回路があっさりできてしまうので,スマートにまとまって,ホントに良い時代になりました。

汎用ヘッドフォンリモコンケーブルiPodShuffle用

  • 2011/06/06 12:15
  • カテゴリー:make:

 少し前の話になりますが,5月の連休の最終日のこと,嫁さんに,まるでジャイアンがするかのように召し上げられたiPodTouchの,その後継となる音楽プレイヤー確保に私は頭を痛めていました。

 普通ならここで家に戻ってどら焼きを食べているロボットに泣きつけば解決する(新たな問題のスタートとも言える)わけですが,一介のサラリーマンにそんな舞台が用意されているはずもありません。

 IDEOSは電池の消耗が激しく論外,初代のiPod nanoはどっかにいってしまいました(余談ですがこの機種は電池の問題でリコールがかかっています。どこかで破裂しているのだとしたら恐ろしい話です)。

 残るはiPod shuffleです。一世代前のモデルがあるのですが,現行のものと違って,これはリモコンで操作しないと動きません。しかしヘッドフォンとリモコンが一体化しているので,自分のお好みのヘッドフォンを使う事が出来ないのです。

 一時は付属のヘッドフォンで我慢しようかと思いましたが,やっぱりどうにも耐えられずに,せっかく買ったiPod shuffleを使う事そのものがなくなったのでした。

 対策は簡単な話で,付属のヘッドフォンをちょん切ってここに3.5mmのステレオプラグを取り付けるだけですが,邪魔にならず,綺麗に仕上げるにはなかなか難しいものがあります。

 アキバで部品を買ってきてもいいのですが,自分でハンダ付けを行うようなステレオプラグは結構大きくて,しかも重いために取り回しが面倒です。

 なにかないかなと,ジャンクが入ったトレイを漁ってみました。

 見つけたのは,3.5mmのプラグを携帯電話の平型コネクタに変換するコネクタです。一応ソニー製ですね。

 これ,少し古い携帯電話にはよく使われたものです。携帯電話の薄型化に対応すべく,FOMAになってからは多用されたように記憶しています。

 ですが最近は充電も通信も出来るコネクタに統合される形で廃止されつつあり,今私が使っている携帯電話では使えません。

 もともと,アドエス用に購入したものなのですが,WILLCOM解約に伴いアドエスが永遠の眠りに就いたことで,全く出番がありませんでした。

 再利用するのが正しい道だと判断した私は,早速殻割りを行い,改造をしました。もともと軽く作られているものなので,取り回しも楽なことでしょう。

ファイル 479-1.jpg

 隙間には黒い色のホットボンドを充填し,盛り上がったところを柔らかいうちに,凹凸のあるコート紙(「グーグルで必要なことは、みんなソニーが教えてくれた」という本のカバーですw)でぎゅっと押さえつけて,シボを出します。

 まあそこは素人の工作ですので綺麗ではありませんが,見せるもんではありませんので,このくらいでいいことにします。

 早速試してみましたが,当たり前の事ですけども,ちゃんと音が出ます。Bluetoothのヘッドセット並みに小さいiPod shuffleを主力機に出来るというのはちょっとうれしいものがあります。

 しかし惜しいなあと思うのは,この大きさでディスプレイが欲しいということです。有機ELの8文字1行表示で構いませんから,せめて曲名とプレイリストの選択が楽に出来るといいなあと思います。VoiceOverを絶賛したことが記憶に甦りますが,これは聞きっぱなしの時に威力を発揮するもので,やっぱ万能ではないなあと思う訳です。

100円ショップのイヤホンが,電子ブロックのイヤホンとして使えるのか

  • 2011/01/31 15:33
  • カテゴリー:make:

 先日,ある方からメールを頂戴しました。

 お子さんのクリスマスプレゼントに電子ブロックをプレゼントしたが,クリスタルイヤホンをなくしてしまった。いろいろな実験で使うだけに困っているが,代わりに使えるものはないかと思案されているそうです。

 100円ショップなどでイヤホンが売られていますが,電子ブロックに繋がるよう,配線の端っこをうまく加工すれば使えるものですか?という質問を頂いたわけですが,自己解決されたということで,お返事を躊躇していました。

 ただ,どうして使えないのか,どうすれば使えるのかと言うお話はなかなか興味深く,イヤホンをなくしたことをきっかけに,そのお子さんが「知る」きっかけになれば,大変良いのではないかと思って,ここに書こうと考えた次第です。

 結論からいうと,100円ショップで売られているイヤホンは,電子ブロックでは使えません。

 まず最初に,イヤホンの種類について整理します。

 イヤホンには,大きく分けて,磁力を使ったものと,圧電効果を使ったものがあります。

 磁力を使ったものは,マグネチックイヤホンや,ダイナミックイヤホンと呼ばれるものが属します。ウォークマンやiPodなどで使われるのがダイナミック型,ラジオのイヤホンとして売られているものは,マグネチック型が主流です。

 ダイナミック型は,電磁石に薄いフィルムを貼り付けておき,コイルの内側には永久磁石を置いておきます。

 コイルに音声振動が流れて電磁石になると,そこから出る磁力と永久磁石の磁力とが引かれたり反発したりして,コイルが動きます。これがフィルムを振動させて,音にします。スピーカと同じ仕組みです。

 マグネチック型はダイナミック型とは似て非なるもので,コイルの内側に磁石を置くところまで同じです。

 そして,その磁石の近くに鉄の薄い板を置いておきます。磁石からの磁力が鉄板を引っ張っている状態が続くのですが,この状態でコイルに音声信号が流れると,コイルの磁力と磁石の磁力があわさって,鉄板を引きつける力に変化が生まれます。

 この結果,鉄板が振動し,音が発生します。

 この2つは,原理は異なるものの,コイルに電流を流すことから,電圧と電流が必要です。電圧と電流の積は電力ですので,このイヤホンを動かすには,電力が必要になるということになります。

 その代わり,音が大きく,音質も良いものが得られ,小さく作ることも可能です。だから現在主流になっているのですね。

 さて,圧電効果を使ったものについては,クリスタルイヤホンが該当しますが,現在は作られていないはずで,セラミックイヤホンがこれに代わっています。

 クリスタルイヤホンというのはその名の通り,結晶を使ったイヤホンです。有名なものはロッシェル塩の結晶を使ったもので,出力が大きく音質もよいのですが,湿気を嫌い,吸湿すると性能が落ちるため,現在は使われていません。

 そこで現在は,同じような性質を持つセラミックを使っています。これがセラミックイヤホンで,クリスタルイヤホンに比べて音も小さく,音質もあまり良くないのですが,同じようなものとして扱って構いません。

 ある種の物質には,電圧を加えると変形し,また変形させると電圧を発生させる性質を持つものがあります。この性質を圧電効果といいます。

 圧電効果を示す物質にはいろいろありますが,特に強力なものはロッシェル塩の結晶や,チタン酸バリウム,チタン酸ジルコン酸鉛(PZT)といったセラミックがあります。

 これらは高い誘電率を持つ不導体であり,電流は流れません。つまり変形はあくまで電圧がかかることで起きる現象です。(詳しい理由は難しいので割愛します)

 これらにフィルムを取り付け,音声信号を加えると,その信号に応じて結晶が変形します。この変形がフィルムを振動させて,音が発生します。

 先程書いたように,圧電効果は結晶を変形させると電圧が発生するので,セラミックイヤホンにむかってしゃべると,音に応じた電圧が発生します。つまりマイクロフォンになるのです。

 先程書いたように,結晶そのものは不導体ですので,電流は流れません。電力が電圧と電流の積なら,セラミックイヤホンは,ほどんど電力を消費しないことになります。

 ただ,圧電効果の高いセラミックは誘電率が高く,容量の大きなコンデンサになる傾向があります。コンデンサは電気をためる性質があるので,音声信号として電圧が加われば,コンデンサを充電するのにいくらかの電流は流れます。しかしたまっているだけで消費されるのではありませんから,消費電力はほとんどゼロといってよいのです。

 こうして,非常に小さい電力しか消費しない発音体という利点を生かし,例えば腕時計のアラームに使われる圧電ブザーや,電源を持たないゲルマラジオに不可欠なイヤホンとして,使われています。

 しかし,物質の変形を利用する以上,大きな変形を作る事は難しいですから,大音量を作る事も,広い周波数を再生する高音質な音を出すことも苦手です。また,大きな音を出すためには高い電圧をかけねばならず,これが欠点といえるでしょう。

 さて,電子ブロックです。

 電子ブロックは,基本的な電子回路の実験が出来るものですが,ダイナミック型やマグネチック型といった,電力を必要とするイヤホンが駆動出来るような増幅回路を構成するだけの部品が用意されていません。

 そもそも,そうした複雑な増幅器を組み立てるのは,電子ブロックの主旨から外れます。電子ブロックは,簡単な電子回路を実際に組み立てて,その動作を原理を学ぶためのものです。

 電子ブロックに用意されている小信号用トランジスタが1つ2つで可能な増幅回路は,せいぜい電圧増幅回路です。電流を供給する回路を作るのは難しく,自ずとイヤホンは電圧だけで駆動できるもの,つまりセラミックイヤホンを使う事になります。

 また,前述の通りセラミックイヤホンは,セラミックマイクにもなります。カラオケのマイクや携帯電話のマイクに使われるエレクトレットコンデンサマイクや,ダイナミック型のマイクと違い,出力電圧が大きく,マイク用に特別なアンプもひつようなく,電子ブロックの実験にはもってこいです。

 こうしたことから,電子ブロックにはセラミックイヤホンが使われています。

 それでは,100円ショップなどで手軽に入手できるダイナミック型やマグネチック型のイヤホンを,電子ブロックでならすにはどうすればよいでしょうか。

 先程書いたように,電子ブロックの部品では電力増幅器を作る事は出来ません。だから素直に考えると「方法はない」が正解です。

 しかし,実は電子ブロックには,電力増幅器がこっそり用意されているのです。

 本体の右上にスピーカがついていますが,これはICアンプと呼ばれるモジュールです。このスピーカはダイナミック型ですので,電力増幅器がなければ駆動できません。

 当然,電子ブロックの部品ではとても駆動できるものではないので,このユニットの中に,LM386という定番のパワーアンプICを使った電力増幅器を内蔵し,音声信号を入れればスピーカから音が出るようにしてあります。

 この,スピーカの代わりにダイナミック型やマグネチック型のイヤホンを接続すれば,十分駆動することができます。そのためには分解が必要になりますし,復刻版の場合はオリジナルと違ってICアンプの部分だけ本体から外れるようにはなっていませんので,こんな実験を行ったら,まず間違いなく壊してしまうでしょう。

 というわけで,ちょっと詳しくセラミックイヤホンの話を書いてみました。

 ほとんど目にすることはなくなったとはいえ,このイヤホンの代わりになるものは存在しません。今でもゲルマラジオを作るにはこれが不可欠です。もっとも,ゲルマラジオが実用品であるわけではなく,我々に身近なイヤホンでないことは間違いないでしょう。

 ですが,こういう種類のイヤホンが世の中にはあって,電気をほとんど消費しないのだという事を知っておくと,知識の幅は広がることと思います。

 貴重なセラミックイヤホンですので,安易に分解してみろとは言いませんが,もし分解すると機械的に動く部分はほとんどなく,コイルも磁石も見当たりません。これで本当に音が出るのかと不思議な気分になることと思います。もし機会があったら,見てみて下さい。

GPS時計についての考え方

  • 2010/12/03 16:47
  • カテゴリー:make:

 ちょうど1年前に作ったGPS時計は,私にしてはソースの公開をしたこともあり,「作ってみたよ」と言う反響を頂く事があります。

 先日メールを頂戴した方は,どうしたら正確なGPS時計を作る事が出来るのか,という問題について悩んでらっしゃるとありました。

 貴重な情報なのでご紹介したいのですが,世の中にGPSモジュールを使って時計を作っている方はいても,1PPSのパルスを使って正確な時計を作っている方は,この方が知る限りいらっしゃらないのだそうです。つまり,GPSモジュールから出てくるメッセージの時刻情報を,そのまま表示しているだけということでしょう。

 この方法では,特にGT-720Fというモジュールを使った場合には,私が昨年悩んだのと同じように,大きな表示誤差を含んでしまいます。最悪で1秒の誤差(というよりここまでずれれば表示ミス)になるため,もはや時計と呼んではいけないレベルです。

 原因は,GT-720Fの時刻情報が,1/10秒以下を.999としてくる場合があることでした。例えば34秒という時刻を,33.999と1/1000秒前の時刻で送ってくることがあり,これを小数点以下省略で表示すると,1秒ずれてしまうわけですね。もっとも,次の更新で正しい時刻表示がなされますが,更新周期が1秒だったりすると,まるまる1秒ずれたままになります。

 34.500とか34.600だと0.5秒,0.6秒ずれるように考えがちですが,この.500や.600は書略されてしまうので,どちらも34秒と表示されます。よって,表示時刻と現実の時刻との間には,ズレはないことになります。

 ということは,現実の時刻が34秒の時に,33秒と表示されることがないようにすれば,表示誤差は更新周期以内に抑えられます。この考え方から,私は33.999は34と見なす,と言う仕組みを入れ込んだのです。

 実際,GT-720Fは33.999だけではなく,33.950という時刻も送ってくることがありますので,1/100秒を四捨五入することで,この問題を回避しています。

 これも,時刻情報の更新周期が1秒だったりすると成り立ちません。GT-720Fはツールを使って更新周期を0.1秒に出来ますから,1秒に10回時刻情報が出てきます。

 これだと,小数点から上の桁が,1/10秒以上ずれることは基本的には発生しません。例外は先程から書いているように,.999に近いところで起こる表示の誤差です。

 33.900なら,次の更新で34.000になりますから,小数点以下を表示しない方法でも誤差は1/10秒以下です。しかし,33.999なら,次に更新されるのは34.100付近ですので,33.900付近の前回の更新から34.100付近の更新まで,下手をすると0.2秒ほどの誤差を作ってしまいます。

 これを,0.950以上は1.000とするという処理で,1/10秒という最小分解能以下の誤差になるようしたのが,今回のミソだというわけです。

 結果として,出来上がったGPS時計が,GPS衛星が原子時計を搭載して,しかも相対性理論まで使って正確な時刻をもっていながら,それらをふいにしてしまうほど大きな1/10秒の誤差を含むという時計に仕上がってしまったわけです。これでいいのか?という疑問は,当然のことです。

 ・・・私自身のおさらいはこのくらいにして,この頂いたご意見を読んで思った事を書くことにします。直接のお返事としてもよかったのですが,このGPS時計について私がどんな考えでいるのかを,公開してもよいと考えました。


 現在,個人レベルで現実的に手に入れられる時計で正確なものは,電源同期式の時計か,電波時計だろうと私個人は思っています。

 ご存じのように前者にはAC専用,後者には電波を受信出来る環境であることという制約があり,これは実生活で無視できるほど軽い制約ではありません。GPS時計にはその欠点を補う事を目指して作ってみたので,精度として「ばれない程度」ならそれで目的達成としました。

 といいますのも,1/100や1/1000秒の精度は,どうせ表示に至るまでの間で狂ってしまいますから,追い込むことにそれほど意味がありません。

 ただし,過去に書いたように,1秒近くずれることは論外としても,電波時計と並べて目視でずれているのが分かるくらいの差があると,時計としてもはや成り立っていません。

 これを根本解決するには,1PPSのパルスが出てくるモジュールを使い,しかもこのパルスの少し前に,パルスが出るときの時刻(つまり未来の時刻)を吐き出してくれていることが必要です。

 GT-720Fにはあいにくこんな機能はなく,どうしたって「過去」の時刻しか届きません。手前味噌ですが,1PPSを利用出来ないモジュールを使ったGPS時計として,私の作ったGPS時計はよく検討されて,上手く動いているGPS時計ではないかと思っています。

 GPS時計のメリットは,誤差の蓄積がないことです。水晶発振子を使った電波時計は,校正直後の精度は高くとも,その後は水晶発振子の精度で誤差が蓄積するため,校正後の経過時間が大きくなれば,絶対時刻との間にズレがどんどん大きくなってしまうわけです。

 電源同期式の場合は,発電所や変電所で作られた高精度な50Hzもしくは60Hzを分周して1秒を作るので誤差蓄積はありませんが,あくまで24時間での管理ですので,ある瞬間では大きな誤差を含んでいる可能性があります。

 GPS時計というのは,GPS衛星からの時刻情報ですので,基本的にどの瞬間も同じ精度の時刻情報を得ることが出来ます。これがGPS時計の最大のメリットではないかと,私は思っています。

 ですので,GPS時計を作るということは,この「いつでも同じ程度に正確」という点を生かしたものであるべきだと思いますし,それゆえ精度を衛星に搭載された原子時計レベルにすることまでは必要ないと考えています。

 そうなるとおのずと設計の仕方が見えてきて,表示が実際の時刻とどれくらい狂っているかを,きちんと実用上問題のない程度であるかどうかを含めて把握して,それ以上のズレにならないことを保証することに力点を置くことになります。

 この力点に向かって進めて,結局私は1/10秒の精度を常に保証する時計を作りました。これが自作の醍醐味です。本当に正確なGPS時計が欲しければ,市販のGPSロガーを数千円で買うのが一番なのですから。

 さらにその醍醐味は,より高精度なものを作ろうと思案することにもあるでしょう。しかし残念ながら,1PPSが取り出せないGT-720Fでは,もう無理だと当時は考えました。だって,衛星の時計と同期したパルスが出てこないんだから,どうしようもないじゃないですか。

 ・・・ん,まてよ,もう1つGT-720Fを使ったらどうだろう,いや1つと言わず,10個くらい同時に動かして,時刻の情報の多数決や平均など,統計的手法でデータの処理を行うと誤差が薄まらないか。うーん,やってみる価値はありそうだなあ。でもいくらかかるんだろ。

 こんな風に,いろいろなアイデアを出しては実験できることが,自作のおもしろさ,なんですね。

雨のアキバと秋月で買った容量計の話

  • 2010/11/08 14:19
  • カテゴリー:make:

 少し前のこととなりますが,10月半ばの3連休の初日のことです。当日の東京地方は雨だったのですが,先頃定年された会社の方と一緒に,アキバ巡りをしようという話を実行に移すべく,私は待ち合わせの時刻に秋葉原にいました。

 彼の用事は主にPCパーツで,特に電源ユニットにいいものが欲しいということと,手に入れられたばかりのNEX-5向けに,32GBのSDカードを買いたいということだったのですが,私は元来PCパーツはからっきしで,アキバへはもっぱら電子パーツを買うために訪れます。

 前回行ったのは半年ほど前ですから,ちょうど今年の酷暑のアキバを知らないのは幸いだったと言えるのでしょうが,今のアキバは再開発のまっただ中で,ビルがなくなり向こう側が見えたり,背の高いビルが視線をふさいだりと,景観がコロコロ変わるので,毎度毎度驚きがあります。

 まだ残暑の残る10月ではありましたが雨のおかげで涼しく,また人が少なかったこともあって随分助かりました。みんな「面白いものを買おう」とがっついた視線がビリビリしている,この街には独特の雰囲気があります。

 今回私は,特に急ぎで買うものもなかったのですが,秋月電子では欲しいものが溜まっていたので,彼には事前に秋月で買い物をしたいという事は伝えてありました。

 電源ユニットは案外高価であることがわかったのですが,足で稼ぐのが秋葉原,さすがに歩き回ると予算ぴったりでとてもよいものが見つかったようでした。ただ,雨という事で後日買うということになりました。

 SDカードは価格を見て回ったところ,やっぱり今の旬は8GBから16GBというところです。私の目安は,半分の容量のSDカードを2枚買ったときの値段と比較して,1割程度安いとそれを旬と認定,といった感じなのですが,まだ16GBは8GBの2倍ちょうどくらいという線でした。しかし8GBと16GBではちょっと用途が違ってくる(16GBなら動画も躊躇なく扱える)ので,目的によってどちらが旬かは違ってくると感じました。

 いずれにせよ32GBはまだまだ高価で,16GBを2枚買った方が全然安いわけですから,どうしても32GBでなければならない人向けに売られている商品を,とりあえず大きなものが欲しいなという理由ではちょっともったいないと思いました。よってこちらも買わない事に。

 ちょっとした細々としたものは別にして,ほとんど手ぶらの二人は最後の店である秋月電子に向かいますが,電子パーツでアドレナリンが出るのは私だけで,彼は秋月の外でタバコを吸っておられました。

 この段階で二人はすでに3時間歩き回っていて,天気の悪さもあってすっかり疲れていたのですが,私は秋月に,彼はタバコで復活を遂げたということですね。

 秋月では,電池や白色のLED,ATtiny2313を1レールという感じで,部材の在庫を確保したのですが,前日に秋月のホームページで見つけた,コンデンサ容量計のキットを楽しみにしていました。

 この容量計,中国のキットらしいのですが,ATmega48を使ったもので,誤差1%(2%という記述も・・・どっちや),1pFから500uFを測定可能,オートレンジとゼロアジャスト機能を装備,無調整で組み立てたら即利用可能で,お値段は950円と安いものです。

 基板と部品がセットになっているし,当然ファームは書き込み済みですので,気楽に作る事の出来るキットと言えるでしょう。少し前にStrawberryLinuxのLCメーターを組み立てましたが,あれより全然安く,測定範囲も広くて,誤差が1%ということですので,ちょっと期待して,購入翌日の日曜日に組み立ててみました。

 まず,A4の紙に英文で組み立て方,回路図,部品表が印刷されています。組み立て方には大したことは書いていませんが,回路図と部品表を照らし合わせると,どうも抵抗がいくつか入っていないようです。

 どの抵抗がいらないのかはわかりにくく,確かに部品表に記載がない部品は取り付けられませんが,一言「部品表にない部品は取り付けないでください」と書いてあると安心なんだけどなと思います。

 また,中国の抵抗って,カラーコードが読みにくくて困りました。1%品は5本のコードが書かれていますが,日本のように左右をはっきりさせるための,誤差を示す帯を細くするということが徹底されておらず,カラーコードを読み続けて30年のこの私が,読み違いをして取り付けてしまうという,自尊心の砕けるようなミスを起こしてしまい,落ち込みました。

 さらに,1%である必要のない抵抗が1%だったりして,回路図をみて首をかしげたり,もっと深刻だったのは10kΩが1本足らず,39kΩが1本多かったことです。入れ間違えたんですね,きっと。

 回路図を見ると単純なプルアップでしたので,炭素皮膜の5%の10kΩをパーツケースから取り出して完成です。秋月に言えばもらえた抵抗だとは思いますが,電話代で抵抗が買えますので,今回はまあいいや。

 電源をいれて,ストレー容量をキャンセルするゼロアジャストボタンを押します。値は比較的安定して,0pFを表示しています。

 ここで,先日日本橋で買った1000pF,1%を測定してみます。

 すると,値がバラバラ動きます。最低値は976pF,最大値は997pFで,1秒に3回ほど値が変わります。これは結構困ったものです。1000pFくらいの容量なら,ちゃんとゼロアジャストしてあればストレー容量の影響は5pF以下と考えたいので,最大値と考えるとまあこんなものかと考えられそうです。

 しかし,値が変動するのはおかしいです。

 今度は0.1uFの1%を測定してみます。結果は97.5nFと言う感じで,やはりやや小さめに出てくるようです。さすがにこのくらいの容量だと,ストレー容量が5pFあっても影響は小さいはずで,1%のコンデンサなのですからここはやはり100nFと,ばちっと値を出して欲しいところです。

 部品の付け間違いなどを調べて見ましたが,あいにくそういう間違いはありません。近い値が出ていることを考えると,精度はともかく動作はしていると考えて良いでしょう。

 真面目にこの容量計を考えてみます。

 まず,詳細が全然書かれていないので推測となりますが,実はELMさんのホームページに昔から掲載されている「デジタル容量計」の回路を見比べて見ると,非常によく似ています。特に3.3MΩと3.3kΩという特徴的な値も含め,そっくりな回路です。(私自身,この容量計の評判を耳にして,そのまま作ってみようと部品を揃えていましたが,時間がなくて取りかかれないままなのです)

 仮に,ELMさんの容量計のコピーであるとして,その原理を考えてみます。ELMさんのホームページから,回路図,動作説明,そしてソースリストを手に入れます。

 そして,今回のキットの回路図を眺めて下さい。(キットの回路図の入手はjyetechでgoogle先生に尋ねてみて下さい)

 原理的には,被測定コンデンサに充電をし,少しずつ上昇する電圧をAVRのコンパレータでキャプチャして,電源電圧の0.17倍の電圧に達した時刻と電源電圧の0.5倍の電圧に達した時刻から,その時間差を求めます。

 充電に使った抵抗の誤差が1%なら,この時間差によって一意に決まる被測定コンデンサの容量も,また1%の誤差となるわけです。2つの電圧の差から時間を求めていますので,電圧の絶対精度は結果に影響せず,測定中の電圧変動が誤差に直結します。

 この回路では,充電に使う抵抗を3.3kΩと3.3MΩと切り替えています。これは測定レンジの切り替えのためで,ELMさんの回路の場合約60nFを境に3.3MΩをLow,3.3kΩをHighとしているとのことです。

 さて,その0.17倍と0.5倍の切り替えですが,まずは被測定コンデンサを放電させねばなりません。これはAVRのPD6がLowになると,被測定コンデンサの両端がR9の120Ωでショートされます。

 続いて,コンパレータに0.17Vccの電圧を与え,この電圧になったらタイマをトリガするように設定しますが,これはAVRのPB5を出力方向にし,Highにすると,R13の10kΩとR15の39kΩの合成抵抗である7.959kΩと,R16の39kΩによって作られます。

 被測定コンデンサの電圧が上昇し,0.17Vccを越えると,AVRのPB5の方向を入力に切り替え,Hi-Zにします。こうするとコンパレータの電圧はR15とR16による分圧で作られる0.5Vccとなります。

 こうして,0.17Vccになった時刻と0.5Vccになった時刻の2つから,かかった時間を求めて,容量に換算して表示するという仕組みです。

 この方式で問題となる誤差は,まず被測定コンデンサに充電電流を流す抵抗です。ここはキットでも1%品を使っています。

 次に,コンパレータの電圧を作る分圧抵抗で,これもすべて1%品です。0.5Vccを作る39kΩは0.17Vccでも使いますから誤差は相殺されるとしても,R13の10kΩについては1%がまるまる効いてきそうですね。この段階で2%の誤差が蓄積されました。

 そうそう,クロックの精度も一応みておきましょう。タイマのカウントを使って時間の測定を行っているのですから,クロックの誤差がそのまま測定値に影響を与えます。このキットでは12MHzのクロックですので,おそらくタイマの最小カウントは83nsという時間です。しかし,いくらラフな設計であっても,水晶発振子を使う限り,多くても100ppm,普通は50ppmまでですので,これはほとんど気にしなくてもよいでしょう。

 そう考えていくと,影響として支配的なのは,R13の10kΩと,R11の3.3kΩもしくはR12の3.3MΩですね。

 これくらいなら無調整でもなんとかいけそうな気がしますが,ELMさんの容量計では,校正機能がついていて,校正用のコンデンサを使ってデジタル的にゲインを補正することができます。この結果,1%精度での測定が可能になるのですが,今回のこのキットではこうした機能は,少なくとも説明書には見当たりません。

 ということで,このキットでは校正が出来ず,また安定性も今ひとつという事もあり,ちょっと真面目に検討をしなければならなくなりそうです。ちなみに,この100pF1%のコンデンサを,1年ほど前に買った秋月のテスタで測定すると,ばっちり1nFと表示されました。あんなに長いテスタリードを経て測定しているのに,なんでぴったりの値が出てくるのか不思議な気もしますが,うまくキャンセルする仕組みがあるのかも知れません。

 回路図やスペックを見ると,ELMさんのコピーであることはほぼ間違いないと思います。ELMさんのオリジナルでは,AT90S2313を使っていますが,7segLEDを駆動するのにピンが足りなくなり,外に別のロジックICを追加するという方法を取っています。

 このキットではそれを嫌って,ピン数の多いAVRを使い,ICの数を減らすという工夫を行っています。

 原理的に素性はいいはずで,ちゃんと作れば精度はそれなりにでると思うのですが,やはり金属ケースに入れるなどの工夫は必要かも知れません。

 本当は真面目に検討したいのですが,いいアイデアが浮かばず,1ヶ月近くが経過してしまいました。校正をするのにクロックを可変するとか,1%の抵抗を可変にするとか,いろいろ考えてみたのですがいずれも一長一短があって,実行に移していません。いい方法はないものでしょうか。

ユーティリティ

2026年04月

- - - 1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 - -

検索

エントリー検索フォーム
キーワード

ユーザー

新着画像

過去ログ

Feed