遠隔簡易電力監視システム     H24.5.27       kunioのHPへ

 先般製作した遠隔気象観測システムは、4ヶ月程度たち順調に動作しており、次の課題として電力も同様に監視するシステム
を作ることにした。(最終的にはこれらを統合したものを目指す)
 前回は、XPORT+無線LANコンバータを使ってしてデータを送信したが、その完成後に単体でそれと同等の機能があり安価な
XBee Wifiがあること知ったので、今回はXBee Wifiを使ってデータ送信した。
 電力の測定は、昔作ったディジタルリレーのアルゴリズムを元に計測。
   
  AC回路は、取り扱いを間違えると感電や火災の危険がありますので、十分注意して下さい。
  また、屋内配線を取扱う場合には電気工事士等の資格が必要です。

システム構成
 冒頭に述べたように、データ送信部の構成は前回とほぼ同じだが、xport+無線LANコンバータからxBee wifiに置き換えた。
 電圧入力は、200V回路対応で230/6Vトランスを用いて抵抗で分圧、電流入力は3000/1Aの変流器を用いて抵抗で電圧に
 変換・分圧してA/D変化入力とする。
 
    CPU MEGA88P    8MHz動作(外部クリスタル使用)
    LCD SD1602HUOB   HD44780互換  16x2行
    電圧入力 VB 1,5/1/6 トランス 230/6V  AD変換比 0−256V/0-1023
    電流入力 CTF-50A  変流器 3000/1A   AD変換比 0−51.2A/0-1023
    XBee Wifi+アダプター   本体とアダプター(ストベリーリナックスピッチ変換・3.3Vレギュレータ・USBシリアル端子付)
    
    測定仕様 有効電力 ±0−11,000W程度(最大電圧220Vとして)、無効電力 ±0−9,999Var
           電圧 0−230V(トランス仕様) 分解能 0.1V、 電流 0−51.2A  分解能 0.01A
 
回路図


 XBeeは3.3V動作のためアダプター内のレギュレーターで5Vから3.3Vに変換し電源供給
 CPUは5V動作なので、シリアルデータは3.3Vに変換する必要がある。CPUへの入力は3.3VでもH判定できるので問題ない
 CPU出力については、電圧変換しないとXBeeが壊れる。当初抵抗分圧を考えたがXBeeがプルアップされており思うようにLレベル
 が認識されなかった。そこでこちらの方の製作を参考に、XBee側でプルアップされていることを利用してLのみ認識させるように、
 小信号ダイオードを逆向き接続しL出力時にXBeeの端子をGNDレベルにプルダウンするようにした。
 電圧・電流入力は、トランスおよび変流器出力を適切に抵抗で分圧し、AVCCの1/2電圧を基準にして正負に振らせる。
 A/D入力部のコンデンサは複数パラに接続して100Hz程度の帯域制限。

XBee wifiの設定
 
まだ、Xbeeの情報はやや少なめで一部しか理解できていないが、こちらの方を参考にX-CTUを使ってUSB接続したPCから設定した。
  ・X-CTUは、インストール時および最初の起動時に最新バージョンを確認しバージョンアップする。
  ・バージョンアップ後は、最新のバージョン名を選択する必要がある。
    以降も同様だが設定変更後は、保存(write)しないとreadや電源活殺で戻ってしまう。
  ・無線ルータへの接続は、Active scanでルータを検索・選択しパスワードを入力する。
  ・IP addressing modeをDHCPとして、readを押すと正常にルータに接続出来れば、SSID(ルータ名)やMy Module IPaddress等が表示される。
  ・その後、IPアドレスを固定するためIP addressing modeをstaticにして、My Module IPaddress を任意に設定変更する。
  ・シリアル通信の設定は、今回処理上通信速度band rateのみデフォルトの9600bpsから19200bpsに変更した。
   以上まで設定して、電源活殺して再立ち上げして設定値を確認する。  
    

有効電力等の測定アルゴリズム
  
  
以前製作したディジタルリレーのアルゴリズムを基本に計算させる。
  
  @電圧(電流)の実効値
    振幅二乗法
  
=V+Vm−90 ある値と90°離れた値の二乗が、絶対値の二乗にとなる。
    
A有効電力(無効電力)
    これについては、解説した文献はなかったが以前
ディジタルリレーの なかで、電圧と電流位相差が90度以内か否か演算(位相差演算)
    す計算式を見た時、有効電力の演算に使えると思ったので、今回それを使った。
    位相差演算(2つのベクトル差90°以内判定):
直角2サンプル法
    
|・||cosθ=Vm・Im+Vm−90・Im−90=k 
k≧0・・・90°以内、k<0・・・90°以上

      k値は、まさにP=V・I・COSθ[W]
       
    無効電力Qも同様に 
    Q=||・||sinθ=Vm・Im+90−Vm+90・Im [Var] 

    以上から90度サンプリングした連続した電圧(電流)値が2つ(ディジタルフィルタ処理のため180度前値が必要で元データは4サンプリング)
   あれば、P・Q・V・Iの瞬時値が算出できる。   

計測データ処理フロー
  前記の測定アルゴリズムを元に、データの処理フローを検討した。
   ・まず、1つのデータを計測するためにサンプリングデータが電気角の90度毎必要なため、これを基準に割り込み処理を行う。
    割り込み周期 1/60S×90/360=1/240=4.17ms (サンプリング周波数240Hz)
   ・1割り込み4.17msでは、すべての処理をこなせないため割り込み周期毎に分割して処理する。
   ・1秒間に何回か測定しその平均をその1秒の測定値とし、表示およびデータ転送処理を行う。
    平均処理が簡単で処理分割数が適当なるよう、データ測定回数nを20回、処理分割数mを12とした。 1秒間:20x12=240回(Hz)

  分割処理内容   
   n=0−19 m=0−3(4回)  A/D入力 (4サンプリング)
   n=0−19 m=4         A/D入力からVIPQの瞬時値算出
   n=0−18 m=5−10     無処理
   n=0−18 m=11       A/Dテーブル初期化(次のデータ取込の前処理)    
   n=19    m=5         VIPQの平均値算出、LCD表示更新
   n=19    m=6         Pデータ シリアル送信
   n=19    m=7         Qデータ シリアル送信
   n=19    m=8         Vデータ シリアル送信
   n=19    m=9         Iデータ シリアル送信
   n=19    m=10        無処理
   n=19   m=11        データ初期化(n=0,m= 0に戻る)

   
その他の処理等
 ・データ転送は基本的に前回と同様の処理。
 ・処理の中で最も時間がかかるのは、シリアル通信処理。ボーレートが9600bpsでは割り込み周期を超えるので、19200bpsとした。
 ・電圧と電流でサンプリングするタイミングのズレがあり、更にアナログフィルタで帯域制限をかけているので、A/D変換する位相が大きくずれ
  ので、入力される電圧と電流に位相差が生じてしまい正確な電力計測ができなくなるので、それを補正するよう電圧と電流のサンプリング
  間隔を微調整している。(位相遅れが大きい方を遅くらせることで、同相側に調整する 抵抗負荷でQ=0を目標)


ヘアードライヤーの電力を計測中



PCでtera termを使ってデータを受信



気象観測システムとの統合
 先に作った気象観測システムに統合した。
 2つの無線LANからの送信データを、ひとつのPC上のVBAでソケット通信処理できるか不安がありましたが、ソケットオブジェクトを2つ作り同時
 に走らすことが出来ました。
 工夫したのは、データがそれぞれ1秒周期でシリースに取り込むため完全に同期して受信すれば問題ないが、どうしてもズレがあり周期が遅い
 方のデータがバッファに貯まってしまいます。そこで、周期が早い方はバッファを確認しデータがないときはスキップさせています。
 
気象観測システムに我が家の電力をグラフに追加表示させています。 200/100V単三方式なので、ブレーカの両側の線に電流の和が入力
 されるようにCTを2つかませ、電圧は代表の100Vで計測しています。
  

  
ソース取込VBAソフト

あとがき
 電圧電流位相差の微調整ができていないが、ほぼ期待どおりの電力計測ができたと思います。
 但し、理論的には誤差は生じないが、電圧・電流入力回路が適当でノイズの影響もあり、計測値がややふらつく。(取り込むときの平均化処理で誤魔化す)