趣味のページ

●雑記のメニューに戻る


■PCインターフェース付き簡易電力計の実験(予算1000円製作30分) 2011年5月28日

※ただし、「誰にでも簡単に自作できます!」ってわけじゃないよ。
 もっとも、それなりに丁寧に説明してるので、原理を理解する気が有れば簡単なはず。

●さて、消費電力が気になる季節でございます。
関東あたりだと今年は特にね。

そんなご時勢とは実は全く関係無いというか、
ホントは今年の正月に作ったのだけど
忙しくて放置されてたネタでございますというのが今回の簡易電力計。

一応は大抵のPCに接続できるので
デスクトップ上でリアルタイムに消費電力を鑑賞(?)できる。

 こんな感じ

だから測定が目的というよりも、むしろ「意識」に訴える方向での省エネグッズというカテゴリーを目指してみた。
…ごめんなさい、ウソです、そんなこと考えて作ってません。


さて、このような機器を作る場合、普通に構成を考えれば、

  センサー + マイコン + USBとかのインターフェース + 電源回路

こんな感じになるのだろうけども、
例によって(?)手抜き機器として試してみた。

これだけ。
センサーとPCインターフェース(笑)の全景。
絵を描き起こすとこんな感じ。

穴の開いた黒い物体が電流センサーで、コイツは秋葉原のマルツで900円くらいで買ってきた。
それと抵抗が1本。10円くらい?
んで、あとは見ての通りの廃材。余ってたステレオミニプラグのコードとかそんなの。
というか、むしろ一番のハードルは半田ごてを使えるかとか、そのあたりか。

要するにセンサの出力をPCのサウンドのライン入力端子から取り込む作戦なのだけども、
いい加減な作戦の割には意外にまともに動いてくれている。まぁあくまで「意外に」だけどね。
  あ、でも、接続相手がノートPCだと、ちょっと面倒かも(後述)。

ちなみに自分はPCのサウンド回路とかチップとか詳しい人じゃないので、
所詮は「CODECチップのデータシートとかを眺めながら作ってみたよ!」とか
そんなレベルなので、ご了承ください。


 *  *  *

ちなみに。
全然関係ない話で恐縮だったりするのだが、
以前にもちょっと書いた通り、豊島区の健康診断で
メタボ宣告を食らってしまったオイラなのですが、
「とりあえず毎日体重計に乗りなさい」と言われたのだけど、
なんかそれだけで順調に体重が減ってきている。

ふしぎふしぎ。

いや、たぶんホントに何もしていないわけじゃないのだろうけども、
常に数字を意識する生活ってのは、同じようでちょっと違うんだろうな、とか
そんな事を今日も体重計の上で実感しているわけだ。

そんなわけで、先にも書いたけども
エコワットとかワットチェッカー等の「電力測定器」と
今回のような「リアルタイム電力モニター」では
技術的には、まあ似たようなものなのだけども
省エネに至る(人間側の)メカニズムはまるで違うような気もする。

ま、オイラは単におもしろそうだから作っただけだけどさ!

恒例の意味なしラクガキ。

■電力計の簡単な説明
電力計とは言ったけども、正確には交流電流計でございます。
交流電流センサーの信号をPCのオーディオ入力(ライン入力とか)経由で取り込む。
まぁ、概ね写真の通りの構造なのだけども、先の実体配線図的な絵をもう一度。

…正直、工作するよりも絵を描く方が時間がかかってます、ってくらいの単純な代物である。
電流センサはU_RD社のCTL-6-P-Hを使った。
あまりメジャーとは言えない部品なのだけども、とりあえず秋葉原のマルツさんの店舗でも扱っていた。
交流出力なので、2つの端子に極性等は無い。

で、写真の通りドーナツの穴みたいなとこにACコードを通す必要があるのだが、
つまりACコードを一旦切断して、センサの穴を通して、また繋げなくちゃいけないのがちょっと面倒。
しかも結構な電流が流れる部位だから、正直オイラもあまり切断とかしたくなかったりするんで、
実はクランプ型のCTL-6-S32-8F-CLの方が良いかも。
こちらは共立エレショップさん(日本橋だっけ?)で扱っている模様。 ちょっと高いけどね。
特性は若干異なるけども、おおむね同じように使えるはず。

また、ACコードの半田付けを回避する手段としては、ねじ止め式のプラグ(電源コード用平型プラグ)とか、そんな手も。

抵抗器は100Ω。普通のカーボンの1/4Wとかでよいのだけども、
これが意外に結構重要な部品でありまして、
もしこの抵抗が外れるようなことがあると電流センサーが高電圧発生器に化けたりするような、
そんな制御棒的存在がこの100Ω。
まぁ、普通にしっかり半田付けすればよいだけの話なんですが、一応注意。

【詳細】
で、この電流センサーと言うのが、実はトランスの一種でありまして
一般にはCT(Current Transformer)などと呼ばれる部品ざんす。
このCTL-6の場合には巻数比1:800なので2次側(この場合にはセンサーの出力端子)には
1次側(この場合には100VのACコード側ね)の1/800の電流が流れようとする。
例えば図中のコーヒーメーカーの消費電力が1000Wであるならば、
1次側には10Aが流れるわけなので、センサー出力側には12.5mAが流れようとする。
このとき100Ωの抵抗に発生する電圧は
E = IR = 12.5mA × 100Ω =1.25V
となり、この1.25VがPCのライン入力へ突っ込まれることになる。

なお、上式で抵抗器が∞Ωであると、E=∞Vとなってしまう。
もちろん実際に無限大になるわけは無いが、それでも結構な高電圧が発生してしまう。
先の「抵抗器が外れると危険」というのは、このこと(半分くらいウソ説明だが)。

あとはミニプラグ付きのコードの結線だけども
アプリの方はモノラルとして入力しているので、
ケーブル側も、RとLの両方をつなげてモノラル状態にする。

ハードウェア(笑)はこれでお終い。正直、部品とか工具を準備する時間の方が長いぜ。
参考までに、熱収縮チューブを被せる前の状態。

もちろん熱収縮チューブなんて洒落たものを使わなくても、ビニールテープでぐるぐる巻きでも大丈夫。
…って、すぐに糊でベタベタになるわけだが、あれは。

ぶっちゃけココの電位はPCと同じなので感電するわけでもないし、大電流が流れてるわけでもないし、
この2端子間をショートしたところでせいぜい10mAくらいしか流れないしなので、
付近に危険なモノが無いのであれば、実験レベルとしては裸のままでも特別危険というわけでもないのだが。



■アプリ側
とりあえずこれがサンプル。適当なフォルダで実行すればOK。
ダウンロードはこちら。ソース(Visual C# 2008)はこちら。
※この実行ファイルは32bit環境用です。

基本的には何も難しいことはしてなくて、
単純にWindowsデフォのオーディオ録音デバイスから入力して、その信号の大小を表示してるだけでございます。

ただし
▲DirectXが必要ッス。
  なので、このへんにある"DirectX エンド ユーザー ランタイム"をインストールする必要がある。
  使用しているのがDirectX9なので、Windows7とかだと標準では入ってなかったりするんだ。
▲NET Framework3.5が必要ッス。
  こちらはWin7ならデフォで入ってるらしい。

※いずれもインストールは自己責任でお願いします。
つか、コードはとんでもなく単純なので、自分で書き直せばDirectXとか不要よ?

なお、動作確認はWindows7 SP1とXPのSP3で行なってます。

■意外に面倒なこと
今回のアプリは電流センサの信号を「音声」として入力するわけだけども、
このオーディオ入力の設定に関しては、全てWindows側の管理下となっている。
つまり、入力端子の選択も、レベル(音量調整)も、ミュートの有無も、
全てあらかじめWindows側で正しく設定する必要がある。

が。

サウンドに関係ありそうな設定項目って、あちこちのプロパティに点在してるのでよくわからんし、
あと、ライン入出力の実際の電圧とかね、正直あんまり気にしていなかったぜ。
つーか、知らないのはオイラだけじゃなかろう、普通は知らんだろう。

そんなわけで、PCのライン入力回りを整理してみた。
ライン入力から数々の難関を突破して、A/Dコンバータにたどり着かなければならない。


※説明用なので、内部回路を正しく反映したものではない
※ちなみにWindows7の例で説明しております。

で、図中1〜3の各部の注意点を説明。

1.入力電圧が大きすぎるとダメ

ライン入力の電圧が大きすぎると波形がクリップしてしまい正しい入力ができない。

         本来は滑らかな正弦波なのだが、上下がクリップしている波形
こうなると、次項の「ライン入力のレベル」を下げてもダメだ、
図の通り、レベルをいじる回路はずっと後ろなので、
最初のここでクリップが起きてしまうと、後から何をしようと手遅れとなる。
図中にもある限界値の「1.6V」はRealtek ALC888のデータシート上の仕様なのだけども
5V動作のチップとしては標準的な値だと思うし、
同じように5V電源で動作する限りは、他社のCODECチップでも似たようなものだと思う。
ただ、そうでもないPCも存在するかもしれない

例えば、今回のセンサーは1000W時に1.25Vrms出力となるが、この程度ならば(1.6Vより低いので)概ね問題ないはずなのだけども、
そうでないPCもあるかもしれんから注意してね、という話。
怪しいときは波形を確認したほうが良い。
上の図のようにA/Dコンバータの限界(±32767)以下で早々にクリップが起きてるようならば、
それはライン入力電圧が過大である可能性が高い。


※なお、説明用の波形キャプチャ図にはWaveSpectraというフリーウエアを利用させていただいております。

2.ライン入力のプロパティ

まずレベルだ。
図の通り、Windows上ではレベルを0〜100の範囲で調整できるのだけども、
これが単なる目安でしかないようなアテにならない値で、
いくつに設定すればよい、というモノではなさそうなので
結局ここは実際にセンサをつないだ後に調整する必要がある(後述)。
とりあえず半分くらいにしておく。

あと、このプロパティにはミュートボタン(スピーカーの絵)があるのだが、
うっかり見落としやすいから注意かもしれん。勿論、ミュートはしない

もうひとつ。同じく「聴く」のタブの中に「このデバイスを聴く」という項目があるが、
コレはOFFだ。
もちろん、電流センサーの「音」をPCのスピーカーで楽しみたい人はONにすべきだが
結構なレベルで入力されるのだから、スピーカーとかがぶっ壊れないよう注意。

3.ライン入力をデフォ(既定のデバイス)にする

こういうことだ↓。

これらのパスが全部通らないと信号がA/Dに届かないのだけども、
うーん、図にまとめたら案外シンプルだな、ちくしょう(笑)。
まあいつもの事ながら、オイラ自身が一番勉強になった。

なお、ノートPC等ではそもそも「ライン入力」が存在しないかもしれないので、
その場合にはマイク入力を使用することになるのだけども、基本的な構造は同じだと思うので
適当にいろいろやってみてくり。あとマイク入力は感度が高すぎるかもなので、その辺も注意が必要(後述)。

今回の話とは直接は関係ないのだけど。
ライン入力が1.6Vrmsを超えると歪む(クリップする)という仕様って、良く考えたら
普通のオーディオ機器の、例えば大抵のCDプレーヤーとかの出力って2Vrmsもあるのだから、
コレをPCへつなげると厳密には歪んでしまうわけだな、
正直今まであんまり気にして無かったよ。


あと、一部のPCで
「既定のデバイス」が内蔵マイクに固定されてしまっていて
どうにもならん機種もあった。こうなるとお手上げ。
これが例外なのか何なのか良く判らないのだけどもね。単なる故障かもしれない。

まぁ、そんな事もあるみたいなので
センサ部を作る前に先に、PCのオーディオ回りをテストしたほうがよさげ。
テスト方法は簡単、センサーの代わりに適当な信号をライン入力へ突っ込んで、
サンプルアプリが応答するか見てみればよい。
例えば、PCのライン出力とライン入力をケーブルで直結して、適当に音楽でも再生すればいい。

 ただのレベルメーターと化している電力計

先にも説明したとおり、このサンプルアプリは基本的に単なるレベルメータと同じなので、
それが音楽だろうが交流信号だろうが
お構いなしに反応するはず。

■作ってみたとする。動いたとする。でも感度調整が必要だ。
先にも書いた通り、「ライン入力のレベル」を調整する必要がある。

と言っても、アテになる基準があるわけじゃないので、
例えばウチの場合だと700Wのコーヒーメーカーを基準(仮)とした。
ある程度消費電力が大きくて連続動作する電熱器系がよいと思うので、他には電気ストーブとか、そんなのか。
電気ストーブの正確な消費電力を知るには、例えばどの家にでもある積算電力計を使えばOKという方法を
一昨年かその前あたりに書いてるので、適当に探して読んで。

で、700Wのコーヒーメーカーで測定したところ、ウチのPCでは「500W」を表示した。
なので、上図のプロパティの「レベル」を調整して、適当に「700W」と表示されるようにすれば良い。
これで済めば、それでいい。
しかしこのレベル調整画面、見かけは100段階くらいなのだけども、実質32段階とかじゃないか?ってくらい
細かい調整が出来ない。だから、ここは粗調整だけと割り切って、微調整はアプリ側で行うことにした。

そんなわけで、アプリの起動時のコマンドラインの引数で補正値を指定できるようになっている。
…指定は出来るのだが、だからといって粗調整が不要というわけではないのは原理を考えれば明白ですな。

で、例えば700Wと表示すべきが720Wとなっている場合。20Wの微妙な誤差分が、どうしてもレベル調整側では合わせ切れない、そんな場合。
これは表示値を0.972倍にすればよいので、コマンドラインに
  pwrchk.exe 0.972
と指定する。そんなノリ。この補正値が0.5とか1.5とか、そんな1から大きく外れるような状態ならば
それは何か原因を確認したほうが良い。

■PCのオーディオ入力の周波数特性
さて、注意事項。
自分も大してデータを持ってるわけじゃないのだけど、
一部のオーディオ入力デバイスの周波数特性はかなり癖があるみたい。
我が家の例だと

デスクトップPCのライン入力
デスクトップPCのマイク入力
松下ノートPCのマイク入力

ちなみに測定にはこちらを利用させていただきましたでござる。

さて、この場合に気になるのは松下ノートだ、50Hz付近は随分と特性が下がっている。
まぁ大抵は問題ないのだけども、例えば高調波を多く含むような負荷を測定する場合には
高調波がことさら強調されることになり、誤差が増大すると思うので、
場合によってはそれなりに注意が必要。
※なお、この松下ノートPCの「フラットとは程遠い周波数特性」は、おそらくマイク入力時に聴きやすくなるよう
意図的につけられたものだと思う。


あと、マイク入力は一般的に(ライン入力よりも)低い電圧でクリップすることが多い。
というか、マイク用に高感度寄りに設計されてるから、どうしてもそうなるのかもしれん。
これもはっきり言えないのだけども概ね0.1Vが限界、という例が多いような感じなので(もちろん例外もあった)
その場合には電流センサの出力もそれに合わせて1/10くらいに下げる必要がある。
簡単には100Ωの抵抗器を10Ωに変更すればよいのだが、
信号レベルが下がった分だけPCによっては表示値がノイズっぽくなるかも。


■アプリ側について
ログを取ってファイルに吐いたりとかネット越しで云々といった機能は何もないです。
とはいえC#なので、何やるにしても楽よ。
サンプルアプリのソースも公開しておいたし。←結局投げっぱなしにしたいらしい。

実はこのサンプルコード、ン年前に作ったものなのでちょいと古いDirectX9を使ってる。
えーと、DirectSoundですな、どうなんだ、まだ使ってていいのか?などと調べてみたら、
原則非推奨なんだけども(今回のような)Waveフォームオーディオのキャプチャーアプリなら良いよ、と
そんなニュアンスみたい。
まぁ、もっと良い方法もあるかもしれん。自分で調べて(笑)。

ちなみにコード自体はDirectX SDK(August2007版)に入っていたCaptureSoundサンプル
(\Samples\Managed\DirectSound\CaptureSound)のコピペなんで、
詳しくはそっちの本家本物を参照してください。

SDKのサンプルと若干異なるのはスレッドを使用していない点。
今回のような「たまに測定して表示を更新する」ような用途だと
そもそも普段が「録音を取りこぼし続けている」状態でかまわないので
別スレッドを回して常にバッファの子守をさせる必要がない。

※細かいことだけども、今回はバッファのCapturePosとReadPosも無視している。
本来ならばCapturePosとReadPosにはさまれたエリアの何処かに最新データと
周回遅れデータの境界があるのだろうけども、ご存知の通りAC100Vは繰り返し波形なので
バッファサイズを波長の整数倍に設定すればほとんど問題は起きない。はず。


■電力値の計算
サンプルを見ての通り、今回は単純に平均値を求めて表示しています。
まぁ実際には交流なので、絶対値を求めてから平均値ですな。
で、いまさらですが
 電力 = 電圧 × 電流
なのだけども、今回センサーは電流だけしか見ていない。
もう一方の電圧については測定していない。
測定していないんだけども、きっと日本だから100Vだよ!そうにちがいないんだよ!
…そんなノリですな。

ちなみにホントは自乗平均を計算したほうが良いかもしれんのだけども、
なぜ「その方が良い」のかという説明は、それはそれは面倒なのでパス。
わかる人は自分で計算すればいいと思うよ。
でも、あれですよ、市販されている真面目なクランプメーターとかでも
上位機種でもない限り大抵は平均値表示ですよ、そんなもんですよ。

上位機種の例→横河CL155 クランプテスタ(交流電流)\22,000←うわぁ

あとコードを見ての通り、4410サンプル分について平均を取っているわけですが、
サンプリング周波数が44100Hz(CDと同じ)なので、つまりこれは1/10秒(100mSec)の平均という事になります。
この100mSecというのは、東日本の50Hz(周期20mSec)の波形のちょうど5波分であると同時に
西日本60Hzの6波分に相当します。つまり、どちらの地区でも整数倍。
整数倍でないとマズイ理由を知らない人は、波形の絵とか描いて考えてみるとたぶん分かるはず。
ネット検索に頼らなくてもわかるはず。

●ちゃんと測れてるのか?
そもそもが簡易型なので、基本的には「目安程度」の精度でしかないのだけど、
それを踏まえた上で。

・まず原理的に。
先にも書いたとおり、コレの名目は電力計なのだけども、実際には電流計。
だから電源電圧が変動すれば、そのぶんだけ誤差となる。
例えばウチのコンセントの場合だと、昼間は98Vなんだけど深夜には102Vくらいになったりするので
その結果、PCの消費電力は夜間の方が低めに表示される。実際の消費電力は同じなのだけど、
電源電圧が高いぶんだけ電流のほうは少なくて済むので(スイッチング電源搭載機器は大抵そうなる)
そんな誤差が生じる。このへんの事情はエコワットとかも同じなのだけども。
あと、実効値ではなく平均値を表示しているのだけど、というのは先にも書いたとおり。

さらに力率の問題もある。身近な例だと、古めの蛍光灯(銅鉄型の安定器のヤツ)なんかは理屈どおりに力率が悪くて、
実効電力の1.5倍ほどを表示することもある。もっとも、基本的には電流計なので、これはこれで正しいのだけども。

 銅鉄型の安定器の例

・センサー部。
今回の回路(CTL-6-P-Hと抵抗100Ωの組み合わせ)だと、
実は小さな電力での誤差が大きめなので注意。
ちゃんと確認したわけじゃないけども、1W以下の表示は半分アテにならないと思っておいたほうがよさげ。
大電流側については問題ない。センサー部に関してだけ言えば20Aくらいまでは大丈夫。

一方、クランプ型のCTL-6-S32-8F-CLを使った場合は、
小電流側の誤差は小さくてなかなか良好なのだけども、逆に大電流側が弱い。8Aくらいが限界。

・あとPC側のサウンド、つまりライン入力なのだけど、
このあたりの電気回路に関しては精度的な問題はあまりなくて、
むしろ入力の過電圧で波形クリップとか、そっちの方がやばい。
今回は1000W(10A)時を例に計算しているけども、
高調波が大きめの機器(例えば古いPCとかエアコンとか)だと尖頭電流も結構大きくなるので、
実際には計算例ほどの余裕は無いと考えたほうが良い。


そんなこんなで、
・だいたい1000Wくらいまでは測れるけども、マトモなのは800Wあたりまでか。
・小数点以下(1W以下)の表示はアテにならない。
・電圧を無視してるので、環境によっては数%の誤差が出る。
・力率が悪ければ、そのぶん誤差も大きくなるよ。
てなところか。

あとは校正ですな、校正がテキトーならば当然精度もテキトーになる。気合次第。

例えば、電圧の安定している深夜にデジタルテスターで電圧を確認しながら
電熱器系の負荷をつないで、それ以外の電化製品は全部OFFにして、
積算電力計(電力メーター)を基準に校正すれば、まぁ、これは気合全力の場合だけども
これはかなりの精度まで追い込めるはず。

ただ、今回の電力計に絶対精度を求めるのは無理だし、
そのような趣旨じゃないということは一番最初に書いたとおりでございます。

個別に機器同士を比較するみたいな用途ならば、それなりの価格だけども、ワットチェッカーとかを使うのが正解。
一方、「今日は暑いから電力も食ってるなぁ」とか、逆に「涼しいのに誰が電気食ってるんだ?」的な意識を
喚起するのが今回の電力計。そんな違いかのう。

もちろん「違い」なんて、後から考えたこじつけなんですが!


●ちなみに我が家では、どういうわけかWindowsMediaPlayerが消費電力20Wとバカ食い状態だった。
しかも、ずーっとコンスタントに20W消費する。その意味では地味に悪質。
冷蔵庫だって休み休みだし、エアコンだって年中フルパワーじゃないのに。

ウチの場合は結構作業中なんかは音楽かけっぱなしなので、計算したら年間約60KWh相当であった。
つまり夏場のエアコンの設定温度を1度上げるよりも、プレーヤーソフトを乗り換えるほうが省エネ。
ま、あくまでウチの例の話ね。

とはいえ、PCの消費電力ってのは、そんなに毎日変わるものではないので、
実はリアルタイムで眺めていても面白いものでもないし、
一通りの対策をやっちゃうと、あとはあまり努力のしようが無い。


そんなわけで、毎日変化して意外性があって楽しいのは
やはり家全体の総消費電力
だ。
これは配電盤のブレーカーの根元で電流を測定すればよいのだが、

クランプ型だと簡単。
えーと、場所が場所だけに、もし試すのならば自己責任でお願いします(←免罪符)。
ちなみにこの写真の例では、配電盤のケーブルの外径が8mmだったので
CT(センサー)として1サイズ上のCTL-10-CLS(穴径10mm)を使用している。

このCTL-10-CLS、やや高価だったりデカイのがアレなのだけども
小電流から大電流までソツなくこなせる上に、
万が一の高電圧発生(先にも説明したヤツ)を抑える保護素子も入っていたりするので、
今更さら言うのもなんだけど、オススメである。
ただし巻数比が1:3000なので、組み合わせる抵抗の値を加減する必要があることだけ注意。
計算方法は先にも書いたからここでは説明しないけど、
例えば10A程度まで計測したいのなら330Ωくらいだろう。
また、せっかくブレーカーの根元にクランプするのであれば、100Ωと組み合わせて
30Aくらいまで測れるようにしておけばいいと思う。


ちなみにワンルームとかに多い配電盤の例だと

こんな感じ。
回路的には図中の1〜6のどこにクランプしても同じだし、
そもそもセンサのクランプで何が起きるわけでもないのだけど、
基本的には保護装置は有る方が良いわけなので
アンペアブレーカーと漏電ブレーカー両方のご加護が期待できる5か6に
クランプした方が良い。
さらにケーブルが白い側が(一般的には接地側となっているので)安全といえば安全。

が。

ウチの場合は様相がちょっと違っていたのであった。

見ての通り、ブレーカーからケーブルが3本も出ていやがる。

これは単相3線式(通称は単3)と言われる結線で、説明し出すとキリが無いので省略するけど
大雑把にはこんなかんじ。

エアコンとかIH機器用に200Vコンセントがある家ならば、まずコレなのだが、
仮に200Vコンセントが無くても、ワンルームでもないかぎりコレじゃないだろか、いまどきは。
とりあえず、大抵はブレーカーに書いてあると思う。

 「単3」と書いてある例

※ちなみによく分らないなら手を出さないのが無難ではある、と言っておくよ、一応。なんたって200Vほど来てますんで。
※工場などで似たような3本線を見かけるが、あっちは三相3線という、また違った結線だったりするので注意。

この場合
  消費電力[W] = (黒のケーブルの電流[A] + 赤のケーブルの電流[A]) ×100V

で求まる(簡易的には)。
それぞれのケーブルの電流は別々に測定しても良いが、リアルタイムに見たいならば、ちょっと贅沢だけどセンサを2つ用意するのが簡単。
「和」なので、単純に直列つなぎでOKなのだけど、方向(極性)には注意。
以下、CTL-10-CLSを使用した例

これで200Vの機器まで含めて全体の電力が測定できる。
たぶん。
…いや、うちは200Vの機器が無いので、確認できんのじゃ。
理屈の上では測れるはず。

 電子レンジとかエアコンとかいろいろ稼動した状態

なお、もともとこのアプリはセンサーとしてCTL-6(巻数比1:800)を前提としてるので、
CTL-10-CLS(巻数比1:3000)に流用する場合にはコマンドラインに補正値3.75(=3000/800)前後を指定する必要があるが
ソースをいじったほうが良いかも。
測定上限はPC側のライン入力電圧の上限で制限される。たぶん30A前後。

あと、この例では2つのCTの出力を単純に直列つなぎで加算しているけども、
せっかくライン入力は2chあるのだから、そのLとRに個々のCTを別々に繋げば
当然個別にモニターできる。はず。

そんな感じで、家屋全体の消費電力をリアルタイムに鑑賞(?)できるのだけど、
センサー二つで4000円くらいになるので、純粋に電力測定だけが目的ならば
正直、割に合わないかもしれん。


それにしても、今回の電流計は随分と長い説明を要している。
まず大雑把におさらいすると、

 アプリの表示値= ACコードに流れる電流値 × CTの巻数比 × 抵抗値 × ライン入力のレベル設定(OS側) × 補正値(アプリ側)

この式だけ見ると、たとえばCTの巻線比がいくつだろうが、抵抗値がどうであろうが、
最後の補正値でいくらでも辻褄を合わせることが出来るように見える。

が、実際には途中にいくつか関門があるわけだ。

 
※電圧・電流は実効値

こういう図は何と呼べばよいのか。世間じゃこんな風にグラフやらラクガキはごっちゃにしないよなぁ。
じゃあスダ図とか命名してやるぜ(嘘)。

まぁ、見ての通り随分と抽象的な図なのだけど、要するに「壁」が2箇所ある。そんな風に描いてある。
これらの壁に引っかからないように、うまくレベルを加減する必要があるのだが、
上限を避けるためにレベルを下げすぎると、下からはノイズがジワジワと迫ってくる。そんなイメージだな、この絵は。
こんな風にまとめておくと、仕様とか部品を変更する場合に再チェックしやすい。例えば

 ・もし、このままの回路で「30Aまで測ろう」とするとどうなるか?
 ・もし、巻線比が1:3000のCTに変更するとどうなるか?
 ・もし、レベル調整を下げても波形がクリップしているならば、激突が起きている壁はどちらか?
 ・もし、ライン入力の代わりにマイク入力を使うとして、その上限が0.1Vならばどうなるか?

そんなのも、こんな絵があるとイメージしやすいと思うのだけど、どうか。
というか、オイラはこの絵が無いと、文章でだらだら説明されても
全く頭に入らないわけだが、皆様はいかがお過ごしでしょうか。


どうでもいいが、一体全体このネタとか、需要とかあるんだろうか。
ま、無くてもいいんだけどね(笑)。
その意味では去年の湿度センサーのネタも相当に微妙なのだけども、
どういうわけか「湿度センサー」で検索すると、わりと上位に来ることがあって、なんか申し訳ない気分。
ウチの記事なんて読まずに普通にTDKのセンサーユニット(湿度がDC0〜5Vで出力される便利なヤツ)を買ってくればいいはずなのだが。
わざわざHS-15などという生センサーなんて使わなくて良いのだが。

あ、「生センサー」ってのは自分が勝手に呼んでるのだけど、まぁ、ニュアンスはわかるよね?
ズバリ物理現象そのものみたいな、プリミティブなデバイスね。
使いやすくするための変換回路とかインターフェースとか無いヤツね。
そいえば、今回のCTも「生センサー」だよな。


■CTの中身の構造なんだけども
これは結構単純ではある。
つか、手作りしたことがある。

 手作りCT

なんかの周辺機器についていたノイズフィルタ(というかフェライトコア)に
ポリウレタン線(≒エナメル線)を巻いただけ。

そんなわけで、とても単純な構造なのだけども、
動作原理は見た目ほど単純ではなかったりする。
例えば上の写真の手作りCTは、構造こそ市販品と同じだが、
全くもってまともに動作しない(笑)。
それっぽい波形は出てくるものの、全然CTとしては動作してくれない。

となると、これはもう電気磁気学の基本に立ち返って、
真面目に計算したり設計したりせざるを得ないわけだ。
そんでまたポリウレタン線を延々と巻き巻きしたりするわけだ。

 懲りずにCT

このあたりは結構大変なのだけど、
これはこれで上手にまとめれば面白いネタではあると思う。

教科書上の電気磁気学というのは、一応大学時代に勉強したし単位も取ったけども
正直、興味なかったし嫌いだったのさ。
もちろん、卒業とともに速攻で忘れちまったし(汗)。
なぜかといえば、電気磁気学が解ったからと言って、すぐに何か面白い物が作れるわけじゃないというか、
少なくてもあんまり思いつかないわけだ。
鉄心を切り出してトランス作るとか、ちょっと敷居が高いし、そもそも地味過ぎる(笑)。
JAVAとかC#ならば勉強したら速攻で何か作って遊べるけど、それとは対照的。
せっかく勉強しても実際に何も作らないから、結局は教科書の中だけで終わってしまう。
勉強はしたけど、あまり役に立った気がしない。
そんなのが電気磁気学だよ、たぶん。
掴みが弱いんだな。

…と、そう思ってたのだけど、CTを作ってみたら、
これは結果が見えて(つまり実際に成功したり失敗したりして)面白いし
磁界・透磁率・磁束密度・電磁誘導・電気抵抗率あたりの話が全部入りなのでネタとしてよさげ。

まぁ、オイラは先にも書いたとおり、大学卒業とともに電気磁気学はスッポンポンに忘れてしまった人間なので
残念ながらCTネタも何も書けないけども(正しい解説を出来る自信が無い)、
しかし、あの苦手だった電気磁気学が「ネタが有る」というだけで、全然印象が変わるわけだ。

ネタは大事よ。

ガッコの電気磁気学の先生も、
立派な教科書を書くのは勿論大切なんだけども、
同じくらいの労力をネタ作りにかけてみてもいいんじゃないか
などと思うのだけども、どうか。


■(2011年6月20日追記)

   電圧センサーも追加した電力計も作ってみた→「逆襲の電力計」編へ