« 2012年7月15日 - 2012年7月21日 | トップページ | 2012年8月12日 - 2012年8月18日 »

2012年7月29日 - 2012年8月4日の1件の記事

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月15日 - 2012年7月21日 | トップページ | 2012年8月12日 - 2012年8月18日 »