« 2012年7月 | トップページ | 2012年9月 »

2012年8月の3件の記事

2012年8月30日 (木)

アナログ工作にはまる:焦電型赤外線センサーユニットの制作

 電波時計のデコードを考えているうち、工作が思わぬ方向に曲がってしまった。いつもの脱線である。まあ、今、何か作りたい大きなテーマがあるわけではない。こういう気ままな寄り道は所長の好むところでもある。

 FPGAのDE0とか、雑誌付録の何台かの手付かずの32ビットプロセッサー、FreeRTOSを使ったLPC2388のネット制御など懸案は山積しているが、これというアプリケーションが見当たらないので腰が重い(これを現実逃避とも言うが)。つい手元の電子部品で遊んでしまう。

電波時計ユニットにフォトカプラー接続(8/19/2012)

 このところの電子工作と言えば、Aitendoの電波時計ユニットである。あとから買った40,60kHz両バンドモジュールが思いのほか感度が良くて実用化してみようという気になってきた。窓際にアンテナを出して電波を安定的に受け、本体を工作コーナーに置いて、工作室の標準時計としても良い。

 そうなると次のステップは、JJYパルスのデコードである。1秒に一回(1bps)という気の長いデータなので、マイコンにはどんなロジックでも組み込める。ただ、単純に1秒ごとのパルスの長さを測っているだけでは、ノイズに弱いデコードになってしまうだろう。

 それに、ひとつパルスを取り損なったら、今までのデータをすべて破棄して、次の59秒のマーカーまで休むのでは効率が悪い。ひとつのエラーでデータを最初から取り直すような厳格なプログラムでは正確な時刻を取得するのに何十分もかかる可能性がある。何かインテリジェントな方法がないだろうか。

S_p8195132 こうしたノイズに強いデコードロジックの開発のために、まずは現在の受信状態をオシロか何かでしっかり把握しておく必要がある。しかし、電波時計ユニットは何故かオシロやロジアナをつなぐと、PCデスクの前でも出来ていた受信が不能になってしまう。

 デジタルノイズがプローブを通して入るからだろう。このままではLEDの点滅を見ているだけで先に進まない。JJYのシミュレーターもあるが、これは今度は完全すぎて本当のテストにならない。どうしたものか。

 そのうちアイデアが閃いた。フォトカプラーである。フォトカプラーで絶縁すれば、デジタルノイズが防げるかもしれない。フォトカプラーは最近いくつかの工作に応用して経験値が上がっている。思い立ったら動きは早い。早速、フォトカプラーをブレッドボードに差して実験を開始した。

 うまく行った。PCデスクの前でも順調にJJYの1秒パルスを受信できるようになり、オシロからやっとそれらしい波形を観測できるようになった。ただ、結構ノイズが多い。アンテナの角度が微妙だ。

S_p8195133

 当面の観察の結果だが、ノイズは立ち上がりか立下りの時に多く発生し、パルスの中間では少ない。チャタリング防止のような考え方でかなりのノイズは防げそうである。一方、パルスの中間のノイズは防ぎようがないが、これも100ms以内で元へ戻るようなら、なかったものとするロジック(チャタリングと同じ)で除去できるかもしれない。

 つまり、立ち上がりの割り込みでチャタリング防止のように立ち上がりを検知してから10ms程度の待ちを入れると、かなりノイズは防ぐことが出来そうである。しかも立ち上がりパルスは厳密には正時0秒なので、こちらにある程度の精度のクロックがあればノイズは無視できる。

 中間のノイズは、一旦デコードして、かけはなれたパルス長(200、500、800msの3種で許容値が決まっている)になるなら、その立下りを無視する。判定できなければ(殆どがデータパルスだろう)データフレームを持っているので、そのブロックだけのデータを無効にして次の1分でとりなおす。日や時間などは、急には変わらないので全部取り直す必要はない。あれこれ本格的にロジックを考え始めた。

 そのうち、掲示板でChaNさんのサイトにも電波時計の制作記事があることを知った。何と10年以上も前の2001年の記事である。Tiny2313の前身のチップAT90S2313時代の作品だ。ソースコードもついている。

 ダウンロードしてみた。プログラムはアセンブラーだ。回路図もある。何々、クロックが4.194304MHzという半端な周波数を使っている。これはどういうわけだ。ソースコードを読むうち、彼のデコードアルゴリズムを知って目から鱗が落ちた。

 連続してデータを見るのではなく、サンプリングで値をとり、サンプリングの間隔を、2のべき乗で(2の22乗)の周波数で分割してずれないようにしている。そうか、こういう方法ならチャタリング防止などは考える必要がない。マーカーが決まればかなり正確にデータがとれる。

 人のソースは見ないと頑張っていたが、やっぱり独断でことを進めるのは効率が良くない。先人の智恵をもっと調べることも重要だ。大きなヒントを貰った。このスタイルを真似て作ってみよう。半端な周波数の石は手に入らないが、分周とカウンターの上限を工夫すれば、きっちりした時間を作ることは可能だ。

アナログづいて今度は焦電センサーアンプ組立て(8/20/2012)

フォトカプラーを電波時計ユニットに入れてデータ波形の取得に成功した。アナログが楽しい。ただ、ChaNさんのコードを見て、開発の道筋が見えてくると安心して逆にやる気を失うという、いつもの悪い癖がでて、次のステップが進まなくなった。

 そのうち、ウェブで8ピンAVRのTiny13の制作例を探しているうち、Napionというディバイスを見つけて気分が変わった。Tiny13は電波時計ではなく、この間の小型モーターの制御(ワンショットパルスの生成、前記事参照)に使おうと考えているCPUチップである。

Napion

 それはともかく、Napionとは、Panasonicが出した焦電型赤外線センサーとアンプを組み込んだ人感センサーチップである。これだけで人や動物の接近をTTLパルスで出力する。へー、こんな便利なセンサーがあるんだと調べてみたら、単品でも売っている。ただ、少し高い。千石で¥1100だ。

 そういえば、当研究所には昔、秋月で用もないのに焦電センサー(RE210 ¥100)と集光(フレネル)レンズ(¥300)を買ってあったことを思い出した。 センサー出力をオペアンプで増幅してやらないとデジタル処理が出来ないことがわかり、そのままになっている。 何故かこれを急に作りたくなった。恐らくNapionを欲しいなと一瞬思い、それが¥1000以上するとわかった反動だろう(もっと安くで手に入るのになぜ作らない)。

S_p8195130

 人感センサーなら応用はいたるところにある。作っておいて無駄になることはあるまい。当研究所のテーマは予測のつかないきっかけで決まるというのは恒例のことである。今回も何の脈絡もないオペアンプの増幅回路を汎用基板に作り始めた。 電波時計?え、それがどうしたのという変わり身の早さである。

焦電センサーはあっけなく動く(8/21/2012)
 焦電センサーのアナログアンプ回路のお手本は、ウェブ上に沢山ころがっている。データシートに掲載された参照回路は増幅率が1万倍、秋月の焦電センサーキットの回路では、1600倍である。中をとって2000倍のアンプを組む(45×45)。オペアンプは定番のLM358。レールツーレールのLM662までは必要ないだろう。

 アンプのあとのダイオードを使ったコンパレーターやNE555のパルス生成の部分は、それこそTiny13の出番である。とりあえずはNapionと同じようにTTLの出力が出るところまで、ブレッドボードではなく汎用基板を切り出して直接作ることにする。

 久しぶりの細かいハンダ付けが楽しい。オペアンプの周りにCRが密接に配置され彩りも綺麗だ。半日で完成した。配線を何度も確かめる。アンプがどんな出力を出してくるか楽しみである。

S_p8215139 出力をオシロにつなぎ、通電する。暫く動かない。ふーむ、誤配線か、と考え始めたころ(約10秒後)、突然、出力は1(負論理なので入力なし)に上がり、さらにその30秒後波形があらわれた。このセンサーは通常の動きをするまでに40秒近くかかるようだ。おーし、手をかざすと波形が変化する。

 赤外線を感知してパルスを出しているのは間違いないが、この素子が動くまでこんなに長時間かかるとはどこにも書いていない。しかも詳しい波形の様子を見せてくれるところも少ない。

 微分波形が出ているようだ。人間の手など赤外線を出す物体が動いてきて赤外線を検知するとまず大きな立下りパルスが出て、出力はほぼ0V(入力あり)になる。手をそのままにしていても、このあと1秒もしないうちにパルスは元へもどる。そこで手を動かしてセンサーから離れると、再びここで立下りパルスが出る。

S_p8215137 面白い。フレネルレンズをつけてみた。この効果はすごい。感知するエリアが劇的に狭くしかも高感度になる。3メーター以上離れていても感知する(説明書によると10mまで検知するそうだ)。

初めてのTiny13のプログラミング(8/24/2012)
 8ピンAVR、Tiny13の登場である。去年の暮、Dragonを入手して、AVRのパラレルプログラミングがいつでも可能になり、秋月で面白がって3ヶ程買ってあった。当研究所最小のAVRである(Tiny10は小さすぎて使い道が思いつかない。それに処理環境がない)。

 小型モーターのon/off制御に使おうと思っていたが、意外なところで登板の機会が巡ってきた。まずはブレッドボードに組み込む。8ピンなので準備もあっけない。リセットピンを使わなければシリアルプログラミングが出来るようなのでISPをつけて早速テストする。よし、問題なくAVRSPはTiny13を認識した。ヒューズビットを換えてクロックを4.8MHzにする。

 ソフトの開発である。Cでどれだけ入るか、もし入らなければアセンブラーに行こうと考えている。今度のアプリではUARTはそれほど必要ではないが、今後のこともあるので、とりあえずISP-UARTを入れてみた。UARTだけで600バイト消費した。残りの400バイトでロジックを組まなければならない。

まず、UARTだけで動くかテストする。駄目だ。字化けしている。クロックがCR発振の4.8Mhzという半端なクロックなので、ボーレートの算出が難しい。なかなか文字化けが解消しない。当所の標準ボーレート38.4kbpsではどうしても合わず、9600bpsへ落とす。やっと落ち着いた(クロックがCRだと38.4kbpsは無理だとあとで気が付いた)。

 パルス検出のルーチンを次に組み込む。ChaNさんの電波時計デコードルーチンのソースにならって、焦電センサーもタイマーのサンプリング方式でロジックを組む。ベタにパルスの立ち上がりを待つのでなく、一定の時間間隔(13.3ms)でパルスの状態を見てやれば、ついでにチャタリングなどのノイズを除去できる。

 ロジックは、仕事の行き帰りなどの空き時間を使って、既に構想は出来ていた。フラグを2つ使って、サンプリングの3つの状態を時系列で調べる。100(0がパルス検出)のとき始めてパルスがあったと判定するロジックだ。101や、00、01、11のときは何もしない。

I/Oポートの調整でトラブル解消(8/25/2012)
 パルス検出ルーチンは、いつものように擬似コードで何度もロジックを確かめながら、C言語のコードに換えていく。検知してからのタイムアウトは常にタイマーを加算しておいて、パルスを発見できなければループのあと常に0に戻し、パルスが出てスイッチが入った後は、タイマーをリセットしないというロジックだ。これでタイムアウトが検出できるはずである。

 コードは800バイト余り。まだ余裕がある。テストである。大丈夫だとは思うが、こういうのは動かしてみなければ始まらない。プログラムは考えたようには動かない。書いたとおりに動く。最初の通電はいつも緊張するが、今回は8ピンAVRなので、気楽に電源を入れる。

 うむ、UARTからメッセージが出た。動いたようだ。焦電センサーが動作し始めるのをオシロの波形を見ながら待つ。動作し始めた。手をかざす。LEDが点灯した。10秒経って消えた。お、消えたのは一瞬ですぐ点灯した。オシロを見ると入力波形に小さなディップが出来ている。

 これが原因か。コンパレーターを入れていないので、0,1の判断は入力ピン任せだが、Tiny13のピンの0の閾値はこんなに高くない。この程度のディップで0と判断されるのはおかしい。それに入力が隣のLED出力ピンの上下に影響されて動いているような感じだ。ソフトが原因でない証拠に時々初期状態に復帰する時がある。デジタルではこんなことは起きない。

 さて、トラブルシューティングである。焦電センサーからの電力不足ということがあるのか。Tiny13のポートの性質なのか。データシートを本気で見直す前に、念のため、PORTBの初期状態を0から1にしてみた。山勘である。

 これが、うまく行ったのである。ピタリとトラブルは解消した。PORTBを1にするのは、ピンが出力の時はピンの出力を1にし、入力のときはチップ内でプルアップする。しかし入力ピンのプルアップは外部で一度試してその効果がないことを確認している。

とにかく、わけがわからないけれど動いたことには間違いない。半日で焦電センサーのデジタル部が完成した。嬉しい。

ミニブレッドボードに移しもう少しテスト。実用性は十分(8/28/2012)
 PCデスクの横の大きなブレッドボードから、持ち運びの出来るミニブレッドボードにTiny13の部分を移し、焦電センサー部を、工作に使っている部品固定スタンドにつけて集光レンズの性能を確認する。

S_p8285141 すごい。感知するエリアは、2~30センチくらいのビーム状だ。5m以上離れていても赤外線の動きをキャッチして鋭く立ち下がりパルスがでることがわかった。階段の下のコーナーに設置すると、階段の最上部に立っただけで人がいることを検知した。タイムアウトは5秒にして、暫く遊ぶ。十分な性能である。

 次にTiny13にsleep機能を入れた。フラッシュサイズは900バイトまで上がったがまだ大丈夫だ。焦電センサーの消費電流は5Vで1mAちょうどくらい。Tiny13は、sleepを入れる前は2.8mA、全体で3.8mAだったが、sleepを入れると0.8mAに低下し、全体では1.8mAになった。

 タイマーのサンプリング時間を長くすればもっと少なく出来るがACを制御するならあまり気にする必要はない。ただ、AC100VからDC5Vにするのが面倒だ。このあいだ安売りショップで買ったUSB用の5V電源は測ったところノイズが多く5.5Vもあった。気をつけないと機械をこわしそうだ。

Pyrosens

 たいしたプログラムではないが、みなさんの参考までにソースコードと、回路図を公開することにする。今のところ地下室に向けての階段の照明に使おうかと思っている。ただし、既存の階段照明に取り入れるのは、資格を持っていないと出来ない。電気工事士の資格が欲しくなってきた。とりあえずは、電気スタンドを秋月のSSRキットでドライブしてやろう。

以下に例によってAVRStudioのプロジェクトフォルダーをzipファイルにして置きます。
フォルダーの中にBSch3Vの回路図も入っています。

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


| | コメント (13) | トラックバック (1)

2012年8月14日 (火)

デュアルバンドの電波時計ユニットを買ってしまった

 ロンドンオリンピックが終わった。感動と興奮の2週間だった。人はどんなものにでも感動することができる不思議な生物だ。出場選手と自分は、恐らく一生、何の接点も持たない関係なのだろうが、何故か日本選手ひとりひとりに感情移入してしまい、彼らの渾身のプレーに一喜一憂の寝不足の日が続いた。

 サッカーはやっぱり女が強かった。ランキングから言えば銀メダルは順当な結果といえる。それより男子のベスト4など、むしろ予想に反して大活躍した方だと思う。胸を張って帰ってきて欲しい。でも、やはり女子に比べればひ弱さを感じた。飛行機のビジネスクラスとエコノミークラスの待遇の差か。スポーツはハングリーさが原点だ。

 ハレの時は去って明日からはケの日常が帰ってくる。暑さに加えて不規則な寝起きを繰り返したので体調が今ひとつだ。それにしても生きていることの意味を考えさせる2週間だった。

 それはそうと電子工作である。オリンピック観戦でまとまった時間がとれず、相変わらず細かい工作や実験をさみだれ式に続けている。ブログに報告するような面白い話題もない。ただ、このブログは自分の備忘録を兼ねている。あまり日をあけると記録に穴があいていしまう。まとまりはないが、この2週間の出来事をご紹介しておくことにする(8/13/2012)

小型DCモーターとギヤボックスを入手(7/30/2012)
 所長は凝りだすと止まらない性質(たち)である。今度は何の変哲もない3VのDC小型モーターとギヤボックスを買ってきた(¥730 千石3号店)。夏休みの宿題の工作の手伝いをするためではない。別のたくらみがある。

S_p8145118 娘に、例のLANによるプリンター電源コントローラーを贈呈したのはいいが、娘の新居のプリンターにはソフトパワースイッチがついていることが判明した。つまり、このプリンターは、単にコンセントの電気を入れただけではスタートしないのである。

 こうなると、とことん動かすところまでやらないと気がすまないというのが所長の性分である。プリンターに手を入れて、電気的に動くように細工するのは簡単だが、何となく面白くない。 電源が入ったときにソフトパワースイッチを物理的に押し下げる装置をプリンターにつけてやろうと考えた。そのためのモーターである。

 しかけは、マジックテープでプリンターに固定し、大きく減速したモーターのクランクか何かでスイッチを押下する。マジックテープなら、いらなくなればとりはずせる。問題は、ワンショットのロジックとモーターの電源である。

 電源を今のコントローラーからとりだすのは、ちょっと苦しい(ACアダプターを1Aの小型のものにしてしまった)。それと、プリンターの形が苦しい。今はやりの複合機で、スイッチのところが平面でなく曲面である。しっかり止めることが難しい。

 ワンショットのしかけの方は簡単だ。このあいだ買ったまま放置しているTiny13あたりで十分だろう。いや、これくらいなら、アナログのNE555あたりでも十分なはずだ。部品の点数を考えたりする。価格的にはNE555の方が安いが、部品点数なら8ピンAVRの方だろう。

 まあ、まだ、本人たちが急いで欲しがっているわけではないので(プリンタがネットワーク対応にもなっていなかった)、向こうの準備が整うのを待って、少しづつ楽しみながらやっていくことにする。

 それより、次のプロジェクトのテーマが決まらない。Andoroidの応用や、液晶のタッチパネルのインターフェースなど、技術的には面白そうだが、出来上がるのは市販の電子製品と競合するようなアプリケーションばかりである。

 今さら、苦労してスマホやIPadに近いアプリケーションを開発しても、彼らのレベルにアマチュアが到達するのは至難の業で、苦労の甲斐がない。下手をすると自作の方がコストが高くなる。

 ネットにからんだ開発も魅力的だが、今のところ、おおっと感心できる応用が見当たらない。このあいだ面白がって音声合成のアクエストークの石も手に入れたけれど、使える場所が見つからない(データを読み上げるマルチテスターなどちょっと食指が動いたけれど)。

 そんなことで、メモに何度目かの候補リストを書き上げては次の目標を探している。まあ、これが面白いということもあるが。

関数電卓を買い換えた(8/3/2012)
 それこそ、十何年ぶりかで手持ちの関数電卓を買い換えた。電波時計の同調回路の調整で、共振周波数の計算を度々しているうち新しいのが欲しくなった。コイルのインダクタンスが実測と想定で大きく食い違う。調べていくとインダクタンスが周波数によって変わるらしい。単純なLCメーターの計測と周波数の計算だけでは適切なコンデンサーの値が決まらないのである。

S_p8145126

 共振周波数の式は、freq=1/(2π×√(L×C))という簡単な式で、手持ちの関数電卓は、カルク機能というのがあって、変数を入れ直してシミュレーションできるのだが、式を保存できないので、一旦電源を切ると式を最初から入力し直さなければならない。

 ウェブには、LとCの値を入れれば周波数を出してくれるサイトもあるけれど、その度にPCを立ち上げるのも面倒である。ちょうど良い機会なので、前から欲しかったプログラム可能な電卓に買い換えることにした。

 これまで持っていた関数電卓は、カシオのfx-912esで、機能的には全く問題ない(関数の10%も使っていない)。太陽電池で電池交換が不要というのが気に入っているのだが、こうした式を保存したり、プログラムを書いて残しておいたりすることができないのが不満だった。

 この関数電卓の前は、蛍光表示管のついたカシオのfx-101というのを持っていた。電子工作に凝る前に、処分してしまい、残しておかなかったことが悔やまれる。蛍光表示管が可愛らしく、XのY乗根などを計算させると表示管が目まぐるしく動き、必死になって計算している様子が目で確かめられて楽しかった。

 プログラム電卓として今度買ったのは、シャープのEL-5250Fである。グラフィック電卓にも、ちょっとそそられたが、2万円以上するので、迷った結果検討対象からはずした。カシオのfx-5800の方がウェブ上では評判が良いようだが、シャープの電卓の使い勝手を知りたくて、あえて別機種にした。

 アマゾンで、¥4500。3日で届いた。早速、LCの共振周波数の式と、並列合成抵抗値の式を保存する。これは楽だ。式をSAVE/LOAD出来るだけでなく、電源を入れると前の状態を覚えているのでいちいちLOADする必要もない。

 それに式に数値を入れておいて、最後に残った変数を計算で求めてくれるソルバー機能(前の電卓でも出来たが操作性が悪かった)があるのでプログラムを書くまでもない。ただ、プログラミングの機能は、思ったより貧弱で、余り使う機会はなさそうだ。

電波時計ユニットは動いたが、感度が十分ではない(8/4/2012)
 Aitendoの電波時計ユニット(モジュール)である。JJYシミュレーターでは動いたが、本当のJJYの受信は余り芳しくない。同調がまだ完全に出来ていないようだ。コンデンサーの値を調節して感度を上げようとするが、どうもうまく40Khzの共振周波数にならない。

 そら。さんのコメントにあるように、このバーアンテナのインダクタンスは周波数で大きく変わるようだ。試しに、100pFから0.1μFまでのコンデンサーを次々に入れて、フランクリン発振回路で周波数を計測してみた。何のことはない2倍近いインダクタンスの違いが観測された。

 しかも、変化が単調変化ではない。山がある。 あらためて磁性体の勉強をする。インダクタンスは、透磁率に比例するので、周波数によって透磁率が変化すれば当然、インダクタンスも変わるはずだ。

 いくつかのサイトで、フェライトコアの透磁率の周波数特性の図を見つけた。しかし、すべて周波数が高くなると透磁率が下がる図ばかりで、特定のところで透磁率が山になるような図はない。参考資料が少ないのでどうもよくわからない。

 そのうち、電波時計ユニットは、本当の電波の方が受信できなくなってしまった。地下室でも、サンルームに近いところは受信が出来ていたのだが、それも出来ない。原因はわからない。コンデンサーが違ったのかとも思うが、受信できたのがどのコンデンサーの組み合わせだったか思い出せない。

 同じ0.01μFのコンデンサーでも測ってみるとかなり違いがある。JJYシミュレーターでは、同調周波数がかなり狂っても反応する(コンデンサーなしでも動く)ので、調整が出来ない。こんなに窓に近いところでしか受信できなければ実用性が乏しい。

 そうこうするうちに、久しぶりに出た事務所でAitendoのページを開いてみたら、何と、電波時計ユニットの新製品が追加になっている!うーむ、40Khz(東日本用)だけでなく、40,60khz(西日本用)の両方を受信できるユニットもある。

電波時計については、当研究所には、壁掛け、卓上、腕時計のすべてに既に別の電波時計が稼動しているので、今どうしても必要ということでもない。アプリケーションが決まっていないので、ユニットは、今のところトランジスターでLEDを点滅させているだけである。デコードの仕掛けも作っていない(点滅を見ているだけで、ビット列がわかるようになったけど)。この先どうするか。

デュアルバンド電波時計モジュールは感度良好(8/8/2012)
 そら。さんのコメントでは否定的な答をしたけれど、散々迷った挙句、結局、仕事の帰り、足はふたたびAitendoの直営店の方向に向き、デュアルバンドの電波時計ユニットを買ってきてしまった(¥950)。40Khzのシングルバンド用は、ついているフィルムコンデンサーがやけに大きいのでパスする。このコンデンサーの定数は、ウェブの情報通り472つまり4700pF、4.7nFであった。

 ついでに、FM/AM受信モジュール(RDA5830)や、別のフェライトコアアンテナ、ポリバリコンなど、昔懐かしいラジオ部品のいくつかを衝動買いしてしまった。ここには懐かしいトランジスターラジオ用のIFTまである。郷愁をそそられる。

S_p8095115

 帰宅してとるものもとりあえず、デュアルバンドの電波時計ユニットをテストしてみた。これが何と極めて感度良好なのである。地上は勿論、地下の工作コーナーでも、悠々受信する。場所は、例のオカルト的高感度地域だけでなくその近辺でも、しっかりしたパルスが出ている。ただ、PCや、蛍光スタンドの近くでは、ノイズで受信が不正確になる。

 何が違うのだろう。早速、フェライトコイルをはずしてみた。おやあ、インダクタンスは、4mHとシングルバンドのより6倍近くも多い。これが高感度の理由か。外見は見たところ全く変わりがない。大きさも同じだ。

 デュアルバンドの基板からチップコンデンサーもはずして容量を測る。データシートによれば、チップの内部で、2つのコンデンサーを両バンド(40と60Khz)で切り替えている。ところが基板上には、3つのランドがあってチップコンが3つのっている。

S_p8145116 とりはずしてみて3つあるわけがわかった。ひとつは60Khz用で残りの2つのランドは40Khz用、並列にして容量を細かく調整できるようになっている。実測で、2.2nFと、220pFが載って、2.42nFになっていた。インダクタンスは、シングルバンドのよりはるかに多い。LCメーターでは4mH以上ある(4090μH 150kHz)。

 シングルバンドとデュアルバンドの受信性能の違いの理由を実際に確かめてみた。シングルバンドのユニットにデュアルバンドのフェライトコアとコンデンサーを載せ換えて実験してみた。全く同じように快調に受信できた。性能の差はすべてフェライトコアのアンテナの違いでユニットには関係ないことがわかった。

 デュアルバンドについているアンテナは優秀で、さらに詳しく調べたところ、例の高感度地域だけでなく、地下室のほぼ全域で受信が可能であることがわかった(受信が安定するまで時間がかかるので念入りに測定していなかった)。

 Aitendoで試しに買っておいた別のファライトコアのアンテナは2つともJJYは受信が出来なかった。800μHのものは、共振周波数を40Khzになるようコンデンサーを入れたが駄目。160mHという表示のあるバーアンテナは開放でも共振周波数が10Khzにならなかった。

P8145128 他に、ポリバリコンとか、DSPのAM/FMチューナーチップ(RDA5320)とか不要不急の品物まで揃ってしまった。どうも良くない。これでは次のプロジェクトが迷走するばかりだ。RDA5320基板をブレッドボードに差せるように加工してみたりする。手だけは動くが、頭が働かない。

フェライトコアの周波数特性で大きな勘違い(8/12/2012)
 オリンピックが佳境に入ってきて、TVの前に釘付けになってしまい、工作に手が廻らなくなった。仕事も夏休みに入って、外へ出る機会が減り、寝起きが極めて不規則である。しかも、昨日の土曜は、テニス仲間の「暑気ばらい」で公園で日中からビールをあおって(これは美味かった)、そのあとは丸々一日を無為に過ごしてしまった。

 新しいことに挑戦する意欲が不足している。工作ルームに入ってもブレッドボードに作ったフランクリン発振回路で、前のフェライトコアアンテナのインダクタンスをちまちま測定しているだけだ。そのうち、重大な勘違いを発見した。

 このあいだ、100pFから0.1μFまでのコンデンサーと、フェライトコアの共振周波数を測り、フェライトコアの周波数特性を調べた時、周波数が高くなるとインダクタンスが増える(透磁率が高くなる)、おかしいおかしいと言っていたのだが、これはフェライトコア自体が持っている浮遊容量を計算に入れていなかったのが原因だった。

 コンデンサーの容量を少なくして行っても、共振周波数が上がらないのはインダクタンスが高くなるのではなくてコイルや配線が持っている浮遊容量が効いて来るからということに今さらながら気づいた。お馬鹿な話である。

 試しにフェライトコアのコイルを開放にして発振回路に入れると、オシロは586Khzを差した。100pF近い浮遊容量があるようだ。そうだ、この浮遊容量の補正の計算の仕方はどこかで見たことがある。LCメーターの時の計算式と同じだ。

浮遊容量を計算に入れた、本当のそのときのインダクタンスLは、途中の計算は省略するとして、以下の式で表される。

L =( 1/(4×πの2乗×Cの容量))×(1/測定周波数の2乗 -  1/開放時の周波数の2乗)

 浮遊容量の値まで求める必要はない。ただし、開放時の周波数の時のインダクタンスが測定時の周波数と大きく変わらないことが前提で、これが違う(かなり違うが)のであくまでも近似値である(これを考慮に入れると式は膨大な計算量になる)。

S_p8145121

 式そのものは高校の数学レベルだが、桁が多いので計算は関数電卓がないと無理だ。周波数が高くなればなるほど、浮遊容量の影響が出る。プログラム電卓でせっせと計算し、グラフにしてみた。対数目盛りのグラフはウェブにダウンロードサイトがあるのでそれを落とす。

 手書きだけれど、結構、それらしい周波数特性のグラフが得られた。このグラフに合わせて、40Khzに同調させるコンデンサーの数値を計算し(14.4nF)、発振回路で確かめる。よーし、フランクリン回路ででてくる発振周波数は、41.1Khzと近いところに納まった。

 これを元のシングルバンドの電波時計ユニットにセットして動かしてみた。良いぞ、今まで不調だったJJYそのものの受信に再び成功した。これまではやっぱりコンデンサーの選択が間違っていたのだ。

 しかし、最初の状態に戻っただけで、窓際から少し離すと、受信はできなくなる。このフェライトコアの性能が元々低いのだろう。こんど新しく売り出された40Khz用のユニットのコアと並列のコンデンサーの容量は、4.2nFで明らかに、このフェライトコアとは違う。2種類あるようだ。

 Aitendoが日をおかずに新製品を2つも出したのは、性能不足の指摘を恐れて慌ててだしたのではないかとも勘ぐってみる。まあ、60Khz用のものを無理やり40Khzにする方が悪いといえば悪いか。60Khzなら所定の性能だったのかもしれない。

 ともあれ、電波時計ユニットの工作は、この程度にしておこう。アナログの勉強を大分やらせてもらったので、無駄な時間を費ってしまったという気持ちにはならない。電波時計をどう仕上げるかはこれからの課題だ。

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

2012年8月 2日 (木)

電源コントローラ2号機のソース・回路図公開と電波時計ユニット

MACアドレスとIPアドレスを設定できるようにする(7/25/2012)
 娘の結婚祝いにするつもりのLANによるAC電源コントローラーの2号機は、特に大きな問題もなく動いた。ただ、ソフトウエアはまだ前の1号機のままである。1号機ではMACアドレスとIPアドレスがソースコードにハードコーディングされており、これを自由に変更できるように改修しなければならない。

S_p7195091 LANにおけるMACアドレスは本来ソフトウエアで自由に換えるものではなく、ちゃんとした認定機関(IEEE)から、ユニークなアドレスを入手して固定しておくのが筋だ。一号機では昔使っていたPCのNIC基板に保存されていたEEPROMからMACアドレスを取り出し、それを使っている。

 しかし、最近は、MACアドレスについては、こうしたユニーク性はあまり問題にならないようだ。調べてみたらルーターですらMACアドレスを自由に換えられる。Window2000/XPでも自分のLANカードのMACアドレスを勝手に変更できる。保守上の要請らしいが、重複しても、そう大きな問題でなくなったのかもしれない。

 今度のコントローラーは、外に出て行くインターフェースでもなく、商用にするわけでもなく、自宅LANで使うだけなので、特にこだわることはない。ドイツのサイトは、自分のところのWebサイトの頭文字を使ってMACアドレスにしている。

 とはいえ、2号機は別のネットワークで動くことを想定しているので、コンパイルしなおさないとMACアドレスや、IPアドレスを変えることが出来ないのは不便だ。特にIPアドレスの変更は必須である。(なお、会社や学校など自分の管理下にないネットワークで、このコントローラーを勝手に使うことは厳禁である。どんなことが起きても当研究所は責任をとらないので、そのつもりで)

 ソースプログラムを改修し始めた。アドレスの変更は、UARTのコンソールを介して行うことにしている。両方のアドレスとも一旦決めたらめったに変更することはないので、当初つけるつもりだったUSB-TTLアダプターははずし、3ピンのソケットピンで接続した。

 1号機にもUARTはついているが、デバッグ用でたいした機能は入っていない。そこへ、以前作ったXbeeのリモートAPIモニターにある文字入力からバイナリーに変換するコードを追加する。フラッシュサイズは、まだ8KB程度で、全く問題ない。CPUチップは、Mega328を使う必要もない。Mega168でも十分余裕がある。

Lan_ctr_uart UART入力データのサイズを勘違いして、最初、頻々と暴走し、頭を抱えていたが、それを直したら、あっさりデータ入力ができるようになった。このあたりは、printfで過程をすべて把握できるのでデバッグは簡単だ。いざとなったら盛大にデータを吐き出して調べれば良い。時間要素がないので気が楽である。

 MACアドレスは、16進表示、IPアドレスは、10進表示で入力できるようにする。いちおう16進文字以外のキャラクターや、IPアドレスでは255以上の数字はエラーとしてはねるようにする。入力したデータは、EEPROMに入れ、一旦入れたデータは電源を切っても保存されるようにした。

回路図とソースコードを公開する。仕様の解説もしておく(7/29/2012)
 ソースコードが完成したので、お約束の回路図も公開するため、Bsch3で回路図を描き始めた。描いてみると、けっこう複雑なことをしているなと、ちょっと感心する。ACのモニターTTL出力は、CPUのピン(PB1)に入力としてつながっている(実装もした)が、結局、ソースではこれを使っていないことがわかった(つまり、この線はなくても動く)。

Lan_ac_cntlr2_813

 回路図の中で、もうひとつ気になるところは、LANの終端抵抗の47Ωである。ここは、ネットワークのインピーダンス50Ωに揃えるべきで、47Ωでは規格の1%以内を越える。もしかすると反射が起きて、他のネットワーク(同一ハブ内だけだと思うが)に影響が出るかもしれない(回路図では50にしてある)。ただ、50Ωちょうどという抵抗値は、標準系列にはないので注意が必要である(せめてE24系列の51Ω)。

この電源コントローラーの仕様と操作法を、ひとわたり説明して、これから同じものを作られる方の参考にしてもらおうと思う。

仕様と機能:

  • ネットワーク.....          LAN 10Base/T(IEEE802.3)
  • 制御する回路.....       AC100V 15A 1回路 on/off
  • コントローラー電源... AC入力電源から供給される
  • AC通電モニター......   通電のときパネル上の赤LEDが点灯
  • MAC、IPアドレス....   付属UARTより設定
  • 対応プロトコル....      ICMP(pingコマンド可能)、TCP/IP、UDP、HTTP
  • 手動制御     ....        可能(付属タクトスイッチによる)
  • パスワード制御.....     URLにパスワードを含める(但し、プレーンテキスト)

Lan_ac_ctlt

操作法:

・所定のパスワードつきURLにHTMLブラウザーでアクセ スすると 入出力設定画面が表示される。(例http://192.168.0.24/gataro)

・パスワードが違ったり入っていないと、エラーメッセージが出る。

・現在の電源状況はrefresh statusアイコンをクリックするとON/OFF表示が変わる。

・ Switch onまたはSwitch offを押すことで、遠隔地のAC電源を入り切りできる。

・ パネル上面のタクトスイッチを押すことで、手動でも入り切りできる。

・MACアドレス、IPアドレスの入力は、TTL-UARTにより(ビットレート38.4kbps 8 bitノンパリティ、1ストップビット フロー制御なし)、以下のコマンド入力で行う。

>ma↓   (↓はリターンキー)
*****MAC address as follows******
Enter MAC adr in HEX, if change
 11 22 33 44 55 66
(16進文字)    (現在のMACアドレス)
$_        (_はカーソル)

$のところへ設定したいMACアドレスをブランクを空けて入力する

$AA BB CC DD EE FF↓

MAC adr will be...AA BB CC DD EE FF  
Are you sure?(Y or y) -> がでて、Yかyを入力すると
Changed...
Effective after reset
>

ma↓で、$プロンプトに、何も入力せず↓だけキーインすると、表示だけされて>のプロンプトに戻る。

0~9、A(a)~F(f)以外の文字を入れるとエラーとなり最初から入れなおす。
Yやyでない文字、単なるリターンキーでは入力したデータは反映されない。

IPアドレスは、16進ではなく、10進1~3桁の数字をブランクをあけて入れる。

>ip↓   (↓はリターンキー)
*****IP address as follows******
Enter IP adr in DEC, if change
 192.168.000.025
$_

となるので、

$192 168 0 23↓ (000は0で良い。左側の0は不要。ピリオドは入れない)

により、IPアドレスが設定できる。あとは、maのときと同じ。
数字以外、255を超えるアドレスはエラーではじかれる。

 大事なことを書くのを忘れていた。この設定は、動作中には変更されない。必ず一旦電源を切ってリセットしないと有効にならない。また、変更したデータは電源を切っても保存される。

  またパスワードは、ソースコードからしか変更は出来ない(gataro固定)。変更には再コンパイルが必要である(メインルーチンeth_rem_dev.cのステートメント73 行付近の文字列を変更する)。

ここに、例によってAVRStudioのプロジェクトになったソース一式をzipファイルの形で置きます。回路図ファイルも中に入っています。AVRStudioでそのまま開いてコンパイル可能です。

eNastyさんの指摘により回路図に誤りがあることがわかりました。本文とダウンロードファイル群の図形ファイルを修正してあります(8/13/2012 14:00)。それ以前にダウンロードされた方はご注意下さい。

「2012eth_rem_dev.zip」をダウンロード

Aitendoの電波時計のユニットの東日本版への改造失敗(7/11/2012)
 実は、コントローラー2号機の開発をしながら、別の電子工作で遊んでいた。Aitendoの電波時計ユニットである。ある日何気なく開いたAitendoのウェブサイトのトップに電波時計モジュールが出ており、いくつかのサイト(ここやここ)がこれを話題にしているのを見つけた。

Aitendo_wave_watch 電波時計のユニットは、いくら安くても¥1500近くするが、このユニットは¥750という安さである。それに小さくて工作心を刺激する。ムーブメントもついていないし今のところ何に使えるか見当もつかないが、何となく欲しくなると気持ちを抑えることができなくなった。

 7月のはじめ、仕事の帰り、いつもは事務所から秋葉原には徒歩(20分)で行くのだが、直営店までは遠いので珍しく日本橋から末広町まで地下鉄を利用して、店に立ち寄った。このモジュールは西日本用の60Khzにしか対応しないシングルバンド用ということは既に聞いていたので、その足で、秋月に戻り東日本用の40Khzのクリスタルも手に入れた。

 帰ってすぐクリスタルを換装したが、いくつかのサイトの報告どおり、こちらでもやっぱり動かなかった。スペックを良く読むと、40.003Khzの石を用意しろとある。秋月の石は、40Khzちょうどで、こんな半端な周波数の石は特注でもしない限り手に入らない。

 ただ、3Hzの違いで受信できなくなるというのも納得しにくい。元の60Khzだって、スペックによれば60Khz用は、60.003Khzを指定しているのに、ユニットについている石は、60Khzちょっきりの刻印のついた石だ。

 60Khzに戻して、自作のファンクションジェネレーター(秋月キット利用)で60Khzを供給して受信を確認しようとしたが、全く音沙汰がない。受信が出来ているようには見えない。出力パルスにトランジスターを追加してLEDを点けているのだが、点かない。どうも良くわからない。情報が少ないのでこれ以上の追求はあきらめた。

電波時計ユニットのバーアンテナコイルが断線していた!(7/25/2012)
 久しぶりの研修講師の仕事を前にして準備の調べ物をしているときだ。先だってのAitendo電波時計ユニットを40Khz用にする新しい情報が手に入った。バーアンテナの同調周波数が合っていなかったようだ。JJYシミュレーターだが40Khz受信に成功したという。

 成功した人は、何と、このサイトにもよくコメントをよせてくれる、そら。さんだ。何々、フランクリン発振回路でバーアンテナの共振周波数を前もって調整せよとある。仕事先でこの情報を見つけ、帰宅後、すぐ工作ルームにこもり実験を開始した。

 フランクリン発振回路というのは、こういうときの工作の定番と見えて、沢山の回路例がある。インバーター74HC04を使って、ミニブレッドボードにさくっと作る。こういうときのブレッドボードは実に便利だ。

S_p8015105 簡単に出来たので、まず手持ちのインダクタンスやコンデンサーを入れて、オシロで波形を見る。面白い。この回路には上限のコンデンサー容量があると見えて、一定の容量以上のCではうまく発振できないが、色々な部品を入れて、暫くアナログ回路を楽しむ。ブレッドボードでは結構ノイズというか寄生発振が(リンギング)多くて、綺麗な方形波にはならないことを学ぶ。

 いよいよ、問題の電波時計ユニットの同調周波数の測定である。バーアンテナを、チップコンデンサーごと基板から外し、汎用基板の切れ端にアンテナを固定し、それぞれハンダ付けする。これで色々なコンデンサーを試すことが出来る。何しろバーアンテナのリード線は細くて頼りない。下手な取り扱いをして断線させては元も子もない(まあ¥750だけど)。

S_p8015107

 ところが、これが全く発振しない。ふーむ、どうしてだろう。まさかとは思ったが、テスターでコイルの導通を確認する。何と何と、どうやっても無限大だ。始めリード線の接触不良を疑ったが、問題ない。えー、断線?そんなー。細いリード線だが、見たところ、どこにも断線らしいところは見当たらない。

 しかし、断線していることは間違いなさそうだ。2本に撚り合わさっているリード線を少しづつ慎重にはがしていく。2本のリード線はロウ付けされてまとまっている。2本のまま、さらにコイルからロウ付けをはがし、リード線を出していった。そのうち2本が1本づつに分かれた。

S_p7265100

 すると、1本のリード線がコイルの巻き始めの方へ斜めに走ったあと、そこでポロリと線がはずれた。ここだ!断線部分が判明した。巻き始めと巻き終わりの線を2本にまとめるもっと前の部分で見事に切れていた。うはあ、最初から切れていたのだ。

 怒ってみても仕方がない。¥750のジャンク品だ。取り替える足代だけでそれくらいかかる。第一、問題のコイルをハンダ付けで本体からはずしてしまっている。交換は無理だ。切れたところは、巻き線の最初の部分で、断線部分はコイルの付け根のところだ。簡単な修復はできない。

 しかし、こういうときに猛然と何とかしてやろうと熱中するのが所長の特徴である。難しそうであればあるほど血が騒ぐ。例のLED照明付きヘッドルーペを頭につけて、ピンセットで切れたところを探る。 

S_p7265102  下手をすると、もっと根元で切ってさらに修復不能になるので慎重にロウをピンセットでかきとる。よーし、良いぞ。だんだんリード線が顔を出してきた。3ミリほど出たところで掘り出しを中止。

 UEW線なのでハンダごてで被覆をはがし、元の断線したリード線とハンダ付けする。ふむ、上手くいったようだ。少々引っ張ったくらいでははずれない。

 カプトンテープで固定し、指定の定数のコンデンサーをパラって、もういちどフランクリン発振回路でテストした。よし、45Khzを指した。少し高いが、実際にテストしてみよう。

Aitendoの電波時計ユニットが40KhzのJJYを受信した(7/26/2012)
 工作室は地下なので電波の届かないところだ。それに我家の窓ガラスは家内が見かけにつられて導入を強く主張した網入りガラスになっている(ガラスが落ちないので、反って泥棒に割られ易いという)。こいつは生意気に電波の通りが結構悪い。

S_p8015108 我家の電波掛け時計は皮肉なことに、1Fの奥まっている場所では電波が届かず、地下室の窓際に置くと動く(地下室と地上をつなぐオープンスペースが外窓に近いからか)という奇妙な電波環境である。携帯電話などは、地下では部屋の中の極く一部(ほぼ1m四方)だけが通話可能というオカルトのような電界強度分布である。

 ブレッドボードに入れた電波時計ユニットをオープンスペースになっているサンルームに持ち込む。電波時計ユニットのTTL出力は、トランジスタを使ってLEDが付くようになっている。おおお、何か反応したぞ。動いた。40KhzのJJYを受信した。1秒ごとのパルスでLEDが点滅する。良いぞ、良いぞ。JJYからの時刻パルスに間違いない。

 そら。さんのブログにとりあえずお礼のコメントを出し、この改造の端緒となった、「天ノ岩戸」さんサイトにも報告する。このサイトはまだ受信に成功していない(こちらは接触不良だったようだ)。断線はあきらかに買ったときからのもので、もしかしたら同じ原因かもしれない。

JJYシミュレーターでパルスを受信。ロジアナで波形を拾う(7/28/2012)
 そら。さんの助言で、PCのJJYシミュレーターでも動かしてみた。ちゃんとパルスを拾っているようだ。ロジアナを取り出して、極端に遅いサンプリング(1Khz)でパルスをとる。電源を入れた最初はパルスを拾わない。正常に拾うまで少し時間がかかる。今までの電子工作と桁違いに遅い反応なので気長に測定する必要がある。

Jjy 何回かトライして、やっとそれらしいパルス列がとれた。NICTのサイトのデータチャートを参考に、ロジックを考える。そら。さんがデコードのソフトを公開されているようだが、これはなるべく見ないことにする。

 へそ曲がりで、人のソースを敬遠しているわけではない。やせ我慢でもない。こういうチャートを見て、どうやってデコードするかを考えるのが面白いので、人のソースを見て作っても何も面白くないからだ。出題されたパズルを解答から見るようなものである。先を急いでいるわけでもない。

Jjy_2

 チャートをつらつら調べる。あ、あ、これは簡単だ。マーカーパルスという200msの短いパルスに注目すればよい。毎分の正時(0秒)と59秒のマーカーパルスの連続がキーだ。こいつが来るのを最大1分間待てば、そのあとは、そこからチャートどおりデコードしていける。1分間で、そのときの年月日時分が読み取れる理屈だ。データは不連続のように見えたが、BCD(バイナリー10進)だった。 (NICTパルス詳細)

 そのうち、自分がLCメーターを持っていることを思い出した。ストロベリーリナックスのキットでDC-DCコンバーターのインダクタンス測定のため買ったのを忘れていた。迂闊な話である。今さらという感じもするが、バーアンテナや最初のチップコンの値を測定してみた。ところがLCの定数値はみんな想定どおりの数値になっていない(受信は出来ているのに)。

S_p8015104 フランクリン発振回路の周波数も、オシロの計測値は少しづつ理論値からずれている。なぜ、定数値にこだわるかと言えば、正しく同調させて感度を上げておきたいからである。当研究所の入手したユニットのバーアンテナのインダクタンスは、771μHで、60Khz用についていたチップコンは5.1nFだった。

 Aitendo提供のデータシートはどうも信頼がおけない。既にコンデンサーの値からして違う(2.2nFになっている)。バーアンテナのインダクタンスは、そら。さんが計測したものより、こちらの方が半分近く低い。ロットが違うのかもしれない(データシートには色々なバーアンテナの型番が並んでいる)。

 それに元の60KhzでのLCの値から計算される共振周波数は80Khzで60Khzからかなり離れている。フランクリン発振回路で発振させても同じような周波数になる。ただ、フランクリン回路はブレッドボード上にあるせいか変動が激しく、オシロでの計測では安定して一定の周波数にはならない。

 40Khz用につけた0.01μFのコンデンサーは、測ってみたら0.0125μFもあり、これまでのものを足すと、0.0176μF、同調周波数はそれでも43.2Khzくらいでまだ高い(フランクリンでは45khz)。どうもよくわからない。

 それはともかく、この電波時計ユニットが東日本用の40Khzでも動くことだけは確認された。デコードの実装は、何に使うかを決めてからとりかかるほうが無駄がないように思う。 デコードのロジックだけを考えておくことにする(例の擬似コーディングで)。

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

« 2012年7月 | トップページ | 2012年9月 »