Tag Archives: 電気

Permalink to single post

F-PLUG (消費電力モニタ) をLinuxで使ってみた

大地震からも日が経ち、節電という言葉もだんだん聞かなくなりつつあるなか皆様いかがお過ごしでしょうか。

なんて偉そうな事言いつつ今回のはあまりそれとは関係ないんですが、前々から会社のいろいろな機材 (サーバーとか) で使ってる消費電力のモニタとかやりたいなぁと思っていたりして、ワットモニターUSBとか、スマートコンセントとか電力計の類をいろいろ調べてたんだけど、先週とある電気量販店でF-PLUGなるよさげなものを発見した。

F-PLUG

F-PLUG 近影

  • 一口 15Aまで
  • Bluetooth (RFCOMM)
  • この手のものにしては比較的安め (約5000円)
  • 電力に加えて、温度、湿度、照度まで図れる
  • リアルタイムの電力計測が可能、また一時間ごとの積算値もF-PLUG側で記録される

とまぁこんな感じです。これを使って、いろいろとデータをとってLinuxサーバーでモニタすればなにかいいことが起きるに違いないということでこれを購入。ソフトウェアは公式にはどうやらWindows用しかないようだったけど、とりあえずBluetooth (RFCOMM) ならLinuxでも比較的簡単に何とかなるだろうという目算。

現在値取得までは比較的容易に…

とりあえず/dev/rfcomm0を使えるようにするまでの接続はググって出てきたところ (→Rasperry PiにF-PLUGを2個繋いでみた 等) を参考に。まぁ普通のRFCOMM機器の接続手順です。

あとどうやらOBDNマガジンなるものにはfplug_for_linuxなるソフトウェアが掲載されているようで、とりあえずそれを使えば現在値の取得 (電力値[W]と温度・湿度・照度) まではできた。

しかし機能が足りない

リアルタイムでのいろいろな値をモニタするものやりたかった事だけど、一番やりたかったのは積算の消費電力量 [Wh] を出すこと。上記のものではそこまでの機能は提供されていない。

まぁ一秒ごとに電力値を計測して足していけば積算電力もだせるだろという話もあるけど、なんか無駄な感じするし、そもそも二秒おきぐらいにしか計測できないので誤差がけっこう出る気がして気持ちが悪い。

ということで作る。上記は簡単な小物作りには面倒なC言語で作られていたので、結局全部Pythonで書き直すことにした。

幸いなことに、(というかなぜか?) データの仕様がまるっと公式ページ (F-PLUGメッセージ一覧) に掲載されていた。正直かなり見づらい上に若干不正確  (というか舌足らず?) だったりもするけど、こういうものがあるだけでかなり助かる。なんかもともと業務用のなんかの製品だったりするのかな。

まぁということでひたすらこのコードを打ち込む。

成果物

とりあえず制御用ソフトウェアをせっかく作ったので、現段階までにできたものを公開しときます。

まだUIはありません。作ってません。pyfplugモジュールにある FPlugDevice クラスでF-PLUGの操作ができます。ほとんど全ての機能が使えると思います。

ちなみにDebian 7とGentoo Linux (ともに64bit) で動作確認してます。

ところで精度は・・・?

それは分かりません。かなりざっと不真面目にしか確認してないです。

  • 温度: 壁掛け時計の数値が23℃の時、F-PLUGの計測値は27.0℃
    • マシンに近かったり、F-PLUG自体たぶん発熱してるから高めになった?
  • 湿度: 壁掛け時計の数値が55%の時、F-PLUGの計測値は湿度は42%
    • 温度が高い分湿度が下がってるのかも
  • 照度はほかに計測機器がないから不明
  • 電流:
    • うちの安物クランプメーターで1.4 (A) 前後のとき、F-PLUGでは170 (W) 前後
    • 同様に10.90 (A)のとき 1063 (W)
    • 電圧100 (V)、力率1.0として計算すると、それぞれ21%、2.5%ほどの差になる
    • しかしそもそもこのクランプメーターも怪しい

これじゃ (精度計測としては) 参考にもならないですね。ただまぁこの感じからすると大きく外れた値はないので、とりあえずつくったプログラムはある程度正しく動いてるんでしょう。

他の所の報告ではそもそも個体差がけっこうたったりして、それなりの誤差があるようです。

怪しげなクランプメーター

怪しげなクランプメーターで計測するの図


今後…

  • かんたんなコマンドラインのUIつくる
  • Zabbixとかで使ってみる
Permalink to single post

コンデンサの単位がAh(アンペア・アワー)に代替できない理由

  • コンデンサの容量の単位→μF(マイクロファラド)
  • リチウム電池とか→mAh(ミリアンペア・アワー)

マイクロとかミリとかはいいとして、なぜコンデンサはAhで示されないのか

ちょっと考えてみたけど「なんかの次元がたりないのかもね〜」程度の
曖昧な考えしか出来なかったので、真面目に考えてみる

要するに・・・

この問題は、なぜF(静電容量)とAh(放電容量)が換算できないのか
という問題に帰着する。

単位の次元

違いを考えるために、とりあえず愚直に単位の次元を考えてみる。

静電容量について。定義から、
C = AsV=kg \cdot m^2\cdot s^3 \cdot A

ここから導くと

  • F = C \cdot V^{-1} = (A \cdot s) \cdot ( {kg}^{-1} \cdot m^{-2} \cdot s^{-3} \cdot A^{-1} )

次に、放電容量について。次元のみに着目すると、h(時)=s(秒)つまり、

  • Ah=A \cdot s

Fに比べるとAhはやけにシンプル。まぁ単位その物が原始的な次元になってるからね。。。

さて、二つを比較してみると差は明らか。Fの後半のややこしい部分、つまり電圧部分の次元が、Ahには丸ごとなくなっている。

つまり、電圧が与えられていないと、FとAhは変換できない、ということ。

・・・分かったような、分からないような。

真面目に考察してみる

とりあえず、エネルギーを計算して考えてみる。(大括弧内は単位)

まずは、リチウム電池について。
電池の放電容量をD[As]、出力電圧をVbat[V]とする。この二つの値は、電池の種類によって固定される。
放電時間をt[s]とすると、P=IV[W=AV]なので、

  • Pt=DV_{bat}

Pt=E[Ws=J]なので、

  • E=DV_{bat}

となる。変数は無い(すべて電池の定数)ので、最大エネルギーの値は完全に電池依存。

次に、コンデンサが充電されたときのエネルギーを考える。
コンデンサの容量をC[F]とする。これはコンデンサの種類で固定。で、あと充電電圧Vcap[V]が必要。
高校物理のとき(だったっけ?)に習った、静電エネルギーの公式E=1/2CVを使う。
Q=CVなので、

  • E=\frac{1}{2}C{V_{cap}}^2

Cはコンデンサの定数だけど、Vcapは充電時の電圧なので、電池だけでは決定されない、という意味で変数ということになる。

要するに・・・(結論)

  • 電池の放電容量の値→完全に電池依存
  • コンデンサの静電容量の値→コンデンサと充電電圧に依存

要するに、コンデンサは充電時の電圧によってエネルギー容量が変わるから、コンデンサを決めただけでは放電容量は決められない、ということだ。

電池の出力電圧は電極(と電解液?)に依存する、っていうのは化学で習ったとおり。つまり、電池はどうやって充電しても、出力電圧は一定になる。だから充電電圧には依存しない。

このように、化学変化を利用する電池と、物理現象のみを利用するコンデンサ、という根本的な原理の違いから、結局のところ単位の違いが出てくるわけだ。

換算式

無謀にも換算式を考えてみる。

上の式、E=DV_{bat}と、E=\frac{1}{2}C{V_{cap}}^2から

  • \frac{1}{2}C{V_{cap}}^2 = DV_{bat}
  • D[As] = \frac{C{V_{cap}}^2}{2V_{bat}}

As(アンペア秒)をAh(アンペア時)に変換すると

  • D'[Ah] = \frac{C{V_{cap}}^2}{7200 \cdot V_{bat} }

(D’: 放電容量[Ah]、C:静電容量[F]、Vcap:コンデンサの充電電圧[V]、Vbat:電池の公称電圧[V])

ただし、コンデンサと電池では電圧の取り出し方がぜんぜん違う。なので、電圧の変換とかにかかるロスやら電圧降下やらで、一概に比較することはできないようです。
あと電池も理想状態のみで計算しているし。

計算してみる

秋月に売ってた電気二重層スーパーキャパシタ。120F、最大定格で使うと2.5V。
これを公称3Vの電池で換算してみる。

<br /> \begin{align} D & = & \frac{C{V_{cap}}^2}{7200 \cdot {V_{bat}}} \\ & = & \frac{120 \times 2.5 \times 2.5}{7200 \times 3} \\  & = & 0.0347 \end{align}<br />

答え: 34.7mAh。

んー。。。こんなもんなのか。

ていうかここまで書いて何だけど、何気にこの記事の内容は自信ないな・・・。
絶対考え方間違えてる気がする。誰かに見てもらいたい。