Arduino 電力量計 DIY 15 Newマシーン用のソース公開

スケッチ(ソース)の解読がしやすい為に電力計測の基本機能に特化して公開します。
・起動時にNTPにより時刻を取得します(インターネット環境は必須です)
・割り込み処理を使用して連続計測を行います(余剰・電圧計測なし・幹線計測なしも考慮)
・1秒毎に計測加算しますがリアルタイム表示は各自で変更してください
・温度計測は1分毎に行います(不要ならカット)
・1分毎にSDへデータ保存します。停電が有った場合は復帰後に計測を継続します。
・WEBサーバー機能によりリアル値の表示や時刻毎電力やPCへのデーター転送を行います。
・電力計測用のCTは6個+幹線で記述しています。変更は簡単です。
・PC(太陽光発電状況管理ソフト)へのデータ転送については現行フォーマットは未対応です。
※版権は放棄していませんが個人使用はOKです。
※調整:電圧パラメータを調整して電圧を合わせて下さい。その後電力を調整して下さい。

Arduino 電力量計ソース エンコード unicode (UTF-8) で表示して下さい
拡張子 txt を ino へ変更して使用して下さい

お願い
参照したらコメントを残して下さいな

基本設定

1.ipアドレス
 #define Lip 112 // web local ip 111:通常 112:TEST
 IPAddress ip(192,168,0, Lip); // 固定IP

2.CT数
 #define CT 6 // CT数(パワコン実装数)

3.ADCピン指定
  const byte Tpx[Txm]={ 2, //00 Z ゼロV基準電圧
      3, //01 V1 系統電圧1
      4, //02 V2 系統電圧2
      0, //03 CTa 電力売買1
      0, //04 CTb 電力売買2
      5, //05 CT0 幹線電力
      8,9,10,11,12,13}; //06 CT1..6,7..9 CT パワコンetc個別電力

  計測する場合はADCピン番号を指定(0は計測しない、CT数分指定)

4.HEMS 指定
  #define HEMS 0                 // HEMS運用 適用電圧を指定
  const byte KCTv[CTm] = { 0,0,1,2,0,1,2}; // 適用電圧 0..CT

  0:200V 1:100V 2:100V (単相3線)

5:センサー係数調整
  const float KVT = float(AREF/512.0/(180.0/540.0)/5.1036*100.0);
                          // 電圧センサ係数 100.0v-->5.1036v *(180/540) / 2.5 * 511 AC100
  const float KCT0 = float(AREF/512.0*3000.0/ 32.0);
                          // 電流センサ係数 幹線 (公称変流比:3000:1)
  const float KCT1 = float(AREF/512.0*3000.0/190.0);
                        // 電流センサ係数 PWC (公称変流比:3000:1)
  const float KCTu = (1.0);
           // 電流センサ係数 売買

  使用するトランスやセンサーに合わせて調整


関数

analogReadH()    ADCアナログデジタル変換の関数(前半)
ISR(ADC_vect)    ADCアナログデジタル変換の関数(後半)

TimeUp()       1秒毎に割り込みが発生

SecCalc() 1秒毎の電圧・電流・電力の算出および集計

DayUpdate() 1日分を累計(未処理)

OndoSet()       温度計測

dateTime        SD 日付設定

TdayDsp()       起動時に日付・時刻の確認用(表示機器に合わせて変更) 

Net_init()        ネット環境初期化(DHCPを使用する場合はコメントを復活)

sendNTPpacket
NTP_Call()
setTday
NextDay()
              NTP処理および日付処理関数

TBLinit         SDカード保存ファイルの初期化(NULLファイルの作成)
TBLSave        SDカード保存ファイルの書込み
TBLLoadHx       SDカード保存ファイルの読込み(時刻情報) 
TBLLoadMx       SDカード保存ファイルの読込み(分情報)

web_server()      照会処理
              IPアドレス/       電圧・電力等のリアル情報
              IPアドレス/J      電圧・電力等の時刻別情報(当日)
              IPアドレス/Jyymmdd 電圧・電力等の時刻別情報(指定日yymmdd)

Arduino 電力量計 DIY 14 とりあえずNewマシーンの開発状況

変更内容が多かったので、ソフトはほぼ全面改訂になっている。

電圧・電流・電力計測が出来るようになった。
汎用性も考慮して電流計測はMEGAで11個までは出来そうです。
余剰や家庭用パワコンを9台接続して50KWソーラを構築している用途にも使えるでしょう
自分的にはパワコン6台できれば支障はないのです。

表示をどうするか
TFT表示が手軽なのだが、未使用のLCDモジュールもあるし

SDデータ保存はデータ形式も大変更なので新規作成

どれから着手するかな~

エレキジャック 40文字×4行 LCDモジュールを使ってみる
ArduinoでキャラクタLCDに文字を表示させる
wsnakのブログ

Arduino 電力量計 DIY 13 とりあえずNewマシーンの仮接続

nmc.jpg
開発の必要性が薄いからなかなか気が重くて進まない。
やっとこさ手持ち部品を使って仮接続。
CT接続は1個ソケットが不足しているしCTも1個しか無いから
とりあえずソフト改版用の仮接続でしょうか
目が・・・・細かい作業は嫌だ~~
今回はソケットもケチってイーサネット シールドへ直付け半田(悩んだけど・・・)

まだケースとか表示部品を決定していない。

この環境下で
・電圧計測(100V x 2 = 200V x 1)
・電流計測( x 1)
・電力計測( x 1)

今回の電源電圧計測は電圧検出トランスを使用しないで
Tr100.jpg
100円ショップの充電器のトランスを使ってみました
手持ちの180Ωの抵抗を3個使用して1/3に分圧しています。
当然ダイオードも再利用です。(発光ダイオードもどこかで使えるかも)
CT接続は前回と同様オーディオ等に使われているRCA端子を使ってます
RCA端子のメスはスカパーチューナーからの再利用です。あと1個・・・・
オーディオケーブルはたくさん余ってますから使わなくてはね

多分これで良いとは思うのだけど
ソフトで検証予定です。

回路などはArduino 電力量計 DIY 6 まとめを参照して下さい
抵抗値が異なる位です。

2/10追記
いやはや算出方法やデータ保存方法の変更、余剰対応等汎用化を考えていたら
ソフト全面改訂になってしまった。こりゃ大変だ!!

Arduino 電力量計 DIY 12 作り直してみようかな

Arduino 電力量計 は稼働中で太陽光発電状況管理ソフトで運用しているが
メモリー不足の関係か、ある一定期間使用すると動作がおかしくなるからリセットする必要がある
電圧計測値の保存形式もケチケチ設計しているから100V以下の保存もできない

稼働中の機器はそのまま運用しておきたいから
別機器を作らないといけない

ソフトの書き換えは当然必要なのだが
ハードの作りも変えようと思う

計測地点で電圧・電流波形、時刻別・日別・月別。年別発電量をディスプレイ表示しているが
必要ないんだよね。波形はほぼ正弦波だという事は確認できたしね。
必要なのはその時点の電圧・電流・電力の表示なのです。
稼動している確認になるからね

電力量はPCで見れるから、遠隔地で見るとしたら測定地点と同じ瞬時情報ですかね。
これもPCやスマホで見れてるしな~

データも数十年分保存しておく必要もないから1ヶ月分もあれば充分すぎる
今回のハードは少しケチって作るかな
トランスも安い電源トランスでやってみよう、付けたくない人は電圧測定無しモードも考慮します。
この方が取り付けが楽だからね。電流測定用のCTは必要だけど難しくないからね。

とりあえずは現行機器の置き換え用で作りますが
応用編として太陽光発電でPC連携したい方、家庭内電力管理HEMTを安価DIYできます。
要は計測した値をどう集計管理するかはソフトの問題ですからね。

さて電圧・電流波形をADCしていて中性線(ゼロ電位)の計測値が結構ぶれるのです。
計測の1セット間で±511に対して約±10ふらつきます
オシロで見れればどんなぶれ具合かはハッキリするのですが
この為に測定範囲が狭くなります、予定より早く飽和してしまいます。
特に系統電圧が112V以上になるという想定外になったから計測に支障をきたしました。
この辺は想定設計と現実とのギャップなのでしょうね

今回はある程度のマージンを考えます。(精度は荒くなるけど)

少しでもぶれを少なくする為に
ノイズ対策について(PIC AVR 工作室)
analog referenceピンとGNDピンの間に0.1μF程度のパスコンを挿入すること。
これによって参照電圧に乗っているノイズを軽減することが出来ます。
←効果を確認済み(2/14)

これは適用するとして、AD変換中CPUを休止モードはこの間に他の処理をしているから無理だな

トランスの半田付けはしたけど・・・それから先が進まない

Arduino 電力量計 DIY 11 Android でメッセージを受信する方法(im.kayac.com経由)

Arduino MEGAを使用した野立て用の発電モニターの製作

発電状況や異常時の通報を受け取る

im.kayac.com経由でiPhoneへ通知が届く様にしているのだが、Android でもメッセージの受信をする方法

データの流れ: Arduino --> im.kayac.com --> iphone & Android


Android で Xabber google talk を サポートしたアプリ(無料)を使用します。

※ Xabber の受信画面
ZTE k1

【設定方法】

kayac で アカウントの登録
ログインしたらアカウント設定

ZTE k2
設定追加になるので iphone にも通知が届きます

ZTE k3
このアクチベーションコードを Xabbe から送信する。

Xa0.jpgXa1.jpgXa3.jpg
Xabberの設定です。
1.メルアドの登録
2.kayacの登録(Gmail)
3.kayacへアクチベーションコードの送信
これで受信できると思います。

ZTE k4
kayacのアクチベーション完了の確認画面
黄色はXabberに登録したメルアドが表示される

NEXT≫
プロフィール

お気楽どん

Author:お気楽どん

最新記事
最新コメント
ありがとう
気が向いたら
にほんブログ村 ライフスタイルブログへにほんブログ村 その他趣味ブログ 電子工作へ にほんブログ村 環境ブログ 風力発電・太陽光発電へ
天気予報
カテゴリ
検索BOX・タグ一覧
リンク