カテゴリー「電子工作」の49件の記事

2009年11月14日 (土)

Xbee電力ロガーで台所の電力消費を測る

Photo 珍しい学園祭を見る機会があって横須賀まで足を伸ばした。防衛大学校の開校祭である。学生の観閲行進の上空を先輩がパイロットをしているブルーインパルスが飛び、ヘリからパラシュートで空挺隊員が校庭に到着する。午後からは、救急車の待機する評判の棒倒し競技が行われ、学生たちがチームに分かれて豪快な肉弾戦を展開する。日頃、電子工作という趣味にはまって、自己完結型の予定調和の世界にいる者にとっては、想像もつかない強烈な刺激である。理屈ぬきに面白かった。Photo_2

LPCMプレーヤー2台目以降の制作(11/07/09)
 そんなこともあって、電子工作はちょっと一休みである。XbeeロガーもSDカードへのデータ書き込みが無事成功して少し気が抜けた。それでも細かい工作を少しづつやっている。LPCMプレーヤー2号機は予定の3台が無事完成して、それぞれの嫁入り先に旅立って行った。花嫁の父親の気分である。請われて行ったのだから喜ばなければならないのだが、やはり寂しさが残る。まだ受注残が3台ある。プリント基板をまた4台発注して1台は自分に残しておこうか。

 プリント基板の部品の半田付けは2時間で出来る。無機質の部品を集めて命あるものに換える喜びをこれだけでも十分味わえる。この世界の創造主は自分である。何度作っても興奮する。ただ、半田付けは楽で良いのだが、問題は電池基板の制作とバネの固定だ。接点バネが十分に電池接点に当たるよう入念に固定しないと、ケースを強く押さえたりしたとき接触不良を起こす。幸い今度の版は充電機能をつけたので、電池の着脱を殆どしないですむのだが、もう少し弾性の強い接点バネ(燐青銅線)が欲しいところだ。

 次の版のプリント基板を考えようと久しぶりにEAGLEを開いて整理しているうち、この前の公開直前に発生したEAGLEの不具合の原因がわかった。オペアンプが2台出現してどうしても消せなかったのだが、EAGLEの不具合ではなく、自分のオペミスであることがわかった。前のオペアンプを削除したとき、一緒に電源線を消去していなかったのでパッケージとして残っていたのである。EAGLEさんごめんなさい。

 前の電源線を消去し、新たに電源線を定義して、ボードファイルは完全になった。次の版はベタアースに挑戦してみようかと考えている。実は前の版でも、ブログでコメントを貰って少しやりかけたのだが、アナログとデジタルの分離がうまく行かず断念した。まあ、今のままでも特にノイズなどの不具合はなく、線が混み合っているのでベタアースの効果はあまりないかもしれない。

Xbeeは雑音に弱い(11/09/09)
 Xbeeの電力ロガーの方である。ログをとる親機はバラックのままで実装が何も進んでいないが、それでも、少しづつセンサーの子機を外に出して、家庭内の電気機器の測定を始めている。

 色々な場所に置いているうち、子機をワイヤレス電話機の充電機の横に置くと交信不能になることがわかった。ちょっと離せばOKになる。これはどうしたことだ。子機は送信するだけなのに雑音源の近くで交信不能になるのは解せない。APIフレーム受信の親機からのACKを子機が受け取れないのかも知れない。Xbeeは結構ノイズに気を遣う必要がありそうだ。

 TVの待機電力がどの程度か調べようと、シ○○プの液晶TVを測ってみた。動作時は150W程度、待機にしても何と50W以上消費している。時間が経てば下がるのかと10分以上そのままにしたが変わらない。それでは主電源を切ってみた。えー、変わらない。これは大変だ。コンセントから電源コードを抜いたら、「カチッ」というリレーの音とともに、電力は殆ど0になった。このTVはもう4年近く使っている。恐らく故障だと思うが、えらいものを発見してしまった。

 この現象は、SDカード書き込みが出来る前に発見し、とんでもない話だと思っていたが、SDカードに書き込ませた結果、待機モードになってから30分後、電力が0になることが判明した。後処理と冷却に時間をかけているらしい。それにしても人騒がせなTVだ。Ab132433

Xbee子機(センサー)のケース実装と冷蔵庫の測定(11/12/09)
 TVの消費電力を測っていた子機の仮のケースは、LPCMプレーヤー1号機に使ったこれまた秋月で¥100のプラスティックケースである。防滴仕様にするつもりなので、一応スイッチ、コネクタはすべてパネル固定にし、ケースは密閉する必要がある。ただ、Xbeeの電波が心配だ。このあいだケースに入れて電波が出ることを確かめているが、プラスティックといえども減衰はするはずだ。実際に場所を替えて調べてみた。全く変わらない。まあ、この周波数帯では殆ど無視できる量のようだ。

 久しぶりに秋葉原に出て、パネル付けの部品を調達する。CTセンサーのコネクタとコードは、DCアダプターのものを流用する。出力はmVオーダーだが少々ケーブルを延ばしても影響はなかった。ケースは、結局、このあいだのLPCMプレーヤー2号機で傷が付いてとりかえたケースを再利用することにした。既に上部に3つも穴が空いているので防滴にならないが、そのうち2つにスイッチとコネクターを付ける。もうひとつの穴は、LEDにするか、蓋をしてやるつもりだ。Ab132431

 出来上がったので、冷蔵庫の電力測定にとりかかる。四六時中動かしている電気機器の中の最大の大物であることが最初に選んだ理由である。最初、冷蔵庫単独で測ろうと思ったが、コンセントが奥にあって簡単に引き出すことが出来ない。仕方がないので、分電盤の台所のブレーカーで測ることにした。ケースが小さいのでセンサーは棚の隅に簡単に置くことが出来る。

Ab132432  ワイヤレスなので機器のセットアップに気を遣う必要がない。電源を入れるだけである。あとは10秒に一回データを親機に送り出す。子機の電源はリチウムバッテリーで1回の充電で連続300時間以上(10秒に1回、消費電流50mAで600ms稼動)、測定できるはずで、電源の入り切りも鷹揚になる。夜の10時ごろから次の日の午前11時ごろまで動かして、150Kバイトほどのファイルが無事にSDカードに出来た。これをPCに持ち込み、グラフにした結果は、図の通りである。

 ロガーで集めたデータをこのグラフにするのは至極簡単である。X軸を時分表示にするのにはもうちょっと手間がかかるが、項目数だけならExcelのファイル読み込みで、ファイル形式をテキストファイルにし、項目区切りを「スペース」にして取り込み、グラフにする列を選ぶだけである。この程度のグラフならあっというまに完成する。いや便利な時代になったものだ。Ws000000

 意外なことが、このグラフで判明した。まず2本の突出した短時間の高電力消費は、電子レンジ(夜が私の夜食、朝は娘の朝食)なのだが、分電盤には、電子レンジ専用のブレーカーがあるのに、そのコンセントを使っていないと言うことが始めてこれでわかった。 それに、室温20度近くでは、冷蔵庫は80%近く動きっぱなしになっていること、また、食洗機が夜11時頃動いているが、予想したほどの電力消費ではないこと(100W程度、300Wは使うと思っていた)、さらに、深夜に電力が0にならないのは、ガスオーブンの時刻表示で、これだけでも10W以上を消費していることなどである。

 いや、これは面白い。たった12時間の測定で色々なことがわかった。これは楽しみになってきた。親機を本格的に実装すれば、実用としてかなり使えそうである。

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

2009年10月22日 (木)

Xbeeワイヤレス電力ロガー子機(センサー)の実装

 リニアPCMプレーヤー2号機のプロジェクトはソースの公開で一区切りがつき、作業の中心はブレッドボードでテストしていたXbeeの子機(センサー部)の実装に移った。そのかたわら、あと2台作らなければならないプレーヤーの工作も続けている。いや忙しい。

Olimexの変換基板に作りこむ(10/18/09)
 Xbeeを使ったワイヤレス電力ロガーの省電力化は、スリープの状態を示す出力ピンがあることがわかって開発が順調に進み、ブレッドボード上の実験で上手く動くことが確認できた。AC電流センサーのAC出力電流(負荷抵抗を入れて電圧化)を整流(オペアンプ1つによる全波整流)し、バッファーを経由してXbeeのADコンバーター入力に入れる部分と、この動作をスリープ中は止め、アクティブな時だけ動かすトランジスタ2つを使ったソリッドステートリレーの部分である。XbeeのADCのデータ送出フォーマットもこのあいだ調べ、実際のデータが送られていることを確認している。

 データの受信をして、SDカードなどに蓄積する親機については、まだ何も設計していない。しかし、ここはそれほど省電力を考える必要がない。これがワイヤレスの良いところだ。親機はPCの近くに置いておけるからである。それにここはソフト開発が主な作業で、SDカードの操作も、RTC(リアルタイマークロック)も、これまでにすべて経験済みで殆ど不安はない。

 Olimexの変換基板は、本来はテスト用の基板のつもりだったが、子機の実装は、この基板だけで出来そうな感じなので、久しぶりにアートワークをやってこれまでの回路が納まるか調べてみた。その結果、ぎりぎり(抵抗を縦位置)だが何とか入りそうである。この基板と電池フォルダーだけでセンサー部分の子機を実装することにした。Aa212378

 久しぶりの手配線である。これはこれで工夫の余地があって楽しい。しかし、小規模なのでBottomViewのアートワークをさぼり、TopViewのアートワークしかやらなかったため配線が混み合ってくると混乱し始める。

 大した配線量ではないので半田付けは数時間で終了したが、案の定、誤配線が続出した。写真を裏側から見ると全く違う景色になってしまうように、人間の頭脳は左右逆転に弱い。修正の手間を考えれば、不精せずにBottmViewのアートワークも作るべきだったと反省する。

 何とか出来上がったので、整流回路からテスト。動かない。やっぱりまだ間違いがあった。それを直してオシロで出力をチェックする。やっと出力に所定の電圧がでた。これでよしと念のため各部のピンの出力を確かめる。おやあ、整流直後の脈流が出ていないぞ。何だ、何だこれは。非常に短い、鋭いパルスが出ている。うーむ、一体これは何だ。発振か。ちゃんと直流電圧が出ているのにおかしい。Aa202373

 ひとつづつ調べていくしかない。何となく閃いたので、脈流を平滑化しているコンデンサー(10μF )を試しにはずしてみる。おお、やっぱりこれだ。出力波形は元のお馴染みの全波の脈流に戻った。そうなのか、平滑用の大きなコンデンサーが入るためにオペアンプの出力ピンでは鋭いパルスになるのだ。これまでこの回路のオペアンプ出力をオシロで見たことがない。これで良いのだ。いやアナログは難しいものだ(このあと抵抗をはさみLPFにして大分ゆるいパルスになった)。

 このあいだウェブ探索で、こういうランダムな脈流をDCにするICがあることを発見したが(RMS-DC化IC LTC1966)、まあ、ここまでやることはあるまい。どうせ電流しか測っていない。

 ダーリントン接続したトランジスタ2つのソリッドステートリレーは幸い一発で動いた。LEDをテスト用につけて、いよいよ全体のテストに入る。これまでスリープを設定していた親機側のXbeeを子機に移し変え、元の子機のXbeeを親側にする。

 うむ、動いた。子機は5秒毎(テスト用の設定)にLEDが点き、親機にADデータを送り始めた。おやあ、数値が出ないぞ。時たま、所定の70程度(200mV)でるときもあるが、殆ど0だ。そうか、サンプリング開始が早すぎて、オペアンプが正常動作をする前にサンプリングしてしまうのだろう。オシロのスイープを遅くして立ち上がりを調べてみた。少なくとも200msecは待たないと定常状態にならないようだ。平滑回路の時定数を調整し、ピークが出ない2KΩと10μFに決める(これはもういちどブレッドボードに同じ回路を作り直して調整した)。この遅れは、Xbeeのコマンドで対応できるはずだ。Xbee

 子機のハードはだいたいこれで出来上がった。あとはケースの制作である。出来るなら防滴仕様にしたい。配電盤は洗濯室にある。電流センサーのケーブル接続もこれまでのピンヘッダーでなく、ちゃんとしたソケットにしてHeavy Dutyに備えてある。

 それに今は単3のバッテリーだが、ADCの基準電圧を一定にするため、リチウムバッテリーに替えて電圧を定電圧化する必要がある。いくらなんでも基準電圧が電池の電圧低下で下がっていくような測定では実用に耐えられない。

2号機の量産(と言っても2台だが)と接点基板(10/21/09)Aa202356
 Xbee子機の作業をしながら、2号機の2台目以降の工作も少しづつ進めている。接着剤を使う作業なので、日数がかかる。部品を確認したらDACなどの周辺ICは既に台数分買ってあったが、メインのマイコン(Mega328P)のストックが切れていた。

 先週末、秋月に行って、噂の¥250のMega328Pを仕入れてきた。ステレオフォンジャックが足らなくなったので、買おうとしたら、店員が「こんなのもありますよ」と新しいフォンジャックを出してきた。おう、これは小さい。BeagleBoardについているフォンジャックに似ているがもっと小ぶりで、今使っているものの半分くらい小ささだ。次のロットはこれにしよう。

Photo
 部品はともかく、今度の2号機の工作の中で一番面倒な部分は、実はケースの中間に配置したリチウムバッテリーの接点基板である。部品はストロベリーリナックス、秋月、千石、鈴商と通販の利く定番ショップですべて揃うし、EAGLEのボードファイルを公開しているので、基板も同じものを作れるが、この接点基板だけは自作するしかない。接着剤でアクリルケースに固定する必要があるし、0.5ミリの燐青銅線(東急ハンズで入手。大手のDIY店にはあるだろう)で接点を作るのはちょっとした慣れが必要である。Photo_2

 同じものをつくってみようと考えている人の参考になるかと思い、接点基板の寸法図を掲載しておく。図は正確な縮尺になっていないので気をつけていただきたい。少し大きめに作り、あとはやすりなどで現物に合わせて調整するのが間違いない。燐青銅線の接点は写真を参考に。この形がベストかわからないが、一応これまで5ヶ以上の接点を作ってきた中で一番具合の良かった形である。Aa202364

接点基板の制作のコツをいくつかあげておこう。みなこれまでの苦労で得たノウハウでもある。

・接点基板は、燐青銅線の接点の自由な固定(半田付け)のため、両面汎用基板から切り出すことをおすすめする。何もないアクリル板などは接点の固定に苦労する。結構強い力がバネの固定部分にかかりネジなどで止めてもわずかづつ動いてバネが利かない。片面基板は止めた方が良Aa202367 い。少し強く抑えると半田付けしたパッドが簡単に基板からはがれて失敗する。

・接着はエポキシ系の強力なもので一日以上おいて接着を完全にすること。接着面積が少ないので、瞬間接着剤(シアノクレート系)では強度不足になる。

・任天堂DS-Liteの電池の接点部形状は良く見ると、電池両側の位置固定の凸部以外に、プラスマイナスの接点の間に、微妙な形状をした仕切りの突起がある。これに合うよう忠実に基板に穴を開けると基板の強度が持たない。この突起はあらかじめナイフ等で半分くらい削っておき、それにあわせて穴をあける。

・燐青銅線の接点バネ作りのコツは、バネになる部分は出切る限り曲げないで作ることである。少しでも曲げて形を調整すると簡単に弾性を失ってバネにならなくなる。その意味で半田付けで位置が自由に調整できる両面基板から作るのがベストだと思う。

・現在のプリント基板では、接点基板の位置と、ミニLCDの10ピンのピンジャックとがちょうど重なる位置にある。あらかじめピンジャックの端子をニッパーで切り、裏面に出ない状況で半田付けしないと干渉する。

・任天堂DS-Liteの互換バッテリーは、ネット通販で容易に手に入れることが出来るが、製品によって形が微妙に異なり注意が必要である。位置決め用の凸部がなかったり、仕切りの突起の形が違ったりする。同じ製品でも個体差があるので現物合わせが必須である。

・電池に丈夫なテープ・リボンなどをつけておき、はずすときの方策を考えておくこと。今の形は一旦装てんしてしまうと、容易にはずせなくなる。リチウムイオン電池の外装を傷つけることは厳禁で、はずすときにドライバーなどを使うと傷つきやすい。とりはずすのに大苦労すること間違いない。

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

2009年10月 9日 (金)

リニアーPCMプレーヤー2号機ついに完成

プリント基板なのに動かない(10/7/09)
 Xbee子機のブレッドボードでのテストが一段落したので、本来のOlimexに発注したプリント基板、リニアーPCMプレーヤーの実装を始めた。主要な部品が納まるかどうかは既に確認してあるので、あとはパーツをハンダ付けするだけである。

 ハンダ付けだけなので、進行が早い。定石どおり、チップコンデンサー、DACチップなどの表面実装部品をまず最初にハンダ付けする。これがすめば、あとはDIP部品ばかりなので順番に余り気を使う必要がなくなる。これは楽だ。手配線の手間に較べたら雲泥の差だ。まるでプラモデルのように、どんどん捗る。

 リチウム充電の部分が先に組みあがったので、バッテリーをつけて最初の通電テスト。おお、LEDが点いて充電が始まった。いいぞ。誤配線はないようだ(当たり前か)。残りのハンダ付けを急ぐ。

 おやあ、レギュレーターにつける100μFの電解コンデンサーの背が高すぎるのではないか。オーディオ用の100μFより高い。ケースの余裕は、このオーディオ用がぎりぎりのはずだ。やっぱりそうだ。これではケースに当たってしまう。いやあ困った。スペックによれば、33μFくらいでも良さそうなのだが、手頃な背の低いやつが手持ちにない。残念、一気に組み上げようと思ったが、部品不足で止まってしまった。

 次の日の仕事の帰り、秋葉によって部品を調達し、台風の去った8日、残りの実装を一気に進めた。ケースの工作はまだ終わっていないが、基板部はすべて完成した。手に持って完成の余韻を楽しむ。1号機の半分近い大きさだ。手の中に入る。Aa092324

 それにしてもよくここまで来たものだ。3ヶ月前、EAGLEを始めた頃は本当にこれでプリント基板が出来るのか、余りの道の遠さに途方に暮れたときもあったが、今、そのプリント基板の完成品はここに存在し、電源が入れられるのを待っている。満足感で暫く感慨にふける。

 さて、いよいよ通電テストである。いつもの緊張の一瞬である。果たして動くのかどうか。手配線に較べれば動く確率は遥かに高いが、それでも動くまでは安心できない。祈る気持ちで電源ON。おお、LCDにおなじみのスタート画面が出た。良いぞ。SDカードを入れて演奏ボタンを押す。

 おやあ、音がしない。ボリュムを上げても何の変化もない。LCDは動いているのでCPUは問題なく動いているようだ。それで音が出ないのはアナログか。しかし、プリント基板である。誤配線は考えられない。ハンダブリッジなど実装の時の失敗の公算が強い。

 ブリッジしていそうなところを隈なくルーペで探す。特に何もない。フラックス残滓が残って怪しいところをクリーナーできれいにしたりするが何の効果もなし。さきほどまでの元気はどこへやら、いきなり奈落の底に落ちた気分である。やれやれ。何が悪いんだろう。大げさな言い方になるが、人生が暗い(典型的な躁鬱質である)。

やっぱり間違えていた(10/8/09)

 まあ、これでそのままにならないところが躁鬱質である。気を取り直してトラブルシューティングを始める。まずどうやって原因究明していくか、気分を落ち着かせてじっくり方策を考える。当研究所にはオシロがある。こういうときのためのオシロだ。これで、それぞれのピンを見ていけば、どこが悪いかわかるはずだ。少なくともLCDの表示が出てデジタル部は完全に動いている。アナログの部分から見ていこう。

 まず、オペアンプの出力を調べる。何も出ていない。入力は、これも駄目。DACの出力は、これもゼロ。それではDACのデジタル入力は?あれえ、ちゃんとCPUからデジタル出力がある。そうかDACが動いていない。DACのBU9480Fが死んだか?クロックはどうだ。あっあっあ、BCLKが出ていない。ベースクロックが出ていなければDACは動かない。DACが原因ではない。

 ちょっと待て、BCLKは何でこんなCPUのピンから出ているのだ?あわてて元のAVRstudioのソースを確認する。何と馬鹿なことだ。DACのBCLKはSPIのマスタークロックが供給源のはずなのに全然別のピンから貰っている。これはどうしたことだ。うひゃあ、SPIのマスタークロックはもうひとつのクロックLRCKにつながっている。とんでもない間違いだ。BCLKとLRCKを取り違えている。

 あーあ、やってしまった。あれだけチェックしたのにどうして間違えたのだろう。やっぱりバグが残っていた。回路図から間違えている。EAGLEは間違えたとおりにボードを設計し、Olimexは忠実に基板を作ってくれた。

 よし、これが原因だ。これを直せば動くはずだ。希望の火が点った。こうなると俄然やる気が出てくる。配線図、ボード図を見ながら、一番良いジャンパー配線をあれこれ考える。LRCKの結線はビアを使っていたので、その前でパタンを切り、ビアとBCLKのCPUピンに直接UEW線でつなぐ。LRCKは、そのパタンのレジストをはがし、そこへ結線する。うまくいったぞ。Photo

 再度、通電テスト。演奏ボタンを押す。ああ、良かった。音が出た。嬉しい。ケースの工作が残っているが、2号機の完成だ。手のひらにすっぽり入る大きさで、CD音質の音楽が聴ける。市販の携帯プレーヤーはこの大きさだと今は動画が出るレベルで問題にならないけれど、いずれはあのSTM32Primerで作ってやる(いけない。封印してあるのに)。

ケースは作り直し、EAGLEのライブラリを公開(10/9/09)

 残るはケースの工作である。ソフトパワースイッチはスペースがないので諦め(SDカードとLCDの電源制御が必要)、電源用の定番のスライドスイッチを基板の下側のスペースにいれ、タクトスイッチや、ボリューム、フォンジャックなどの穴を空ける。Aa092321

 アクリルの穴あけは簡単だ。ルーターで凡そのサイズを切ってから、ナイフ、やすりで整形する。タクトスイッチの穴が結構難しい。正確な位置決めが難しいので小さめの穴をあけてナイフで広げていく。あ、いけない。仕上げのやすりをかけているとき誤って先端を外に滑らしアクリル面に傷がついてしまった。あーあ、いつもこれである。最後の最後で完成をあせって何か失敗をする。試作版とあって養生テープも張っていない。

 出来上がったので、セットしてみる。傷をつけた面は、自分の横着をあざ笑うかのように、LCDの表示面だ。やれやれ、折角の製品が台無しだ。何とも心が晴れない。どうせ娘に渡す機械だ。少々傷がついていても構わないようなものだが、そこは、それ職人の良心というものがある。

 一晩迷ったが、結局、上蓋だけでも作り直すことにした。このケースは予備を含めて沢山買ってある。何しろ¥100である。次の日、今度は養生テープをしっかり張り、切り欠き位置をきっちり測り直して、作業開始である。お手本があるので穴あけは簡単に済んだ。つけてみる。おお、新しいので蓋のストッパーもしっかり入り、見違えるようにLCDが綺麗に見える。上々の出来だ。これなら自信を持って人に渡せる。

 リニアーPCMプレーヤー2号機は、これで1台目が出来てプロジェクトは一段落した。ヒロセのSDカードスロット(DM1AA-SF 千石で¥210)、千石で売っている平型の2連ボリュウム(型番不明)のEAGLEライブラリーも自信を持って公開できる。Aa092325

 ステレオフォンジャックについては、もういちど部品エディターで確認してみたら、似てはいるけれど各ピンの位置がすべて微妙に違っていることがわかった。これを現物に合わせることはそう簡単ではない。ソースコードも、ミニLCD用にアイコンを追加した修正版を計画中で、これの完成に併せて、2号機のEAGLEボードファイルと一緒に公開することにする。

ここに、EAGLEの部品ライブラリーファイル Gataro_parts.lbrを置きます。ヒロセのSDカードスロットと、2連ボリュ-ム(DBL_POT)の2つの部品がはいっています。使う時は、schematic(回路)エディターで、library -> use.. で、このライブラリを開き、ADDコマンドから、上記部品を選んでください

確認の遅れていたステレオフォンジャック(秋月等で入手可能)のライブラリを追加しました。下のlbrファイルは3つの部品が入っています。

「Gataro_parts.lbr」をダウンロード

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

2009年10月 5日 (月)

Olimexのプリント基板はXbeeを先に使う

Olimexから基板キター(9/29/09)A9292302
 前回のブログをアップして居間に戻ったら、郵便屋さんが「書き留めでーす」と訪ねてきた。今か今かと待ちかねていたOlimexからの基板の入った航空便だった。へー、日本では書き留め扱いするんだ。しかし、それにしても、「shipped」のメールはその前のブログ記事のアップの直後、今度もこのタイミング。奇妙な符合である。日数が数えやすい。12日で到着したことになる。

 記念すべき最初のブルガリアから基板到着便だ。封を切る前にあわててカメラを取り出し記念撮影する。中からは少し厚めのシュリンクラップにつつまれて基板5枚が出てきた。仕上げはどうだ。うむ、パッドがハンダ仕上げでなく、金フラッシュなので素晴らしく綺麗に見える。A9292306

 いやあ、たいしたもんだ。しかし、見ているうちに徐々に胸が高まってくる。果たして実際の部品が、この基板のパッドに正確に入るかどうかを、これから確かめねばならない。自作した部品ライブラリーが正確に出来たかどうか、公開に耐える品質なのかこれからはっきりする。スケール1の印刷で調べてはあるが不安は消えていない。

 まず、SDカードスロットを載せてみる。おお、空けてあった穴とスロットの突起がピッタリ入ってきっちりと納まった。接点も完全に合っている。うまいぞ。次は、平型の2連VR。うむ、こいつも所定の穴にぴたっと納まった。よーし、残るはステレオフォンジャックだ。ややや、こいつは入らない。標準のライブラリに同じものがあったので、余り念入りに確認していなかった。まずドリルサイズがジャックの端子の巾よりほんの少しだが小さい。それに端子の一つが0.2ミリほどずれている。

 マーフィーの法則ではないが、間の悪いことにずれているところはアクティブな端子のひとつだ。しかも配線パターンが部品側でハンダ付けで誤魔化せない。うーむ、困った。ドリルサイズが小さいのは、端子をやすりで細くして何とかなりそうだが、このずれは致命的な結果になる恐れがある。

 暫く思案したが、意を決して、このあいだ使ったアートナイフでドリル穴を少しづつ削りだした。削ったところのスルーホールの金属面は失われてしまうがこれは仕方がない。
アートナイフが結構良く切れるので、ほどなく端子が入るところまで削れた。ルーペでチェックする。まずい。反対側のパッドまで少し削れてしまった。これは大変だ。

 残りの不整合部は、端子をやすりで削り、少しづつジャックを入れていく。入った。恐る恐るテスターで問題の箇所の導通を調べる。良かった。ハンダ付けしなくても導通している。固定する前にハンダメッキすれば大丈夫だろう。胸を撫で下ろす。

 ここ以外は標準部品ライブラリそのままなので余り心配しなくて良い(はずだ)。でも念のため、USBジャックや、ICを確かめる。よし、みんなOKだ。いやあ良かった。部品を載せて本当に動くまで、まだドラマは終わらないが、LPCMプレーヤー2号機の制作は一山を越した。あとは半田付けだけである。

 もうひとつのプリント基板、Xbeeモジュールのピッチ変換基板である。こちらは、2ミリピッチを確かめるだけだ。くもの巣状のXbeeモジュールからソケットを抜いてテストする。苦もなくピッタリ納まる。思わず半田ごてに電気を入れて2つの変換基板のハンダ付けにとりかかってしまう。Aa032309

 直近から言えば、こちらの基板の方がニーズが高い。バラック配線で苦労している。早速、親機側にブレッドボードに接続するための10ピンヘッダーと、リセットスイッチ、子機には電源と、ループバック用のジャンパーピンを取り付ける。机の上の実験環境はこれで見違えるようにきれいになった。よし、これから本格的なXbeeの実験にとりかかれる。

わかりにくいXbeeのAPIフレーム(9/30/09)
 机の上が片付いたので、本格的にXbeeのADCデータの解析を始めた。ADCデータが送信されるのは確認してあるが、中味はまだ何も調べていない。

 こいつが難儀した。何かわざと難しく書いてあるのではないかと勘ぐりたくなるほどマニュアルのADCデータフォーマットの説明が分かりにくい。わかりやすい英語なのだが、解説しているところが分散してしまっている。Ws000000

 ADCデータのデータフォーマットはすぐわかった(12ページ)。しかし全体の記述がない。実は次のページ(13ページ)にAPI supportという見出しで、これが0x83(16ビットアドレスのとき)の識別子(後述)を持ち、詳しいフレームフォーマットは62ページを見よという説明があるのだが、このAPI supportという見出しそのものが誤解を招く。APIフレームや識別子そのものが良くわからないときはこのあたりは読み飛ばしてしまう。

 これは説明の順番が逆だろう。始めにADCデータはAPIフレームフォーマットと全く同じ様式であると説明し、そのあと、その識別子(identifier)は0x83で、その中味はこれこれ、と説明されればここまで迷うことなかったように思う。

フレームの構造そのものはそう難しくはない。

1バイト目 0x7E   APIフレームの先頭をあらわすデリミッター。固定。
2      チェックサムを除いたデータフレームの長さ2バイト MSB
3                               LSB

ここからがデータフレーム
4     APIフレーム識別子(identifier) APIフレームの種類を規定

ここまでがAPIフレーム共通フォーマットで、このあとはAPIフレーム識別子によってそれぞれ異なるフォーマットを持つ。0x83で表わされる16ビットアドレスモジュールの送信I/Oデータは、

5     フレームを作った通信モジュールアドレス(16ビットアドレスのとき)で、 
6     64ビットアドレスのときは、5~6 でなく、5~12バイトとなる。
7     1バイトで表わされる受信電波強度(RSSI) 
8     オプションバイト(ブロードキャストフラグなど)

実は、この4バイトも、大部分のAPIフレームに共通のフォーマットなのだが、最初、このブロックを見落とし、解析に非常に手間取った。この4バイトのあとが、マニュアルの最初に出ているADCデータのフォーマットの部分である。

9    I/Oデータのサンプル数(合計ではない。合計はサンプル数×ポート数)
10    15ビット分のアクティブなI/OとADCポートの表示。アクティブなところ
11    に1が立つ。 
      | ?A5 A4 A3 A2 A1 A0 D8 | D7 D6 D5 D4 D3 D2 D1 D0 |
      例えば、A0とD2 、D4をアクティブにしていると、0x02、0x14となる。
      ここまでが、データヘッダーと呼ばれる部分。
12~   これ以降は2バイトづつのDIOデータとADCデータ(右詰10ビット)が
      並ぶ。数は、アクティブなポート数でわかる。但し、DIOデータは必ず先頭で、ひとつしかなく、何らかのDIOをアクティブにしたときのみ付く。フォーマットは右詰のビットフィールドでDIOの状態を表わす。

 フレームの最後は必ず、4バイト目以降のすべてのバイトを足し上げた和の末尾1バイトを0xFFから引いたチェックサムバイトが付く。

 やれやれ。わかってみるとどうということもないフォーマットだが、このADCから出されるデータの解析にほぼ半日かかってしまった。I/Oデータフレームのフォーマットは12ページ、0x83の記述が13ページ、実際のフレーム全体の定義は62ページに分散して書かれているので理解しにくい。最初は0x83の識別子を持つAPIフレームをAPIを解説している章で捜し回って「ない、ない」と騒いでいた。まあ、根が慌て者の早飲み込みと言うだけなのだが。

Xbee子機の電源制御はもっと楽な方法があった(10/2/09)
 何事もやりだすと夢中になって止まらない性質(たち)である。やっとのことでAPIフレームの仕様がわかったので、その勢いが止まらない。本題のLPCMプレーヤー基板の実装はそっちのけで、XbeeのADCデータの解析に進んだ。

 まず、ADCの実際の値を調べる。電流センサーは仕掛けがかさばるので、簡単な手持ちの温度センサーICをテストに使う。最近、秋月が売り出した低電圧でも動く温度センサーLM60である。温度センサーというとLM35Dあたりが定番だが、このセンサーは電源電圧が最低でも4V以上必要で、最初に作った温度ロガーでは、ボタン電池を使って5Vを確保している。

 これに対してLM60の最低電圧は2.7Vからなので、Xbeeなどの3.3V機器には都合が良い。このあいだ使う予定もないのに買ってきてあった。このLM60を鼻歌交じりでXbeeのADCピンに接続し、温度出力を確かめる。こいつは、LM35Dと違って氷点下まで測れる優れもので、0Vが424mV、1 度あたりが6.25mVとなっている。

 ありゃあ、XbeeのADCデータが全く出ていない。電圧が0.6Vくらい出ている(温度26度程度)のはテスターで確かめてあるのに、10ビットのADCデータは3FF(1024)を指したままピクリとも動かない。何故だ。あ、あ、馬鹿だなあ。基準電圧ピンに何もつないでいない。Xbeeには基準電圧ピンのない機種もあるそうだが、この無印Xbeeは基準電圧を入れてやる必要がある。

 とりあえずVccにつないでめでたく数値は、600mV前後の値、200あたりを指すようになった。指でおさえれば着実に数値が上がる。定常状態でちょっと値がフラフラするのが気がかりだが、とりあえずADCの動作は確認できた。

 次は、AC電流センサーの出力を整流するオペアンプの電源制御である。これについては、このあいだ買ったインターフェースのXbeeの記事で願ってもない情報を見つけた。スリープ/アクティブの状況を表示するピン(13ピン)があったのだ。 負論理で、スリープの時がLow、アクティブのときがHighである。勿論、オリジナルのマニュアルのピンアサインにもちゃんと載っている。見落としていただけだ。なーんだ、これを使えば、面倒なリモートATコマンドで子機のI/Oピンをドライブする必要がない。リモートATコマンドも面白いが、これはあとにしよう。

 しかし、このピンで実際の電源制御をFETでやろうとして困った。FETのゲートに直接つなぐことができない。FETはゲートがLowでON、HighでOFFとなり、論理が逆だ。インバーターをつなぐ?うーむ、大げさになるな。何とか素子ひとつで順論理を実現するうまい方法はないか。

順論理のソリッドステートリレーを作る(10/4/09)
 ネットで色々調べたが、順論理の動きをする手頃なソリッドステートリレー回路が見当たらない。FETでなく、トランジスター(オープンコレクター)でも論理は反転してしまう。しかも、NPNトランジスターのオープンコレクターでは、負荷のマイナス側を切ることになり、電源制御のこの方法は前に何度かひどい目にあっている。

 モーターのような独立したディバイスなら問題ないが、LCDや、SDカードなど制御線が本体とつながっている機器は、Vccをグランド側で切ると、機器への電流が制御線を通じて流れ、おかしな動作をする。一番ひどかったのは、SDカードの電源をグランド側で切ったときだ。プラス側が生きているのでSPIを通じてMCUのMega168のI/Oピンに大量の電流が流れ、チップを壊してしまったことがある(8/31/2008 MMC(SDカード)をMega168で)。LCDの電源をグランド側で切ったときも、全体の消費電流が逆に倍増して、あわててバックライトの電源だけを切って、事なきを得た。

 この問題を以前、専門家(サーバーのハード設計者)に尋ねたことがある。答えは、素子の間をフォトカプラーなどで電気的に絶縁しない限り、こういう仕様外の結線では、何がおきるか全く保障されていないということだった。要するにそのときの結線状態の電気回路になるというのだ。この解析は素人の手に負える問題ではない。

 プラス側を切る電源制御も油断がならない。このあいだのH8では、SDカードの電源をFETを使ってプラス側で切ったが、このときはレベルシフター(H8が5V、SDカードが3.3V)経由のSPIを通じて、H8からSDカードに電流が流れ、Vccが上がって幽霊動作をしていたことがある。このお陰で配線間違いのバグに気づかず、H8でSDカードを動かすのに半年近くもかかった。Aa042315

 それはさておき、整流用オペアンプの消費電流は1mA以下である。直接XbeeのI/Oピンで駆動できそうな気もするが、さすがにそれはやめておく。インバーターをどう実装するかをあれこれ考えるより、こういうものは一歩づつ、とにかく動かしていくのが一番だ。まずはXbeeのSLEEP/ONピンがスペック通り動いているかを確認しよう。ピンにLEDを付け、実際に点灯するか確かめる。あれえ、小さく点きっぱなしだ。電圧をテスターで測る。3.3Vと3V。なにい、ON/OFFの差が殆どない。しかもLEDに殆ど電流が流れないじゃないか。何か足らないものがあるのか。あ、あ、あ、ピンの位置を間違えている。馬鹿な話である。正しい13ピンに接続し、めでたくLEDはスリープの度に点灯と消灯を繰り返した。OKだ。Photo

 次は、図の回路である。FETにオープンコレクターのトランジスタをつけた。オペアンプひとつの電源制御のために2つも素子を使うのも抵抗があるが、この際仕方がない。論理反転しているので点灯と消灯がちょうど逆になるはずである。あれえ、同時に消灯、点灯となる。何故だ。SLEEPで点灯したときは消灯し、動作状態のとき点灯しなければいけない。おかしい。あ、あ、あ、それで良いのだ。今日はどうかしている。FETが論理反転するので、わざわざ反転させて正論理にしていることをすっかり忘れていた。Xbeeのスリープ表示ピンは負論理でスリープ時は消灯だった。どうも慌て者の癖が直らない。

 とにかく、これで、省電力設計のXbeeセンサー開発は一歩進んだ。リモートATコマンドのハンドリングも面白そうだが、わざわざしかけを複雑にすることはない。この回路を使えば子機はコマンドを貰わずに独立して電源制御が出来る。

 出来上がった回路を良く見ていて、このFETをPNPトランジスターに替えれば、このあいだ作った検電器のダーリントン接続と全く同じになることに気が付いた。そうか、あの検電器は順論理のソリッドステートリレーだったのだ。ダーリントン接続の回路も早速試してみる。問題なく動いた。まあ、電源制御といっても数mAしか流れない。気楽なものだ。(回路は自己責任でご利用ください。全く自信はありません)

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

2009年9月29日 (火)

無線モジュールXbeeで(に)遊んでいる(遊ばれている)

 前の記事をアップした直後に、Olimexから例の一語メール「shipped」(発送したよ)を貰った。あれから10日以上経ったが、まだ基板は届いていない。ワイヤレス電力ロガーの通信手段となるXbeeシステムの本格的な開発は、基板が届いてからと思っていたのだが、待ちきれずバラックながら色々試している。Xbeeは思ったより手強い相手だ。

Xbeeのファームウエアを飛ばし肝を冷やす(9/21/09)
 どうもおかしい。ウェブでみんなが実験しているXbeeの機能と、マニュアルの記述やX-CTU(Xbeeの設定ユーティリティ)の設定内容とが一致しない。Xbeeのファームウエアのバージョンの差で機能に大きな差があるようだ。マニュアルの記述の何を信じて進めていけば良いのかわからなくなった。

 今度のワイヤレス電力ロガーでは、センサー側(子機)の構成は必要最小限に抑えるため、ADコンバーターはXbee内蔵のものを使うことにしている。ところがウェブサイトには、このADコンバーターを使っている例が少ない。殆どが、Xbeeを単なるUARTインタフェースの代わりに使っており、たまに見つかってもArduinoというAVRを使った今流行の開発モジュールのシールド(付加基板)の内部コマンドや、企業の開発キットの中で使われていて、具体的な設定方法が公開されていない。

 こうなるとマニュアルに頼るしかないのだが、肝心のADCやI/Oピンの設定コマンドは、マニュアル(v1.xCx版  2008/9/4)によれば、コマンド一覧表の中のXbeeProのみでしか出来ないところにある。無印のXbeeはどうするのだろう。実際にもX-CTUで該当するATコマンドを入れると、そんなコマンドは知らないとERRORが返ってくる。ええーそんな。無印のXbeeでは、このへんのピンは使えないの?まさか。ウェブサイトには無印Xbeeで、このADCピンを使った温度センサーの実験報告がある。どうやって設定したのだろう。

 バージョンの記述がまた混乱させる。マニュアルにはv1.x80とか、v1.xC1とあるが、手持ちのXbeeのX-CTUで出てくるファームウエアバージョン番号は、1084である。どう換算するんだろう。先の記事のリモートATコマンドもX-CTUでテストできると良いのだけれど、このプログラムのリモートコンフィギュレーション画面の中にはそれらしいものはない。X-CTUは最新のバージョンなのだが。

 先人のブログをさらに読み込む。うーむ、リモートATコマンド機能は、ずいぶん最近になって可能になった機能らしい。ファームウエアのアップグレードで出来るようになるらしいが、手持ちの無印Xbeeがその対象であるかどうかはわからない。

 やっぱり、Xbeeは販売元の開発キット(数万円する)を買って全体のバージョンを揃えてから動かすのが本筋のようだ。ばら売りされたXbeeチップだけを買って動かすことを想定していない。しかし、こちらはアマチュアである。とてもそんな余裕はない。

 これはどうも、設計に取り掛かる前に最新のファームウエアにしてみるのがまず先決のようだ。それから何が出来るか考えよう。hamayanさんのページを参考に、ファームウエアのアップデートを試みる。販売元のサイトから、最新ファームをダウンロードする。無印Xbeeの最新バージョンは10C8だった。そうか、わかったぞ。マニュアルのv1.xABというのは、10ABなのだ。Xbee

 指示通り、ファームウエアを更新した。基板が来ないのでジャンパーの空中配線でリセットしたりするのは結構神経を遣う。2つあるXbeeモジュールを切り替えてそれぞれのファームウエアを更新する。順調にアップグレードされた。調子に乗って、一方をAPIモードにし、ループバックさせて、親機のADCデータを子機のループバックで見ようと設定を色々いじる。

 そのうちに、親機のレスポンスが返らなくなった。どうもパラメーターを書き込むときに、マウスのホイールを動かしたため、入力窓のパラメーターが動き、違ったバージョンのファームウエアを書き込んでしまったようだ。入力窓に証拠が残っている。まずい。

 単独でもうんともすんとも言わなくなった。UARTが反応しないのでAPIモードのリセットもできない。買って最初のATコマンド投入のとき一度動かなくなったときがあったが、そのうち自然回復した。今度も、小一時間放置して電源入れ直すも状況は変わらず。

 ううう、ファームウエアの書き損じをやってしまったか。しかし、幸いなことにhamayanさんのページには、ファームウエアを書き損なったときの回復手順が出ている。手順を読む。何だと、電源を入れずにシリアルをつなぐだと?それにUSBではできないとある。

 状況は暗い。こちらは秋月のUSBモジュール経由のTTL UARTだ。それに電源を入れないでUARTが動くのか。半信半疑で、USB-UARTからの電源リード(+3.3V)を抜いて、言われるままX-CTUの手順を実行する。ややや、何か反応しているぞ。Xbeeの電源を入れる。おおお、プログラミングしはじめた。素晴らしい。

 やれやれ肝を冷やした。hamayanさんのお陰で、ファームを書き損なったXbeeは、前の状態に完全に復帰した。しかし電源を切ってもファームが書き込めるというのはどういうことなのだろう。理解を超えている。世の中まだまだわからないことだらけだ。

ADCが動かない(9/24/09)Xctu10ca
 ファームウエアは、最新の10C8に上がった。X-CTUのコンフィギュレーション画面にも、これまでの1084にはなかった沢山の新しいコマンドが並ぶ。ADC、I/Oピンの設定も出来るようになった。まるで違う機械のようだ。

 しかし、Xbeeの設定はなかなか順調には進まない。こいつUARTだけの透過モードは至極簡単に動くのだけれど、少しインテリジェントなことをやろうとすると突然難しくなる。モジュールを設定するコマンドの数はマニュアルで数えると、何と69もある。

 しかも、Xbeeそのものの種類がやたらと多い。X-CTUのユーティリティで数えてみたら、選ぶべきハードウエアは十何種類、ファームウエアの種類も5種類近くあって、紛らわしいことおびただしい。

 基板が来れば、AVRか何かでXbeeのドライバーを作りAPIモードのテストをするつもりだが、それまでのとりあえずの策として、親機側のADCを動かし、ループバックでそのデータを返して、X-CTUで読むことにする。わざわざループバックにしているのは、子機の設定をテストの度に接続しなおして設定する手間を省くためである。

 しかし、これが言うことを聞かない。Xbee双方を非APIモードのまま、

 ATD0=2   (20ピンのポートをADコンバーターにする)
 ATSM=5  (サイクリックスリープモード、ピン起床あり)
 ATSP=C8 (2秒(200×10ms)ごとに目覚めてADデータを送る)

とすれば、2秒ごとに20ピンのADCデータを親機が子機へ送出し、子機はそれをそのまま親機に返してくるはずなのだが、全く反応はない。単なるループバックテスト(Range Test)は動くので、ハードの問題でなく、コマンド設定の問題である。 If0911

 ATIR(サンプリング間隔)とか、ATAS(スキャンアクティブ)とか、それらしいコマンドを片っ端から入れていくが、何の動きもなし。頭を抱える。他に動作を確認する機能もあるのだが(Association機能、LEDの点灯などで動作表示)、空中配線のXbeeチップはICプローブで蜂の巣状態になっており、下手にいじって壊してしまうのが怖い。これ以上、手を加えたくない。皮肉なことにLPCMプレーヤー基板より、Xbeeチップ変換基板の到着が待ち遠しくなって来た。

やっとADCが動いた。基本的なミス(9/26/09)
 珍しく長期のシルバーウィークが明けて、仕事の帰りの本屋で、インターフェース誌の最新号(11月号)を見つけた。お誂え向きに無線特集の号で、Xbeeも掲載されている。早速買い求める。

 記事の内容は、だいたい既知のことが多かったが、頭の中の情報の整理には役立った。全体の見通しが良くなり、落ち込んでいた意欲が復活した。リモートATコマンドによるX-CTUでのリモートモジュールの設定(p104)の説明も収穫だった。ここはマニュアルのないところで、これは助かる(まだ先の話だが)。Xctuconfig

 しかし、目の前のXbeeを動かすヒントは見つからない。相変わらずADCが動き出さない。しようがない。ループバックテストは諦めて、子機に設定し直そうとX-CTUでパラメーターを見ていた時、ふと気になるパラメーターが目に付いた。Xbeeネットワークの役柄を決めるATCE(コーディネーターかエンドディバイスかを決めるパラメーター)である。

 現在は、1対1なので片側をコーディネーターにする必要はないが、1対Nに備えて、現在の親機のCEパラメーターは1(コーディネーター)になっている。もしかして、コーディネーターではI/O関係は動かないのかもしれない。だめもとで、これをエンドディバイス (ATCE=0)にしてみる。

 やった。こいつが原因だった。X-CTUのターミナル画面Adcoutに、親機のADCデータが送信され、子機でループバックされたデータフレームが次々に戻ってくる。いやあ、やっと動いた。マニュアルのどこかには書いてあるのだろうが、こんな基本的なところまでは目が届かない。

 サイクリックスリープモードを解除してみる。立て続けにデータが送られ、見る見るうちにターミナル画面が一杯になっていく。やれやれこれで第一関門は突破した。次の課題はリモートATコマンドによる子機のI/Oドライブだ。

 それにしても、Olimexからはまだ品物が届かない。16日に発送したというのならもう10日が経つ。日本の連休は、外国の航空貨物の取り扱いには関係ないはずで、それにしては遅い。航空便ってそんなに日数のかかるものだったっけ。

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

2009年9月17日 (木)

Xbeeワイヤレス電力ロガー実装に向けての準備

 電子工作を始めてから最初に作ったプリント基板は、無事Olimexで発注が受理された。どんな基板が送られてくるか、期待と不安に胸が膨らむ。しかし、届くのはあと10日近くかかるだろう。それまで何もしないで待っていられる性格ではない。もともと貧乏性である。特に工作を始めてから輪をかけて手を動かしていないと落ち着かない性分になってしまった。Xbeeを使った電力ロガーの実装に向けて、あれこれ勉強と実験を続けている。

単電源のオペアンプ整流回路(9/11/09)
 電力ロガーのAC電流センサーの出力は当然ACで、XbeeのADコンバーターに入れるには整流してやらないといけない。出力はmVレベルなので、普通のダイオードでは出来ない。オペアンプを使った整流回路が必要だと、この前の記事で書いた。

 OlimexにはXbeeのチップ変換基板も発注してあるが、このあたりを先にブレッドボードで実装してしまおうと、ウェブを先生に整流回路を組み始めた。しかし前にも書いたように単電源のオペアンプで理想ダイオードになる適当な回路例がない。とりあえずは、ここのページのオペアンプ2つを使った全波整流回路(絶対値回路)の接地点をVccの中間電位に変更した回路(ウェブのここを参考)で試してみた。

 しかし、うまく動かないのである。出力がDCにならない。半波整流のような波形でマイナス側にも波形が出る。諸元を色々いじる。全く変化なし。そのうち入力も中位電位にするべきだと気づいて、ここも抵抗2つでプルアップするが、これも駄目。ウェブに載っている整流回路を手当たり次第に試してみるが、すべて単電源では動かないか、整流できない。

 ウェブをさらに検索する。ダイオードなしのオペアンプ2つで全波整流する回路が見つかったが、これは負電位の入力でも誤動作しない特別のオペアンプ(AD823)用で使えない。こちらは、秋月で買った1ヶ¥20の汎用オペアンプLM358で作るつもりだ。DigiKeyで調べたらこのアナログディバイスのオペアンプAD823は千円近くする。とんでもない話だ。Photo

 両電源にするのも馬鹿馬鹿しい。半日あれこれ悩んで、このあいだのリズムキャプチャーで使った単電源オペアンプひとつの全波整流回路をだめもとで組んでみた。これはウェブの説明では、ダイオードの順電圧以下では整流しないとあったので諦めていたものである。確かにこのダイオードの位置では、逆方向は良くても、このダイオードの順方向のところは、整流しないはずだ。

 確認のつもりで、ブレッドボードに回路を組み、AC電流(CT)センサーに40Wの白熱スタンドをつける。150mV位の出力がでるが(オシロでP-P 300mV)、1V以下なので出力は出ないはずだ。Photo_2

 うわー、オシロから脈流がはっきり出た。少し大小があるが立派なDCだ。コンデンサーで平滑してみる。見事、200mVの直流が得られた。何だ、何だ。今使っているダイオードは1N4148の普通の検波用ダイオードだ。順方向電圧降下は0.7Vもある。誰だ、順方向電圧以下は整流できないと言ったのは。ちゃんと出ているではないか。

 もっと少ない電流はと言うので、公称13Wの半田ごてを入Photo_3 れる。センサーの出力はP-P 100mV、整流後は、50mVのDC出力が出た。立派なものだ。案ずるより生むが易しとはこのことだ。これでXbeeに入れるアナログ入力の回路の目処がたった。

 ついでにオペアンプの消費電流を測る。3.3VのVccで、0.3mAだった。FETで入り切りするのも微妙な電流だが、行き掛かり上、FETを出して、おさらいをする。ゲートをプルアップしておき、XbeeのポートをActiveLOWにしておけば、Xbeeがアクティブなときは、ON、スリープして、ポートがHiZになったときはOFFという勘定だが、これはもう少しデータシートを読み込む必要がある。

丈夫なXbee子機にするために(9/13/09)
 Xbeeシステムの詳細設計は、Olimexのピッチ変換基板が来てからと考えていたが、オペアンプの電源制御のために、もう少しつめておく必要が出てきた。考えてみたらスリープのとき、I/Oピンの状態が変わることは通常考えられない。何のためのI/Oピン、スリープということになる。何とか他の方法で電源制御が出来るようにならないものか。

 マニュアルをもう少し詳しく読み込んでみる。その結果、子機の設定を親機を通してできるリモートATコマンドというのがあることがわかった。Xbee単体はプログラマブルではないが、ATコマンドを沢山使えば、かなりインテリジェントな動作をさせることができる。

 これ、これ。スリープから目覚めた子機に所定のコマンド(I/Oピンの制御)を送ってやれば、ADコンバーターのオペアンプの電源を立ち上げることができそうだ。リモートATコマンドは、Xbee間の通信を、単なるUARTになる透過(トランスペアレント)モードでなく、APIモードにすることで送ることが出来る。APIモードのデータフレームの仕様は詳しく出ているので開発に不安はない。

 しかし、当初の仕様は、スリープモードから目覚めた子機は、一方的にデータを送り出すことにしてある。なるべく親と子供の間を独立させるためだ。親の指示がないと動けない、ひ弱な子機にしたくない。しかも親は子機の状態を気にせず、ただ、データを送ってくるのを待つだけにしたい。

 スリープモードのところをさらに詳しく調べる。すると有力な方法が見つかったのである。Xbeeのスリープモードは全部で4種類あり、消費電流の一番少ない、ハイバーネートモード(SMパラメーター=1)、消費電流は多いが立ち上がりの早い、ピンスリープモード(SM=2)、それに、タイマーで周期的にスリープするサイクリックスリープモード(SM=4、5)である。

 サイクリックスリープは、よく読むとスリープから目覚めた時、必ず親機(コーディネーターと呼んでいる)にポーリングをかけ、受信すべきデータがキューされていると、それを読みこむ。データがないとすぐにサイクリックスリープ(SPで決めた周期)に入る。受信データがあるときは起きたままとなり、スリープ休止時間 ST(Time before Sleep)パラメーターの設定した時間が来るまで起きている。

これまでサイクリックスリープ時間(SP)というのと、スリープ休止時間(ST)という2つのパラメーターが良く理解できなかったが、これで良くわかった。

これだ。このポーリングのタイミングでAPIモードのデータフレームを送れば、見事にオペアンプの電源をONにできそうだ。うまいぞ。

 しかも、親と子の通信は同期させる必要はない。親は送信データをバッファーにスタックしておくだけでよい。子機はキューされていたこのデータを受け取る。親は、このバッファーを常に監視して、なくなっていたら補給しておく。うむ、これで親子は自立して動ける。

 OFFはどうする。これは最初の子機の設定(ADコンバーター出力指定など)のコマンド列の最後にI/OポートをOFFにするコマンドを入れておく。うーむ、出来た。

まさしく机上のロジックだが、何かうまく行きそうな気がする。

100VACの検電器をつくる(9/16/09)
 電力ロガーは電流しか測らないことに決めた筈なのだが、実はまだ未練がある。電力測定用の専用ICを使えば文句なしに精密な電力量を記録できる。やってみたい。このチップADE7753はDigiKeyで¥500少々で手に入るが、これひとつに送料¥2000を払うわけには行かない。DigiKeyは発注額が¥7500を超えないと送料は無料にならない。

 ところが、DigiKeyに注文できる有力な電子機器が出てきたのである。このあいだまでさんざん遊んでいたARMプロセッサーのSTM32F103を使った開発キット、STM32Primer2である。128×160ドットのタッチパネル付液晶とそのコントローラ、マイクロSDスロットがついて¥6000台。魅力的なスペックだ。この開発キットは、最近は秋月電子でも売り出したP2364s

これが何とDigiKeyでも買えるのだ。しかも日本で売られている価格より、ほんの少しだけだが安い(DigiKeyの商品番号497-8511-ND ¥6,188)。これを買えば、送料無料の¥7500を超える!

 一瞬、発注のボタンに指がかかったが、寸前に思いとどまった。これ以上、手を広げると何がなんだかわからなくなる。あまりにも色々なものに手を出しすぎだ。 収拾不能になってしまう。BeagleBoardだってそうだ。当ブログのアクセス数では今でもトップの話題だけど、あれから全く動かしていない。マイクロウェブサーバーにしようと思っているけれど他の事が忙しくで手がつかない。

 しかし、ADE7753を買える可能性は出てきた。こいつはAC電圧のアナログ部が絶縁されておらず、デジタルとグランドが共通なのでボードを分けるなどの配慮が必要だ。それにしても無闇に100VACを怖がっているのは能がない。買える時が来た時慌てないで済むよう100VACを自由に操作できる技術を身につけておこうとウェブであれこれ勉強する。

 要するに、AC100Vはテーブルタップを使ったり、工事業者が良い加減で極性を逆にしてしまったりして、ホット側がわからなくなるから危険なのだ。ホット側がいつでも検知できるのならば、そう心配する必要はない。

 ホット側から分圧抵抗で落とせば安全な電圧が得られる。テーブルタップを経由して極性がわからなくなっても、ホット側がわかる昔使った検電ドライバーのようなものがあれば、思わぬ事故の心配はなくなる。

 昔、真空管ラジオがトランスレス全盛だった頃は、この問題は日常的な問題だった。ネオン管をドライバーに入れた「検電ドライバー」というのを覚えている。ウェブで調べてみる。何だ何だ今でもあるんだ。沢山出てきた。強電関係では必須のツールのようだ。

 ただ、検電ドライバーは柄のところに金属面が出ていて、いくら絶縁されているとはいえ触るのは少し怖かったのを覚えている。もう少し進歩していないか、ウェブをさらに探す。

 すると、LEDとトランジスタを使った非接触の検電器の回路が見つかった。トランジスタを2段接続して増幅度を稼ぎ、数メガはあるだろう絶縁を通しての微小交流電流を検知して、LEDをつける装置のようだ。

 これだ。これを作ろう。早速、ストックしてあった、コンプリメンタリなトランジスタ(2SC1815 2SA1015)を取り出してブレッドボードに組んでみる。参考にする回路のVccは、9Vだが、こちらはボタン電池(CR2032)での実装を狙ってLED抵抗を下げた(2.2Kから330Ω)回路にする。

 動かしてみる。よし、ちゃんと動いた。消費電流を測る。点灯時で0.5mA、ついていないときは、1μA以下だ。ああ、これなら電源スイッチもいらない。ボタン電池が入るケースを探す。記念に貰ったいくつもあるネクタイバーのケースがちょっと大きいが、手頃な大きさのようだ。ここへ実装することにする。Photo_4

 久しぶりの基板工作である。基板の固定はネジ止めでなくホットボンドにする予定だ。手を動かしてモノを作ることが楽しい。数時間で完成する。実装版も問題なく動いた。それにしても不思議だ。検電ドライバーのように金属に全く触らなくても、ちゃんとホット側でLEDが点灯する。

 ためしにテスターでホット側のAC電圧を測ってみる。プローブをホット側に差込むと、一方のプローブを浮かしても6V近くPhoto_5 を指した。今度は浮いているプローブを恐る恐る手で触ると90Vを指した。電気が来ている感じは全くない。そうか電流が流れなくてもこんなに電圧がかかっているのだ。思わぬ実験の結果に少し感動する(くれぐれもホット側のプローブを触らないように。感電します)。

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

2009年9月 9日 (水)

Olimex発注の合間にACの実験

Olimexに基板を発注した(9/05/09)
 電力ロガーの仕様を考えているうちに、9月も何日か過ぎてしまった。既に設計が完成しているLPCMプレーヤー2号機のプリント基板を早くOlimexに発注しなければならない。EAGLEによる設計は、本体と、Xbee用のピッチ変換基板ともほとんど完成している。あとは、160×100のパネルの分割指示をする面付け図と、発注仕様を伝えるREADME.TXTを作るのを残すだけとなっている。 

先達のウェブページを参考に、面付け図を作る。今作ろうとしている基板は本体が3 枚、ピッチ変換基板が2枚である。大きさに余裕があるので、基板の切り離しは、ディスクカッター(abrasive)を選ぶ。

 おやあ、ウェブの面付けの参考図と一枚当たりのサイズを求める計算式が一致しない。1枚を2枚にディスクカッターで切るときは、図は、2ミリづつ、4ミリののりしろをとっているが、サイズを求める式は、(n-1)*2で2ミリののりしろしかとっていない。

本家のOlimexのサイトをあたる。FAQに出ている式は先の計算式と全く同じだ。ところが、この図を参照という切り離しのでは、一枚づつのりしろを作っている。うーむ、良くわからない。

 面付け図がおかしいというだけで作成を拒否されたと言う報告もあるが、わからないものは仕方がない。とりあえず2ミリのまま出すことにする。Panel

 EAGLEの基板図(brdファイル)を念のため、もう一度点検する。不要なレイヤーを表示しているだけで拒否されると脅かされているので、DRCを何度もかけ、ドリルチェックをし、何度も表示レイヤーを見直す。

 あれ、SDカードの配線が少しおかしい。ややや、チップセレクトの線がCPUとつながっていないぞ。慌てて回路図(schematic)の方を確かめる。あれえ、回路図から間違っている。これはいけない。いくら基板図でDRCをかけてNo Errorにしても、回路図が間違っていたらお話にならない。

 泥縄に近いが、もう一度回路図を最初から点検する。その結果、USBジャックのピンアサインが逆になっていることを見つけた。それとミニLCDのI2Cの接続が逆になっている。まあ、これはソフトで解決できるにしても、事態は深刻だ。Lpcm

 完全と思っていてもこれだけバグが出るのだから、まだ潜んでいる可能性がある。ICのピンアサインを中心にもういちどチェックし直しである。まるで、答えを全部書き終わった試験の残り時間で何度も検算し、同じ答えが出てきても確信が持てなくて益々不安が拡がる時に似ている。早くOlimexに送ってしまって、楽になりたい気持ちが募る。

 面付け図と、2つのbrdファイル、readme.txtをまとめてzipファイルにする。ウェブの古い別のOlimexの発注ガイドのサイトでは、readme.txtとzipファイルを別々に送れという指示があり混乱する。これは明らかに1つの間違いだ。readme.txtなどという汎用的な名前でファイルを送られたら受け取った方は大変だ。

 出来たzipファイルを念のためこちらで解凍し、正しくファイルが解凍されるのを確認したうえ、いよいよ送付である。「行けー」という掛け声とともに、送信ボタンを押す。何い、エラーで送れない。そんな馬鹿な。ブラウザーを動かしてみる。ありゃりゃ、ネットが不通だ。

 よりによって、このタイミングで回線が切れている。しかし、何もこんなタイミングで回線が切れることはないだろう。高ぶった気分が納まらない。どうしてやろうかと頭が激しく回転していた時、ウェブが復活した。数分の回線断だったようだ。

 メールを送り直す。今度は順調だ。zipファイルを添付したOlimexへのメールは無事、ブルガリアに向けて出発した。出した日は土曜なので受け付けられるのは、あさっての月曜だろう。今のところエラーメールで帰ってこないので、とりあえずOlimexのメールボックスには納まったようだ。

交流(AC)波形を調べる(9/6/09)
 発注データは送ってしまった。今さらもういちどEAGLEを動かして図面を見る気にはならない。誤りに気がついても間に合わない。気分が悪くなるだけである。手持ち無沙汰になったので、このあいだ思いついた実験をしてみることにした。

 考えてみたら、オシロがあるのだ。50Hzの交流など簡単に観測可能な環境を持っていることを忘れていた。電圧と電流をそれぞれ観測して、家庭内の機器が、どんな負荷か調べて見ようと思いたった。特にトランスを経由したあとの電圧を見てみたい。

 電圧の測定は直接100Vからとるのでなく、トランスを経由して絶縁すれば、危険な直接接続は避けることが出来る。しかし、トランスというのは誘導負荷のかたまりみたいなもので、これを経由して波形を見るのは本来意味がない。ただ、理論的には位相差は出ないことになっている(理想トランス)。これがどの程度なのか実際に見てみようというのである。

 こんなに絶縁にこだわるのは理由がある。家庭用の100V ACは漏電による感電事故に備えて必ず片側が地面に接地されている。筐体(接地してある)などにホット側が漏れ出せば直ちにブレーカーが飛び、接地側が漏れても漏電ブレーカーが動くようになっている。

 この結果、100Vを機器に引き込んで、うっかりプラグ(電極の大小で極性はわかるようになっているが)を逆に差してしまうと、機器のグランド側が地面に対して100Vの電位差を持つことになる。触れれば当然感電するし、繊細な電子部品など触れればあっという間にこわれるだろう。

 自作の、名刺ケースに入れたトランスのACアダプター(3、6V出力)で波形を見る。うーむ、少し歪んでいる。きれいな正弦波ではない。CTセンサーをはさむ。手持ちに10W以上消費できる抵抗がないので、とりあえず1Wほど流れるよう豆球(0.3A)の負荷をつける。おお、電流波形が出た。おや、このトランスの最大容量は0.16Aだ。これはいかん。焼けてしまう。Photo

 トランスにCTセンサーが動くほどの電流は流せないことがわかった。待てよ。テーブルタップを使い、ひとつをトランス、もうひとつを別の機器に入れ測っても、その時点の電圧と電流が測れるのではないか。

 やってみた。見事に各種の機器の波形を見ることができた。トランスの電流電圧位相差は2次側が無負荷のときは180°になることがわかる。電圧(赤)はこの際無視して電流(黄)波Photo_2形を見る。

 まず、手元の60Wの白熱灯スタンドを測定する。きれいな電流波形が出た。セラミックの半田ごても抵抗負荷なので正弦波である。次は、工作照明用の32Wの電球型蛍光灯 を使ったスポットライト。こいつは予想通り、派手なパルス波形が出た。調子に乗って、身のまわりの電気器具を片っ端から測り始める。スイッチング電源のDCアダプターも、完全なパルス波形だ(電流が少ないためオシロ波形はスケーPhoto_3ルが替わっている)。

 ドライヤーをモーターだけで測る。波形が半分削られたような電流波形になる。位相差はそう激しくない(力率が高い)。いやあ面白い。ただ、電圧は同じタップ上とはいえ、器具の負荷点で測っているのではないので、何ともいえない。

まだこだわっている(9/7Photo_4/09)
 1週間ぶりに事務所に出る。メールを片付けた後、当面の仕事がないので、ウェブで非接触で100V電圧を測る手立てをあれこれ探した。まだ、こだわっている。日置という昔からある計測器メーカーが「世界初の非接触電圧計を売り出し」たという去年のニュースリリースを見つける。原理は詳しくわからないが、静電結合で双方の波形を測定し、その差を電圧とするらしい。そうか非接触で電圧を測ることは普通は出来ないのだ。少し安心する。

 しかし、よく考えてみれば、ADコンバーターの部分さえ独立させ、そこでデジタルにしてしまえば、あとはフォトカプラーが使える。基板を別にしてグランドを独立させれば、感電の心配はなくなる。あの電力測定用のIC ADE7753もアナログ部とデジタル部のグランドは共通なので、この方式をとる必要がある。

 絶縁型のADコンバーターがあればフォトカプラーも要らないのだがと、ウェブで検索してみたら、あったのである。前のICと同じ、アナログディバイス社のAD7400というADコンバータだ。アナログとデジタルの間が絶縁されている。3.5KV以上の耐圧だ。DigiKeyでも1個売りしてくれるが¥984と少し高い。

 やはり考えていることはみんな同じだった。しかし、波形のサンプリングや、二乗平均をとる演算などの手間を考えれば(面白そうだけど)、専用ICのADE7753を使うのが最も合理的のようだ。DigiKeyで1個¥495で買える。絶縁はボードを分けてフォトカプラーを使えば良い。50Hzの観測データだ。フォトカプラーは高速である必要はない。汎用品で十分だろう。

 DigiKeyで買いたいものが増えてきた。しかし、送料無料の¥7000にはまだまだ達しない。欲しいのは今のところ、イーサネットのPHYトランシーバーとこの電力測定ICだ。2つづつ買ったとしても¥2000少々にしかならない。

整流をオペアンプでやるか(9/8/09)
 Olimexからまだ返事は来ない。波形実験の次は、CTセンサーからのAC出力をDCにする方法を思案している。整流回路だ。一番簡単なダイオードをシリーズにつけた半波整流回路は今度は使えない。ダイオードはどんなものでも順方向電圧降下というのがあり、微小電圧は整流できない。電圧が高ければたいした問題でないが、こんどは数mVからDCにする必要がある。電圧降下が少ないといわれるショットキーダイオードでも0.3V、入手難といわれるゲルマニウムダイオードでも0.1V、これでは話にならない。

 やはりオペアンプで検波回路を組み、いわゆる理想ダイオード回路で、小電圧を整流する必要がある。しかしウェブに出ている回路は、スペクトルアナライザーなどに使う高周波の整流回路が殆どで、高速性が重視されており、50Hzなどという「ゆるい」対象向けの簡便な回路例がない。

 オペアンプの整流回路といえば、このあいだのリズムキャプチャーで使った、単電源オペアンプの全波整流回路があるが、これは、ダイオードの順方向電圧以上でしか整流しない。

それにオペアンプを使うとなると、今度は消費電流が心配である。Xbeeをタイマーで止めて50μA以下にしても、こちらがミリアンペアオーダーで流れるというのは嬉しくない。

 ダイオードの入力側にバイアス電圧をかけて、この区域をキャンセルし、ソフトで補正する方法も考えられるが、今度は、測定上限電圧が低くなってしまうし、バイアス電圧の変動が直接誤差になってしまう。難しいものだ。

となるとFETでオペアンプの電源制御か。やれやれおおごとになってしまった。

OlimexからPO用紙が届いた(9/8/09)
 先週の日曜日にメールでデータを送ったOlimexから待望の返事が届いた。営業日2日目である。注文の殺到しているだろう休み明けにしては早い。夜の9時に届いているから現地は午後2時ごろだ。1日半というところか。来たメールはウェブで報告されている通り、たったの4行である。

Hi
attached is your po form
Best regards
Tsvetan / OlimexOlimex_po

 噂のTsvetan(ツベタン?)君である。まあ、Best regards(どうぞよろしく)があるだけ良しとせねばなるまい。問題は、請求金額だ。どきどきしながら添付のPO用紙(Purchase Order form)ファイルを開く。良かった。追加料金はなかった。パネルの面付けはあれで合格したようだ。ドリル数が500を超えた追加料金3ユーロは織り込み済みである。Xbee基板を入れると、どうしてもドリル数が500を超え、どうせならと汎用基板のようにパッドを沢山つけて全部で800近くになっている。送料を含めて合計41.5ユーロ、約¥6000というところだろう。うーむ、Xbeeピッチ変換基板を日本で買って、4枚にした方が安かったか。Xbeebrd

 それはともかく、早速クレジットカード情報を書き込んで発注書を完成させる。支払いがカードで出来、しかも、その情報をFAXで送らせるという用心深さが気に入っている。海外との通信販売で一番神経を遣うのがお金のやりとりだからだ。

 いよいよ国際FAXである。国際電話のかけ方を、ウェブで復習する。何、頭につける番号に沢山種類があるぞ。001だけじゃないんだ。マイライン契約のときはいらないだと?うーむ、そう言えば、あのマイラインってどうなったんだっけ。我が家の電話はだいぶ前から「ひかり電話」でこのあいだKDDIの「ひかりONE」に替えたばかりだがマイラインをどこにしていたのか全く思い出せない。

 いくら読んでも、良くわからないので、一番ポピュラーそうな001010を選ぶ。FAXにカード番号を書き込んだPOをセットした。Olimexへの電話番号を入れる。数回、短い通話音がしたあと、先方のFAXのネゴシエーショントーンが聞こえた。やった、つながった。
FAXが動き出す。無事POを送り終わった。1時間足らずで処理は終了した。

 次の日、Olimexからメールが届いた。例によって本文は

fax received

この一行だけである。まあ、これで用は済んでいる。POフォームを裏側にしてFAXしたのではないかと少し心配したが、これで安心だ。まさか白紙を受け取ってfax receivedとは書かないだろう。AirMailが結構日数を喰うみたいだが、今月中には届く予定だ。楽しみである。

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

2009年9月 4日 (金)

Xbeeを使った電力ロガーの仕様を考える

気楽に作れる機械ではない(8/27/09)
 当面の目的は電力ロガーだと、前の記事で気安く書いた。Xbeeの通信テストが順調に済んだので、具体的な設計に向けて少し本格的に電力ロガーについてウェブで調べ始めた。ところが、電力ロガーというのは殆どが業務用であり、簡易なものはともかく少しまともなものを作ろうとするととんでもなく大変なことになると言うことがわかってきた。これをXbeeのターゲットにしてしまったことを後悔するが、今さら難しいからやめますというのも悔しい。プライドが許さない。それにAC電流センサーを買ってしまってる。Pict0713

 電力ロガーを作ろうと思いついたきっかけは、前の記事に書いたとおりレーザープリンターの電力量を調べたくて電流センサーを買ったことから始まる。どうせなら我が家の電力消費量を時間帯別に把握したいと、この前の温度ロガーと同じような気楽な乗りで考えていた。しかし調べていくうち、交流(AC)の場合、正確な電力の測定というのは実は非常に難しいことがわかった。

 電力とは、電圧と電流の積であらわされる。ところが交流は電圧、電流とも、直流(DC)と違って一定ではない。波形が正弦波そのままなら、ピーク値から補正して(0.707)計算できるが、負荷がモーターや蛍光灯など、いわゆる誘導負荷と言われるものは、波形が大きく乱れるだけでなく、電圧と電流の位相差が出来る。つまり実際の電力は単純に電圧と電流をかけた量にならない。区間の平均の電圧と電流が測れても、平均電力はその積にならない。瞬間、瞬間の電圧、電流の積を積分しないと平均電力にならない。

 最近の家庭では、白熱灯、電熱器などのような単純な抵抗負荷は少なく、掃除機、洗濯機、冷蔵庫、クーラーなど、むしろモーター(誘導)負荷が多い。最近のPCのスイッチング電源も誘導負荷だ。この負荷の電力を正確に測定するには、電流だけでなく、電圧も同時に測り、しかも相当複雑な演算が必要だ。

 どこの家庭にもあるお馴染みの積算電力計は、このあたりはアナログで実にうまく測定している。電圧コイルと、電流コイルが円盤をはさんでおり、双方の積が円盤を回す駆動力になるようになっている。円盤の回転数が積算した電力になる。実に巧妙な仕掛けだ。あらためて感心する。

 それでも、ウェブで「Xbee 電力ロガー」などで検索をかけると、結構、電子工作として作った電力ロガーの例を見ることが出来る。なかでも、こちらと全く同じXbeeを使ったワイヤレス電力計をプロジェクトで作られた、Fenrirさんのサイトは実際にロガーを何台も作られて現実の家庭の電力を測定し、ちゃんとした結果まで出されている。素晴らしい。

 hamayanさんのサイト「UnderPower研究所」でも、Xbeeを使ったワイヤレスの電力測定の実験が行われている。ここのサイトは、当研究所が、何かやろうとすると必ずこのページに辿りつき、以前から何かとお世話になっている。ただ、どちらも、ちょっとプロ過ぎて参考にするには高度すぎる。

 Fenrirさんのページの中で、市販されている家庭用の簡易な電力ロガー、エコワットは、電流を測っているだけで、電圧が常に100Vで、電圧と電流の位相差がない(力率100%)と仮定して電力を計算していることが確認された。これに対して、hamayanさんの機械は、100VACの電圧、電流を真面目にマイコンのADCで数波形分サンプリングし、いわゆる実効電力をマイコンで計算している。Fenrirさんのところは、なんと電力測定専用のIC(アナログディバイスADE7753)を使っている。これはDigiKeyでも数百円で買えるICだ。驚いた。こんなものにもICがあるのだ。Ade7753arsz

 さて、困った。エコワットが電流だけしか測っていないのではという推測はあたっていたが、当初、エコワットを超えてもう少し精度の高い測定をしてやろうという野心は簡単に打ち砕かれた。電圧を測らないことにはどうにもならない。100Vの電力線に何かを接続しない限り電圧は測れない。

 上記のサイトにも触れられている通り、100VのACを相手にするには相当な覚悟が必要である。白状してしまえば、非接触型のCT(Current Transformer)電流センサーを買ったとき、これで100Vをいじらなくても電力が測れると思い込んだのが電力ロガー開発の動機でもある。今更、危険な100Vのハンドリングをしたくない。LANを使った電源制御では100Vを使ったが、フォトカプラーで分離した。今度は、アナログ入力なので分離するわけには行かない。下手な設計をすれば、コンセントの差し替えだけで感電する。トランスを使えば分離できるが、トランスそのもの位相差で何を測っているのかわからなくなる(理想トランスは位相差0だが)。

 電力測定用のICと言い、ADCで波形をサンプリングして実効電力を求めるロジックと言い、激しく工作心と好奇心を揺すぶられるのだが、安全に商用電源から電圧を取り出す方策が見当たらない。既知の抵抗を入れて、そこに流れる電流をCTセンサーで測れば、非接触で電圧が測れるが、大掛かり過ぎるし精度を上げるようとすると無駄な電力を食ってしまう。それに個別の電力ならともかく、配電盤をいじるわけにはいかない(このあたりの工事は資格が要る)。

 あれこれ思い悩んでいたが、冷静になって原点に戻ってみた。そもそも電力ロガーは、Xbeeのテストベンチのために選んだようなテーマである。ここにこだわって先に進めないのは本末転倒だ。電圧を測るのは止めることにする。この際は、涙を呑んで電流だけで電力を推定するエコワット方式でログをとることにする。Photo

 まあ負け惜しみになるが、正確な電力量は料金を計算する積算電力計が厳密に測っている(はずだ)。今こちらが知りたいのは、テレビや録画機、パソコン、ウオシュレットなど最近やたらに増えた電子機器の待機電力と、プリンター、冷蔵庫などの間歇的な大電力だ。相対的な実態がわかれば目的を十分果たせると思う。

全体の仕様を決める(8/29/09)
 電力ロガー開発の大筋が決まった。電流だけしか測らないことにしたので、センサー側にXbee以外のICを載せる案はもう考えないことにする。センサーは将来複数個を、家の中にばらまいて個別の電力量を測定することを考えれば、なるべく簡単に、安価に作れるほうが都合が良い。

 問題は、子機のXbeeのADコンバーターに、手元にあるCT電流センサーを直接つないでちゃんと所定のデータが出るかどうか、オペアンプなどの増幅回路を追加しないで済むかどうかである。

 データシートを見直す。これによると、6チャンネルあるXbeeのADコンバーターは基準電圧が、2.08VからVcc(3.4V)まで、10ビットの分解能で、1ビットあたり3 ~5mVである。一方、手持ちのCT電流センサー(U_RD社製 CTL-10-CLS)はカタログによれば負荷抵抗を1KΩにすると、0.01A(10W)で4mV程度の出力があるので最小のところはこれで良い。

 しかし、最大電流の方は10A(1KW)で、Xbeeの基準電圧を越える3V以上になってしまう。ピークの電力量も知りたいので、最小測定電力はもう少し上げる必要(負荷抵抗をもっと下げる)があるかもしれない。まあ、これはいつでも調整できる。いずれにしてもオペアンプなどの追加回路は必要ないことは確認できた。

 次は親機側の設計である。どの程度の間隔で、どれくらい測定データを収録するのか、記録媒体は何にするのか、機械の操作をどこでやるのか、グラフ化などの処理をどうやってやるのか、決めなければならないことは山ほどある。

 少し大げさな言い方だが、こういう具体的な用途が決まっていないシステム開発というのは、自由な設計が出来るように見えて実は一番厄介である。好い加減な検討で仕様を決めて作ると必ずあとで色々なところで不満が出てシステムの手直しをさせられる。

 今までやったことのない新しい仕事にシステムを適用しようとする時が、だいたいこれにあてはまる。技術的な可能性に任せて色々な機能を用意しても、まず殆ど使われない。無駄になる機能が多い。要するにやってみないとわからないことが多すぎるからだ。昔のシステム開発時代の悪い思い出が頭をよぎる。

 ただ、長年の経験でこれを解決するノウハウはある。それはシステムの最終目的になるべく近いところで想像力を駆使して可能な限りの具体的なシナリオを作り、そこからシステム機能を決めていく方式である。逆から機能を絞る。

 この電力ロガーで言うなら、このロガーを使った自宅の電力測定で何か無駄な機器が動いていることがわかり、その使い方を変えて消費電力の削減に成功した、というようなことが起きると想定し、そのために必要な機能を洗い出す。

 そういう観点から行くと、1週間位つけっぱなしの測定期間は必要なように感じる。使用者は今のところ自分しかいないので、操作性は余り気にすることはない。しかし、ソフトを公開することを考えるなら、余り要素は増やしたくない。PC側にアプリケーションを持たず、通信端末からのデータのCUT&PASTEでEXCELに取り込む今までの方法で十分か。ただ、PCがなくてもスタンドアローンで親機は動いている必要はある。

 間歇的な電力も知りたいので、測定間隔はなるべく短くしたい。しかし、あまり短くするとデータ量が増えすぎて処理が大変になる。記録媒体はEEPROMでは少なすぎる。やはりSDカード位は必要だ。するとプラットホームはMega168クラスというところか。

 SDカードにグラフに必要なデータが収容できれば、SDカード経由でデータをPCに渡し、少し大きめのLCDで、間隔設定や、開始終了指示をする完全なスタンドアローン機器にすることも出来るが、これは、まあ先のバージョンの話だろう。今のところはUARTだけで良い。

 段々、仕様が具体的になってきた。最後の大きな課題がXbeeの省電力を含めた設計だ。

Xbeeの仕様を決める(9/2/09)
 Xbeeは通信を待つアイドル状態の消費電流が50mAと結構大喰らいである。間歇的に測定する場合は、その間は休止させておかないと電池の消耗が激しい。この機械が実用的な機械になるかどうかの大きな課題だ。今回のプロジェクトで当初から一番気になっていた仕様である。

 データシートを読み込む。それによると、親機側からの指示で、子機を立ち上げることは不可能であることがわかる。Xbeeのステートマシンはアイドルを経由して各ステイタス(通信、アイドル、スリープ)に遷移するので、スリープから通信ステイタスには直接移れない。タイマーを使ったスリープで節電するしかないようだ。

 親機側の省電力の要請は余り大きくない。PCの近くなのでDCアダプターが使える。しかし、将来のスタンドアローン機器を考えると、子機のスリープと同期して動かすことも考えておく必要があるだろう。

 親機と子機はなるべく独立した機能を持ち、それぞれが相手を気にしないで動くこと。それでいて子機の送ったデータを逃さないこと。いわゆるRobustness(堅牢)なシステムを目指して、あれこれ思い悩む。

 その結果、出来たのが次の仕様である。想定している部分もあるので、これで出来るかどうかは未知数のところがある。

センサー側(子機)

  • 測定間隔: 10秒ごとのタイマーでADCを起動(間隔は親機から変更可能)
  • 測定開始: 電源を入れるとただちに起動。
  • 測定回数: 0.5秒間に100ms間隔で5回測り、親機へ送信する。
  • 送信後の措置:  直ちにスリープに入る
  • Acknowledge(確認): 親機が受け取ったかの確認はしない(送りっぱなし)

データログ側(親機)

  • コマンドの指示により、受信待機
  • 子機からのデータを受け取ったあと、100ms以上データが来なければ、1セッションとみなし、データの個数の平均を計算し、平均値をそのときのRTCデータとともに、SDカードに書き込む。
  • 書き込んだ後は、ファイルをSYNCし、不測の電源断に備える。
  • コマンドの指示により、ファイルクローズ

 使用のイメージは、センサー側の子機の電源を入れて、測定箇所に置き、親機も電源を入れてログを開始する。親機は、子機からのデータを待って、データ発信があれば子機識別情報と一緒に電流データを受け取ってログしていく。いつ受け取ったデータかは、親機のRTCで日付時分秒データを登録レコードにつける。

 PCへのデータ送りは基本はSDカード渡し。UART経由でもできるように、データダンプのコマンドがいる。考えられるコマンドは以下の通り(すべて実装するわけではない)。

  1. 子機の設定変更コマンド 測定間隔などを設定した子機の初期化コマンドを子機に送る
  2. 子機の状態表示コマンド 子機の状態、子機の設定パラメータを返す(要調査)
  3. 測定開始(ファイルオープン)コマンド
  4. 測定終了(ファイルクローズ)コマンド
  5. RTC設定/表示コマンド
  6. SDカードのファイル名表示
  7. SDカードファイルの内容表示
  8. 電源を入れてから記録したレコード数の表示

 結局、Xbeeを入れても、通常のUARTを使ったロガーと同じような形になった。将来的にはXbeeを複数台入れることを考えて1対1ではなく、1対Nの通信をしても大丈夫な構造にしておく必要がある。

 こんなことを考えるうち、9月を迎えた。Olimexへの注文の作業に切り替えて、こちらの方は少しお休みすることにする。

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

2009年8月26日 (水)

Xbeeをテストしてみた

 LPCMプレーヤー2号機のプリント基板の制作が一段落した。Olimexに発注するXbee用の2ミリピッチの変換基板も簡単に出来た。あとはメールでブルガリアにファイルを送る手順を残すだけとなった。手が空いたので、ストロベリーリナックスでミニLCDと一緒に買ってあったXbeeを実際に動かすテストをすることにした。

なぜXbeeなのか(8/20/09)
 2.4GHz帯の電波を利用して機器同士を無線ネットワークでつなぐXbeeは前々から関心があり、あれこれ調べていた。こいつはユニークな形をした通信モジュールチップで、チップ同士で自律的なネットワークを組めるのが最大の特徴だ。ハードはシリアル通信機能(最大250kbps)だけでなく6チャンネルのADコンバーターまでついており、このチップひとつでリモートセンサーを構成できる。インテリジェントなのでスリープ機能を利用した省電力設計も出来る。工作心(ごころ)を刺激するICチップだ。Xbeebody

 当研究所では、電力ロガーの通信手段にしようとして購入した。Xbeeの基本的な到達距離は野外の見通しのあるところで100m、見通しのない室内で30mと言われている(900Mhz帯を使うXbee-Proという上位チップは1500mだそうだ)。

 電力ロガーは1年前、商用電源制御をLANでやったとき、レーザープリンターの電力量を調べるため、AC電流センサーを買ったときから計画しているものである。環境問題は最近の流行りで、IT業界もグリーンITなどとお先棒を担ぐ人たちもいて、当研究所は実は苦々しく思っているのだが、表向きは無関心でいるわけにはいかない。その手前、自宅の消費電力量くらい正確に把握しておく必要がある。

 配電盤が台所の裏と言う水気の多いところなので、センサーだけをそこに置きデータの蓄積や制御は別のところでやろうと考えた。制御・記録ボードを置く階が違うのでXbeeで届くか心配だったが、無線LANを使うほどおおげさなものでもないし、ここはやはり最近評判のXbeeを試してみたい。

 電子工作は、何でも良いから目的のあるものを作ることにしている。工作のためだけの工作というのはやっぱり何か空しい。無理なこじつけでも良いから大義名分が必要だと思っている。Xbeeを動かすだけでは物足りない。変なところに美学がある。それに目的があると、その対象技術の理解はないときより遥かに高まる。要件を満たそうと工夫するからだ。さらに、苦労して自分の作ったものが少しでも人の役に立ったり、面白かったと言ってもらえれば、もうこれ以上の満足はない。人間と言うのはひとりで生きていけないのだ。

 先日、「秩父山中 花のあとさき ムツばあさんのいない春」というNHKの番組を見て、えらく感動した。限界集落と呼ばれる過疎の秩父の山中でもう耕さなくなった段々畑に花の木を植え続けてこのあいだ亡くなった80才のおばあさんの淡々とした生活を記録しただけの番組なのだけど、おばあさんの顔が良い。誰かが花を見て喜んでくれることだけが目的なのだが、人生の生きがいなんてこんなものなのだろう。気持ちが純粋なのに心が洗われる。

Xbeeにも沢山の種類がある(8/23/09)
 それはとにかくXbeeである。ウェブには沢山の応用記事が出ている。Xbeeでラジコンをやったり、ペットにこれを乗せて所在確認をしたり、ロボットの操縦などに使ったり様々な応用例を見ることが出来る。

 しかし、こうした応用例は殆どが1対1の通信機能を使っているだけで、本来の、Xbee同士の通信ネットワークを構成する応用例が殆どない。Xbeeの最大の特徴であるネットワークの高度な機能とは大きな隔たりがある。その差が違いすぎてどうも良く理解できない。それにセンサーとしてのADコンバーターやデジタルI/Oの使い方が良くわからない。

 もういちど基本的なところから調べてみて、大きな思い違いがあることがわかった。世間で言われる多数のXbeeモジュールが会話し合ってネットワークを形成するシステムは、Zigbeeネットワークと呼ばれ、Xbeeハードウエアとは別のプロダクトであるということである。これには高いライセンス費用を払って、そのソフトを導入しなければならない。

 しかも、今市販されている一番安価なモジュールではZigbeeネットワークを構成できない。市販されているXbeeが何故OEM版と呼ばれているのか何となく理解できた。それでも最近のシリーズ2ではOKになったし、Zigbeeライセンスをとらなくてもメッシュ型のネットワークを組める独自のソフトウエアをいくつかの会社が発表しているようで、この世界も変動が激しいようである。

 今度のアプリケーションは、もちろんこんな大規模なシステムではなく、1対1の通信に使うだけなのだが、どうせ組み込むのなら、単なるシリアル通信の手段でなく、ネットワークと行かなくても、徹底した省電力仕様にするとか、操作性の良いロガーにするとか、何か工夫をしてみたい。調べたところでは、Xbeeの省電力機能は定期的なsleep機能しかなさそうだが、この機能だけでは管理が大変だ。センサー側をXbeeだけにするのでなく、RTCを組み込んだCPUチップを載せて全体を管理するという方法も考えられる。

 こうした仕様をあれこれ考えるのがまた楽しい。技術的可能性、自分の能力、要求仕様とのバランスを考えながら、少しづつ具体的にしていく。これが電子工作の醍醐味だ。Xbee_test

あっけなくループバックテストに成功(8/25/09)
 Xbeeの動作テストは変換基板が出来てからと考えていたが、具体的な設計を考え始めると気持ちが高まってきて待ちきれなくなり、バラックで2つのXbeeモジュールのセットを組み、ループバックテストをしてみることにした。 そもそも測ろうとしている台所の配電盤とPCルームとのあいだで通信が出来なければ話にならない。

 配線は至極簡単で、親側はブレッドボードのUSB-UARTモジュールに送信(DO)と受信(DI)線をつなぐだけ。子機はもっと簡単で送受信ピンをジャンパーするだけである。あとはそれぞれVccとGND、親側はUSB-UARTモジュール(秋月)から出ている3.3VがVccで、子機は名刺入れのケースに電池フォルダーに入れた単三電池2つがVccである。

 ATコマンドのインターフェースを持っているというので、TeraTermを立ち上げて、まず親機だけでテストする。昔懐かしい+++でコマンドモードに入るというモデムのATインターフェースだ。問題なく動いた。

 サイトの解説によれば、自分のところのアドレスを指定し、送信アドレスを相手のアドレスにすると、1対1の通信が成立すると言うので、一方を1111他方を2222としてそれぞれセットアップしようとした。

 +++の有効時間が短くコマンドを立て続けに入れていかないと、いちいち+++を入れる必要があって忙しい。ところがそのうち、+++に反応しなくなった。電源は入っているし、ターミナルもおかしくない。始めはもうこわれたのかと少し心配したが、どうもあまり何度も+++でコマンドモードにすると暫くお休みするという仕様があったような気がする。Ws000003

 ターミナルモードのセットアップでは効率が悪いので、サイトの解説どおり、開発元からX-CTUというユーティリティをダウンロードする。最近は、このX-CTUの解説をしてくれているサイトがいくつかあるのでセットアップは容易である。自アWs000002ドレスと送信相手アドレスをユーティリティで定義する。このユーティリティにはループバックテストをするアプリケーションも付いている。

まず、これでテスト開始。おおう、始まった、始まった。

 速度をデフォルトの9600bpsから38400kbpsに上げたが、全くエラーはない。調子に乗って居間に通ずる階段の上に持っていく。うむ、扉を閉めたせいか、200回に一回(99.5%)程度タイムアウトになる。さらに次の部屋へ。エラー率は変わらない。いよいよ居間を通り越して、目的の台所の裏の配電盤の横に置く。何だ、エラー率は逆に少なくなった(99.8% 500回に一回)。

 室内では見通し30mというが、木造建築の遮蔽物は電波を透過する様だ。配電盤との直線距離は天井と床板を通して、階段の上より短いからだ。

 調子に乗って、さらに階段を登り、2階にループバックモジュールを上げる。さすがにWs000000エラーが多くなる。それでも階段のすぐ上は下の階と見通しがあるので、96%ぐらいは行く。欲張って、更に奥の寝室まで測ってみる。ここからは天井、床板を2重に経由することになる。予測は当たって、ここで突然通信が切れた。電波が階段を通じて飛んでいくとしてその距離はそろそろ20m近くになる。しかし予想以上の到達距離である。

 実験の結果は上々だ。通信距離の不安は全くなくなった。これからのアプリケーションが楽しみになってきた。課題は、電力ロガーのアプリケーション要件を満足させて、いかに省電力でXbeeを動かすかである。今考えている要件は、10秒に一回程度のサンプリング、親側からのロギング開始指示、終了指示、単三電池2本で一年以上、Xbee以外の部品点数を最小限にすること、などである。

 興味がつきない。当面の目的は電力ロガーだが、Xbeeを使いこなせるようになれば色々なことが出来そうで楽しい。今まで偉そうなことは言っているが、本当は役に立つことは二の次で、アマチュアの企画の最大の動機は「面白そう」なことである。

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

2009年8月19日 (水)

CADソフト EAGLEにはまる

 およそ2 週間ぶりのブログの書き込みである。お盆より一足早く一家で¥1000の高速を利用して車で関西に帰省し墓参りをしてきた。みんな行ったことがないというので帰りに足を伸ばして国宝の姫路城を見に行き東京へ戻ったら、姫路の近くの町で大水が出て沢山の人が亡くなられ、東名高速は帰ってきた次の日に地震で不通になった。間一髪で危機を逃れるアクションスターの気分である(家族は災害を残してきたと気にしているが)。

 そんなことで電子工作は少しお休みしていた。それでも帰ってきてから、またCADソフトにすっかりのめりこんでいた。前記事のタイトルは「EAGLEの落とし穴」で、こんどのタイトルは「EAGLEにはまる」である。ソフトや電子工作の世界で「はまる」というと、このあいだのように落とし穴やバグにつかまって中々問題が解決しないときに使うが、もうひとつの意味として「ゲームにはまる」というように夢中になる時にも使う。

 まさしく今度のEAGLEは2つの意味ではまっている。考えてみたら、これまで鉛筆と消しゴムで紙が真っ黒になるほど苦労して描いていたアートワークがPC上で自由に出来るのだ。下手なゲームよりよほど面白い。

 色々癖はあるが、まともに買えばスタンダードのライセンス版で10万円近くするCADソフトである。さすがに良く出来ている。エラーチェックを厳密にやってくれるのが安心である。Lite版ながら、非営利の目的なら無料で解放してくれるCadSoft社の太っ腹に感心する。事業用のLite版は49ドルである。安い(日本では少し高く1万円前後)。しかしこれは巧妙なマーケッティングである。学生に無料で使わせれば仕事に入った時このソフトの導入を提案する可能性は極めて高い。

 ソフトも使い慣れてくると、癖のある部分も、じゃじゃ馬を乗りこなして得意になるように、使いこなしている快感につながるから人間と言うのは不思議なものである。毎晩遅くまで奮闘した結果、やっとのことでLPCMプレーヤー2号機の基板は、Olimexに発注できるレベルに達した。以下はその作業記録である。818lpcm

正確なスケールに感動する(8/13/09)
 お盆の帰省を挟んだ作業の結果、2号機の基板設計は予定したすべての部品を載せて配線率が100%になり、配線が終了した。 まだ自分で作った部品のサイズが正確かどうか最終的に確認する必要があるが、電源ソケット代わりのUSBミニジャック、電池とスイッチの接続に使うピンヘッダー、3端子レギュレーターなど残していた部品も全て載った。

 コツがだいぶわかってきた。最初から自動配線にしないことである。VccやGNDなど引き回しの多い配線やアナログ線など、重要な配線は手動で前にすませておく。このあと自動配線を指示すると、基板上下の配線をつなぐビアを開けながらコンピューターが勝手に配線してくれる。

 ここでもEAGLE特有の操作性が悩ませる。エラー状況のデータはエラーリストをクリアしただけでは更新されない。DRC(デザインルールチェック)ボタンで必ずもう一度チェック処理を最初からしなおす必要がある。考えてみたら当たり前のことなのだが、最初は何度配線の位置を変えても、エラーリストからエラーがなくならず頭を抱えていた。

 さらに部品の緒元は、部品を載せた後、変更できる部分と出来ない部分がある。容量や抵抗値は自由に変えられるし、シルク印刷の線の巾などはボードエディターで変更できるが、パッケージの形を変更するのは部品エディターまで戻る必要がある。パッケージデータを変えた後、updateコマンドで基板エディターのところまで変更してくれるのは嬉しいが、時々前のデータが残っていたり(tNameが2重になる)、ひとつのシンボルデータに何種類もパッケージがある部品(コンデンサーなど)は、変更した部品とは別の部品までパッケージが変わってしまったりして一筋縄ではいかない。

 抵抗をすべて縦置きにしてスペースを稼ぎ、コンデンサーをノギスで測りなおして正確な小さなパッケージデータにしたりして、部品をつめ、間を配線していく。基板の端やドリル穴の近くは配線禁止区域が思ったより広くなかなか許してもらえない。Lpcm2

 何とかNo Errorになったので、出来た基板を印刷する。スケールは1。実際の部品を印刷した実体図の上に載せてみる。おおお、正確だ。これは素晴らしい。表面実装のSDカードソケットとUSBミニジャックのピンがピタリと納まっている。感動ものである。2連ボリュウムのピッチ違いもこれで確認できた。部品エディターを開いて、ピッチを正確な2ミリピッチにする。ミリとmil(1/1000インチ)の換算がややこしい。印刷を切り抜いてケースに入れる。ちゃんとサイズが合っている。1号機と並べてみると、そのコンパクトさが実感できる。12

 LCDパネルがケースと、さらにLCDのピンヘッダーが裏の電池フォルダーとぶつかることがわかった。細かく位置調整して、LCDパネルをボードに合わせる。少し位置を変えるだけであちこちがclearanceエラーになるのでそう簡単ではない。しかしEAGLEにだいぶ慣れてきて、変更が早くなった。ときどきripupコマンドが動きすぎて全部の配線をはがしてしまい、面食らうが、これもripupするところを慎重に選べば必要なところだけはがれてくれる。

  3回、ファイルをセーブしてスナップショットを作りながら、微調整する。ほぼ望みの配置と配線を終えた。それにしても、このアートワークは際限がない。やり始めると時間のたつのを完全に忘れて夢中になってしまう。配線も良く見ると自動配線は無駄が多い。電源やアナログの部分の結線は太くしたいし、ビアを少なくする方法が見つかることもある。見るたびに不満なところが出てくる。きりがない。

  最初はとんでもなく遠い道に見えたが、何とかなるものである。印刷した実体図を見て感慨にふける。2層でも結構な配線量だ(48×74ミリ  パッド数132 ドリル数156)。手配線では苦労しただろう。あとはOlimexへの注文のための処理を残すだけとなった。

最初はStopMaskエラーが900以上(8/17/09)
 出来た、出来たと得意になっていた鼻は、しかし次の作業ステップで簡単にへし折られた。Olimexに発注する制限事項をこのウェブサイト(ここは詳しくておすすめ)でチェックし、所定のレイヤーを指定したところ、何とStopMaskエラーというのが917個もあらわれたのである。

 レジストを塗らないハンダ面にシルク印刷をしているよというエラーなのだが、標準ライブラリの部品はほとんどが元からそうなっている。こちらで置いた部品名などがパッドにかぶっているところはむしろ少ない。部品ライブラリを全部直さなくてはならない。すぐに何とかなるものではない。気の遠くなる話だ。あわててウェブに助けを請う。

 ウェブには余り情報はなかったが、EAGLEのバージョン5からの問題なのだそうだ。単にシルク印刷がそこにされないだけで、Olimexがこれで発注を拒否したり追加料金をとったりすることはないように思われるが、確証はない。

 しかし、エラーがあるままOlimexに発注するのは何となく気分が悪い。幸い、Olimexは8月一杯休みをとるので発注できるのは9月になってからだ。ひとつひとつの部品ライブラリのシルク印刷の部分を直して行く必要があるが、時間はたっぷりある。それにこういう手仕事は嫌いではない。

 今日も真夏の炎天下でテニスをして体はばてているのだが、気がついてみると、PCの前で、コツコツ、部品をとりだしてはシルク印刷のレイヤーを分解してエラーを無くす作業をしている。 標準ライブラリに入っているパッケージの中には既にStopMaskエラーを考慮したシルク(tPlace)になっていてパッドを横切るラインはtDocuという別のレイヤーになっているパッケージがあったりして混乱する。どうも混在しているようだ。

 しかも部品ライブラリとOlimex指定ルールの実際の基板とではStopMaskの大きさが違うので部品エディターの段階では確認できない。ひとつ部品を更新しては、実際のボードエディターでエラーをチェックしていかなければならない。結構大変である。

 それでも、部品をとりかえてはDRC(デザインルールチェック)をかけ、少しづつでもエラーが少なくなっていくのを確認していくのは楽しみなものである。それに、この作業の過程でレイヤーの構造がかなり理解できた。tDocuとtPlaceの2つのレイヤーを持っている部品は、始めこれが何のためかさっぱりわからなかったのだが、この作業のおかげで完全にその目的が理解できた。

 要領がわかってくると作業のスピードは速くなる。 900あまりと言う気の遠くなるエラー数は、2日余りで100前後に減らすことが出来、今日(8/17)、遂に0になった。万歳! これで安心してOlimexに基板制作を発注することが出来る。

 調子に乗って、このあいだからの懸案、Xbeeの2ミリピッチの変換基板もついでに作ってOlimexに発注することにする。160×100のOlimexの発注基板は、4分割して3枚をLPCMプレーヤー基板、残りの1枚を2分割して、Xbeeのピッチ変換基板2枚にする予定だ。

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

より以前の記事一覧

その他のカテゴリー

ARM | AVR | EAGLE | Xbee | 電子工作