Arduino 電力量計 DIY 17-3 色気を出して大失敗!

3692.jpg

LCDがI2C接続できるようになったので、
ついでに小さな箱へ組込み変更したまでは良かったのだが・・・
LCDをパラレル接続していたボードを壊してI2C接続をした。

すると、何故かアナログ入力が正常に動作しなくなった!
割込み処理している関係だと思うのだが・・・
LCDのI2C接続ライブラリーの影響だと考えられる
困った。

違いを調査中なのだけど
分からない
温度計測とLCD表示はちゃんと動作する
割込み処理中の I2Cライブラリーによる温度計測は稼働しているが
LCD表示とは相性が悪い

また、パラレル接続アダプターを作るかな~~~(参った)

ちゃんと動作確認してから、壊さないといけませんね

Arduino 電力量計 DIY 17-2 iphone でメッセージを受信する方法(LINE Notify) 続き

LINEへメッセージ転送するサーバー と RSSサーバー の2つに分離
LCDを付加して10秒ごとに発電量や温度などを表示する事にした
3683.jpg
1個で処理しているとハングアップする時が有るので安全重視で機能分割しました。

CPUボード自体は安い(505円-->780円と値上げ)のだが
電源アダプターやLCDが余分に必要なのが出費かな?
メモリーに余裕が有りすぎて持ったいない!

それにしても電力量計のArduino MEGA のメモリー一杯一杯状態は
今回ちょっと修正しただけで時折誤動作する事も有りシステムが安定するまで余分な検証作業が掛かった

今後は ESP8266 を使うことになる。
アナログ入力が1個しか無いので複数の入力が必要な時にはADCのICを併用する必要があります。

Arduino 電力量計 DIY 17 iphone でメッセージを受信する方法(LINE Notify)

Arduino 電力量計 DIY 16 の続き(まとめ)

処理の流れ

Arduino 電力量計(Arduino MEGA + イーサネット シールド)
↓ http
転送サーバー(ESP8266)
↓  https
LINE Notify

iphone (LINEアプリ)

Arduino イーサネット シールドは https 通信がサポートされていないから 直接 LINE Notify へアクセスする事が出来ない
そこでメッセージを転送するローカルサーバーをESP8266で作成した
(転送だけだと思ったいないから RSS通知機能を兼務している)

他にも消え去るアプリも有るのだけど、最重要アプリの対策が出来た事は大きい
これでiOS11を使う事も出来る

3664.jpg 3663.jpg
旧:im.kayac.com    新:LINE Notify

ブラウザーでの入力(デバッグ)
// http://192.168.0.254/?token=1234&message=5678           呼び出し方

メッセージ転送サーバー

const char* token_pv   = "*******************************";
void onRoot() 
{
String token="";
String message="";
int i;
       String msg = "<html><head><title>ESP8266WebSerber</title></head><body><h1>Hello</h1>";

for(i=0;i<server.args();i++)
        {    msg += " " + server.argName ( i ) + ": " + server.arg ( i ) + "<BR>";
       }
msg+="</body></html>";
        server.send(200,"text/html",msg);

for(i=0;i<server.args();i++)
{
if    (server.argName(i)=="token"  ) token  =server.arg(i);
else if (server.argName(i)=="message") message=server.arg(i);
}
if (token  =="") token  =token_pv;
if (message=="") message="メッセージ無し";
sendLineNotify(token,message);
}
void sendLineNotify(const String  token,String message)
 {
const char* host = "notify-api.line.me";
  WiFiClientSecure client;
  //LineのAPIサーバに接続
  if (!client.connect(host, 443)) {
//    Serial.println("Connection failed");
    return;
  }
//  Serial.println("Line Connected");
  //リクエストを送信
  String query = String("message=") + String(message);
  String request = String("") +
               "POST /api/notify HTTP/1.1\r\n" +
               "Host: " + host + "\r\n" +
               "Authorization: Bearer " + token + "\r\n" +
               "Content-Length: " + String(query.length()) +  "\r\n" + 
               "Content-Type: application/x-www-form-urlencoded\r\n\r\n" +
                query + "\r\n";
  client.print(request);
 
  //受信終了まで待つ 
  while (client.connected()) {
    String line = client.readStringUntil('\n');
    if (line == "\r") {
      break;
    }
  }
  
  String line = client.readStringUntil('\n');
client.stop();
//  Serial.println(line);
}


呼び出す側

const String token_pv   = "*********************************";
IPAddress ImTrLine(192,168,0,254);     // no DNS)

void Im_put(String str)
{
  String buf="";
  for(int i=0;;i++)
  {
      if (str[i]==0) break;
      if (str[i]==' ') buf+="%20"; else buf+=str[i];
  }
 String par="GET /?token="+token_pv+"&message="+buf+" HTTP/1.1";
 if (client.connect(ImTrLine, 80))
   {
      client.println(par);
      client.print ("Host:");
      client.println(ImTrLine);
      client.println("Connection: close");
      client.println();
      client.stop();
   }
}



Arduino 電力量計 DIY 16 im.kayac.com サービス終了(困る)

kayac.png
現在のアプリが32ビット版でIOS11からは使えない事は知っていましたが・・・
まさかサービスも終了するとは思っていませんでした。

代替えとして LINE Notify の使用を調査中です。

ESP8266 のスケッチ 大いに参考になりそうです。
「猫の食生活」を超音波距離センサーでLINEに通知してみた  
SSL通信をするためにはそれなりのCPUパワーが必要になります。
Arduinoに使われているAVRでは性能的に難しいのですが、
ESP8266はこの価格にも関わらず、32ビットクロック80MHzの高性能チップを搭載しています。
これによって、SSL通信も軽々とこなしてくれます。

Arduino MEGA で通信が苦しいとなると、
メッセージ送信は ESP8266 で分散処理へ変更する必要がある
ついでにモニター表示をするかな~

・・・・

取り合えず
・LINE アプリ インストール(iphone)
・LINE Notify アクセストークンの発行(PC)
line-0.png line-1.png line2.jpg

・ ESP8266 で Imの送信 & LINEでの受信
3659.jpg

まで動作確認済

Arduino MEGA + イーサネット シールド ではhttps がライブラリー対応されていないようだ!

IFTTTにLINE Channelができました
littleBitsのボタンを押すとIFTTT経由でLINEにメッセージが飛ぶ仕組みを作ってみよう
IFTTTがMakerのためのチャンネルを追加
Arduino勉強会/0P-WiFiからIFTTTを使ってみる

ひょっとしたら IFTTT へ http でメッセージを送信したら LINE へ https でメッセージを送信してくれるのかな?

Eventsをトリガーする方法
IFTTTをMaker Channelにつないだら、イベントのトリガー(IFTTTのifの部分)を作るのは簡単。イベント名とソケットキー(チャンネルに接続したときに割り当てられる)を付けてGETまたはPOSTを送るだけだ。
https://maker.ifttt.com/trigger/{event_name}/with/key/{secret_key}
これにオプションで、レシピの中のアクションに渡したい値(文字列)をJSON型で3つまで付けられる。

{value1:"文字列",value2:"文字列",value3:"文字列"}   たぶん

char v1[16] = "";
char v2[16] = "";
char v3[16] = "";
char header[100] = "POST /trigger/{event_name}/with/key/{secret_key} HTTP/1.1\r\n";
const char* host = "maker.ifttt.com";
const char* contentType = "Content-Type: application/json\r\n\r\n";
char contentLen[50] = {0};
char valueData [150] = {0};

sprintf(contentLen, "Content-Length: %d\r\n", strlen(valueData));
sprintf(valueData, "{\"value1\":\"%s\",\"value2\":\"%s\",\"value3\":\"%s\"}\r\n", v1, v2, v3);

sprintf(str, "%sHost: %s\r\n%s%s%s", header, host, contentLen, contentType, valueData);

client.print(str);


※IFTTTが難解すぎる・・・・・・・う~~
 何故か Makerチャンネルが無い!!

 サポートが無くなったのでしょうか?
IFTTTの「Maker」を使ってみました 有りそうだな~

IFTTTのトリガーおよびアクションをESP8266で実行する
IFTTT の webhooks で メッセージを LINE へ送信する事はできた。(デバッグモード 手動)
ただ IFTTT へは https で接続する必要が有る為 Arduino から使うのは難しそうだ!!
https で接続できるのなら、直接 line へ送信した方が良い
まぁ外部サービスに依存するのは駄目って事で

LINEへのメッセージ中継機能を ESP8266 で作るって事でしょうか
これにモニター表示機能を付加すれば自己完結する

IFTTT で RSS の LINE へのメッセージ送信は出来るが・・・
表示が長ったらしいし、機能面で劣る。

現在 im.kayac.com でメッセージ送信しているのは
①ソーラ発電状況 ②RSS
単に①の為にメッセージ転送するだけだと ESP8266 が勿体ない
から RSS機能に①のメッセージ転送機能を付加する事にした。
作成中
何故かWIFi接続PCはそれほどでもないが、iphoneはWiFi通信に影響が多く通信不能に近い
WIFiアクセスポイントがトチ狂う
どうしたもんじゃろな~

ESP8266でNAT(NAPT)でWi-Fiを中継する
Arduino の ESP8266をwebサーバーにしてみよう

試行錯誤しながら何とか希望の動作をする様に成って来た!
アクセスポイントでサーバーを動作させながら、通常のRSSの処理を行う


#include <ESP8266WiFi.h>
#include <ESP8266WebServer.h>
#include <ESP8266mDNS.h>

const char* ssid = "ssid"; 自宅ネットワークのアクセスポイント
const char* password = "password";

const char *ap_ssid = "ESP8266"; サーバー用のダミーアクセスポイント
const char *ap_password = "password";

IPAddress SvIP (192,168,1,254); サーバー用のダミーIPアドレス
IPAddress SvGatewayIP (192,168,0,1);
IPAddress SvSubnet (255,255,255,0);

IPAddress myIP (192,168,0,254); 自宅ネットワーク上のサーバーIPアドレス
IPAddress myGatewayIP (192,168,0,1);
IPAddress mySubnet (255,255,255,0);

ESP8266WebServer server(80);
WiFiClient client;

setup()
{
WiFi.mode(WIFI_AP_STA); // モード設定

WiFi.softAPConfig(SvIP,SvGatewayIP,SvSubnet);
WiFi.softAP(ap_ssid, ap_password);
IPAddress SvIP = WiFi.softAPIP();

Serial.println();
Serial.print("AP IP address: ");
Serial.println(myIP);

WiFi.config(myIP,myGatewayIP,mySubnet);
WiFi.begin(ssid, password);

server.on("/",onRoot);

}

void loop()
{
server.handleClient();
}

void onRoot()
{
  String msg = "<html><head><title>ESP8266WebSerber</title></head><body><h1>Hello</h1></body></html>";
  server.send(200,"text/html",msg);
}



ブラウザーから http://192.168.0.254/ をアクセスすると
Hello
が表示される

loop内で別の処理を組めば 処理をしながら サーバーアクセスの処理が出来る
私の場合はRSS とLINE Notifyへのメッセージ送信を行う

後ちょっとだ! がんばろう!


Arduino 電力量計 ---> im.kayac.com        ---> iphone


Arduino 電力量計 ---> 転送サーバー ---> LINE Notify ---> iphone

テスト環境で動作確認済
明日、実機をUpdate予定 メモリー不足が不安材料です。

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に登録したメルアドが表示される

Arduino 電力量計 DIY 10 今後の取り組み

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

検索で訪問されている方も有るので

現在、波形表示する関係でメモリーを消費しているが、
これをやめたらMEGAを使わないでも配電盤や発電の主幹電力のみの計測もできるので
スリム化されたソース公開も出来るかな?
計測も皮相電力と実効電力を算出していたが、
補正調整をするので・・・どちらでやっても大差ないので簡単に作ってみようかな
それも系統電圧計測用には電圧検出トランスを使わないで安価な電源トランスを使ったパターンと
電圧計測しないでを電圧固定設定する簡易版も用意したら安価に計測機器も製作できるから

なんて考えています。

液晶画面が真っ白は温度の関係だったようで・・・連続の雨で気温も下がったのでしょう
自然復旧しました。
発熱を考えたら電源はUSBから5V供給が良いですね。

気持ち的には計測値をリアル表示していた方が安心感はあるのだが
液晶故障中や遠方監視ではネット経由で情報は取得できるから
無くても実害はないのです。

Arduino 電力量計 DIY 9 運用その後 真っ白画面

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

いやはや台風接近に備えて野立て小屋に行ってみれば

発電モニターの画面が真っ白!
え! 電源再投入で起動し直しても真っ白

計測はちゃんと行っていてネット経由で動作は確認できるのだが・・・

あんなに苦労して波形表示等を行っていたのに・・・残念すぎる。

おそらく画面制御チップがお釈迦ッたのでしょう

予備機は有るのだが壊れるのが早すぎる

どうするべ~

Arduino 電力量計 DIY 8 運用改善

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

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

im.kayac.com経由でiPhoneへ通知が届く様に修正した。 (WebClientをkayacテスト用に変更したスケッチ)

例によってメモリー不足で混乱しましたが無事初期目的を達成できました。

im3.jpg

通知内容は
1.発電開始
2.発電終了(1日の発電量報告)
3.発電状況(1時間毎の発電量・最大発電値・最大電圧・温度)
4.パワコン異常通知(発電停止しているパワコンがあれば通知)
5.温度上昇通知(設定温度以上になれば通知)
6.電圧上昇通知(設定電圧以上になれば通知)
7.フルパワー発電通知(設定値以上になれば通知)

もう・・・
電圧上昇や発電が上がったり下がったりするので
ちょっとウルサイ
電圧なんか107V以上は当り前!?
反応しにくい設定値にした。

しかし今日は発電日和なのか、

発電するのだが雲が多いので通知がグチャグチャ

1分間継続したら通知する様に修正

いや~
しかし通知が届くのは便利が良いです。

DIYならではの使い勝手改善です。

Arduino 電力量計 DIY 7 運用して感じる事

自分から発電状態を見に行く事はできるのだが

やはり、異常時にメールが欲しい。1時間ごとに受取ってもいいな~

Ethernet Shield メール送信
外部サーバーには接続は無理ポイが自宅にサーバーを置けばできそうだ
以前はサーバーを設置していたけど・・・どうするかな~~

メールサーバーだけだから遅くても消費電力の少ないのが良い。

捜すとあるんですね。
Raspberry Pi Type B 512MBRaspberry Pi Type B 512MB
()
Raspberry Pi

商品詳細を見る

Raspberry Pi をメールサーバ化(Postfix+Dovecot)
Raspberry PiでWebサーバを構築してみた
Raspberry Pi(ラズベリーパイ) メモ
Raspberry Pi(ラズベリーパイ)の起動ガイド
WEBサーバーもそこそこの速度で動作するから
Arduino で ADC してネット関連を Raspberry Pi で行うのも面白い


外部サービスを利用する方法
im.kayac.com経由でiPhoneやGmailへ が良さそうだ
arduinoでEthernet Shield利用パターン(送信編)
Arduino+Ethernet Shieldでim.kayac.comにメッセージをポストしてiPod touchで見る


どうも天候や時間帯でWiHiが不安定になる
これで無線LANの不安定さが解消できるかな?
FON用アンテナ反射板を自作する。
WiFi 無線LAN 延長アンテナケーブル 自作
自宅にはこれを付ける事にした。
高品質 高指向性 2400MHz ワイヤレスLAN用Wifiアンテナ-528650高品質 高指向性 2400MHz ワイヤレスLAN用Wifiアンテナ-528650
()
OEM

商品詳細を見る


これに外部アンテナが付けれれば~~いいのだけどな~
無線LANルーター「Multi Pocket MZK-MF300N」を買ってみた
分解写真でアンテナの位置が分かったので設置角度を調整したら・・・通信が安定している。
自宅のアンテナを取り換えると更に安定する予感!

それでダメなら
共振を使って外部アンテナをつけてみるか


Arduino 電力量計 DIY 6 まとめ

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

9月から運用に入りました。微調整やPCソフトはこれからボチボチやっていきます。

忘れるので自作のメモです。

構成図
構成

部材はココ


回路図
回路n

回路及びスケッチなどを参考にさせていただきました。
なんでも作っちゃう、かも Arduino電力計
I2C温度センサADT7410を使う

web照会
pcmR.png
pcmJ.png
pcmP.png

他にも日別・月別。年別、PCデータ連系用があります。

モニター画面



8/29現時点での総括

Arduinoは良くできている

・純正品は高価だが互換品を使用すれば費用を抑える事ができる

・開発環境が整備されているので使いやすい

・特にライブラリーが用意されているので簡単に機能を付加する事ができる
 インサーネットは特に便利が良い
 I2Cインタフェースを使用すればRTC(リアルタイムクロック)や温度計測が簡単に行えるモジュールが有る

・気をつける事は
 MEGAだと使用しているピンが異なるので注意が必要
 RAMが少ないのでデータ定義をケチケチ設計する必要がある
 定数は極力プログラム領域に移動させる

ハード機能を追加する為にシールドを重ねて使用するのだが
これがかなりの厚みを必要とする。
 ケースは厚みが必要です。

電源を9vで供給しているが、かなり発熱する
やはり5vで供給するように当初から考えた方が良い

ソフト作成上は割込み処理による並列処理は良い。
今回ADC(アナログデジタル変換)の処理中に他の通信やSD記録やTFT表示を行っている

・具体的にはADCをCPUに指示するとADC完了まで他の処理が動作する。
 ADC完了割込みが発生したら結果を取り出して、次のADCをキックすれば良い。
 ADCを延々と割込みループが行える

・時間割込みを1秒ごとに発生させ、1秒毎の集計や表示などを行う
 注意すべきは1秒以内で処理を完結するものと数秒処理が必要なものとを分けて考慮すれば良い

・ADCのサンプリングのムラは補正を行っている
 ただRAMの関係で主幹電圧と電流だけ補正処理を行っている
 だからパワコン電流値は電流が多い時はカーブが正弦波に近いが少ないと波形が歪むので誤差が大きくなる

今現在のスケッチサイズは75KBぐらいです。だから苦しいの!

こんな感じかな

 

Arduino 電力量計 DIY 5

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

とりあえず設置調整作業が終わった。
計測値とか美化作業は後日。
疲れた~

トラブルの原因は・・・・
通電したら200Vのヒューズが切れる。
バラしても配線をし直しても切れる!。

途中から設計変更したものだから部品が対応していなくて
バリスターが機能して短絡していた。

当初は100V+100Vで系統電圧を計測していたのだが
計測のズレと計測数を増やす関係で200V計測に変更
ただし実験用は自宅で行っているので100Vを使用して数値のみ2倍してソフトを作成していた。
100Vだからちゃんと機能するのだが
実際には200Vを通電するので100V用のバリスタでは保護機能が働き200Vでは通常使用できない
なんと!こんな初歩的な事でヒューズも大量消費・時間も浪費、ものは未完成という
情けない事になったのです。

あとひとつは無線LANの関係が
通信速度が遅いのでNTPの受信がうまく動作しなくて待ち時間の調整

それからWEB照会も
通信速度が遅いので全てが表示し終わる迄にタイムオーバーになってしまう。
調整中!

午前中に計測したデータを一旦消去して
再度計測を開始した。

計測値の信ぴょう性については時間をかけて検証する予定
moniX1.jpg
お化粧してないのでスケスケです。

monix2.jpg
計測上のひずみはあるものの
実際のパワコンから発生している電流波形です。
赤が電圧、緑が電流

思っってた以上に綺麗なカーブをしている。
(1秒間の平均)

ちなみに電流値が少ないと波形は崩れる。


 
monix3.png

これが発電状況をWEB照会したもの、途中で切れるのです!。

他の照会内容は夜間行えば問題はないとは思うだが・・・

あれ~~~
数値が変!
あ~~そうか!。中間結果をそのまま表示していた。
さっそく手直し発生!!

補足:
依然として無線LANネック・・・

通信が遅いのは無線の関係もあるが、
WEB照会にしろ液晶表示にしろ、
ADCのサンプリングしている空き時間を使って行っているからで

サンプリングを行っていない時は瞬時に処理が終わる。
サンプリングを限界まで高速に動作させているから遅いのです。
サンプリングを減らせば表示とかは早くなるのだが・・・・
どこに主眼を置くかですね。

・・・・
現地調整中に問題点発覚!!
無線LAN関係は受信機の場所を変更したり、プロセスタイミングの調整でなんとかクリヤー
しかし、保存データが読めない。
正確にはWEB照会で読めない???
計算式は合ってはいても変数の型の問題で思った算出結果を出していない事が考えられる。
作業業域の確保場所で正しくメモリー割り当てが行われていなかった。
今日半日はこれの修正対応。
思った通りに動作しているかは半分は確認できたが明日確認予定。
依然としてメモリーネックであたふた。

・・・・
う~~む
分からない・・・
web照会のデータが途中で切れて最後まで表示しない件
ローカルだと受信できるが・・・
無線だと・・・あたかも処理を行い。その後送信しているのだが、どっかで止まっている
ようだ・・・
どうするべー

・・・・
しかたないのでトコロテン式にダミーデータで押し出した。
うまく行かない時もあるが、まぁなんとか使えるかな?

別ボードにするか、当ボードに組み込むか
メモリー一杯一杯だから・・・
折角購入した温度センサーの情報を忘れないように
メモ
I2C温度センサADT7410を使う

ず~~と雨。こういう時には遠隔で発電状況が見れるのは良い。
特に機器が故障していない事を知れるのは気分的に楽だ!

・・・・
止まらない止まらない
欲張りだから

やはり温度計測を追加したくて、ソフトの大改造。
たぶんメモリーの余裕は生まれたと思うので・・・
データレイアウトだけでも変更しておこう。

変だ!。やはり変だ!
何が変かというと、I2C通信用のポート(A4,A5)が正常に動作しない。
原因はイーサネットシールド?なぜ? あんた使ってないはずなのに何故邪魔をする?

ははは 半ば諦めかけていたのだが・・・
ななっなんと! MEGAはピンが違うのだ!!

Arduino   では、SDA(データ線)はアナログの4番ピンに,SCL(クロック線)はアナログの5番ピン
Arduino Megaでは,SDAがデジタルの20番ピン,SCLがデジタルの21番ピン

あ~~温度が表示できた。
本番用と実験用の器材が異なるが故に・・・一件落着。

計測は1秒ごとに行っているが、記録はRAMの関係で1時間単位に行う事になった。
4か所計測なので、室温、パワコン排気側、室外、パネル(雨の関係でパネル裏側)を考えている。

Arduino 電力量計 DIY 4

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

ボードの速度・RAM容量・プログラム(スケッチ)容量の制限との妥協とコダワリの産物

・系統電圧は200Vのみ計測
・電流は幹線とパワコン6台を計測
・計測しながらTFT及びWEB照会が可能
・計測データはSDカードに30年間保持し必要な時にWEB照会で過去データも表示可能
・PCとの連携はWEB経由で行う
・トラブル時の再起動時に過去データを継続使用できる
・時刻合せはNTPにより毎日行う
・計測は5:00~20:00迄行い、他の時間はWEB照会に特化する。
 TFTは20:00時点の表示で時刻表示のみ更新
・計測については幹線計測を重視しサンプリングデータの補正を行い計測ムラを改善する
 パワコンの計測は参考値とする。
・TFTに電圧・電流波形、1秒毎の発電状況、時刻別・日別・月別・年別の発電量
 の表示を行う
・WEB照会は約10秒間隔で1秒毎の発電状況、
 日付指定での時刻別・日別・月別・年別の発電量や1分毎の最大系統電圧・最大発電の照会を行う

系統電圧は100v×2計測予定であったが、計測速度やメモリー容量の関係で
発電量の計測に特化して200v計測とした。
幹線データは重要なのでサンプリング数を最大としパワコンのサンプル数と差別化を行った
サンプリング数を増やすのには計測機器と表示機器を分けるのが好ましいが
処理が面倒な事と計測値に余り差を感じないので1つで行う事とした。
TFTにはタッチパネル機能が有るのだがソフト開発の容量的に未使用とした。
したがってグラフ表示などはPCで行う事とする。

とりあえずソフト開発を凍結
まだバラック状態なのでパッケージングが終わったら写真UPします。
誘導対策が肝!

設置後に微調整。まだ理論値。


・・・・

う~~む
パッケージングについては後回しになっていたから
容器探しから、無いんだよね適当な箱が!
結局100円ショップのCD立を改造することに成った
穴あけ
組み立て
何とかかんとか仕上げたら
案の定
動作しない???
結局、バラバラにして原因を取り除いているが
あ~~~あ 穴の位置が・・・変わってしまった!

まだ後少し時間がかかりそう

それにトランスが勿体ないので
仕様変更を考えているから
ソフトの変更もしないといけないし・・・

無計画の行き当たりバッタリですね。

効率悪~い。

なんとか組み立ては終わって・・・あれ~
どこかで短絡している??
何回バラしたりした事だろう・・・だんだん美しくなくなる

しかしながら中性線のブレは誘導ではなく電源ポイ!

とりあえず打ち止め

ソフトは系統電圧の測定を1個増やした関係で、
またまたRAM不足地獄・・・

大改造だ~

懲りないね~

・・・・

ソフト変更・・・撃沈!
一日の作業を元に戻して
保存期間を25年に変更

とりあえず、これを初期バージョンとして
設置確認かな

・・・・
WEB照会をするとハングアップする
RAM不足だ!
ユニウニ
やはり、パワコン予備を無くするのは嫌だな
25年も嫌だな
と思っていたら
時間が解決するというか
良きアイデアが浮かぶもので
当初予定通りの仕様にする事ができた。

停電時の対応で無停電電源を使う予定だったのだが
まぁいいや、データ保存を1分間隔で行う事にして対応する事にした
復旧したら継続計測するから、微妙なタイミングで落ちない限り大丈夫でしょう
SDカードの書込み回数が増えるから???
まぁこの機器も何年使えるか分からないし
自分の寿命との関係もあるから・・・
使えるまで使いましょう!!

問題は設置後に正常動作するか!ですね。

今日、無線LANの設置をしてNTPで時刻合わせも動作したから
WEB照会も動作するでしょう。

配電盤まわりの配線の整理整頓後に動作確認ですね。

野立て小屋は暑い!
日中の作業は熱中症になりそうな・・・頭のテッペンが熱を持つ
涼しい時に作業をしよう

設置まで時間がかかるので、とりあえず試験画面
前回とあまり変わっていない。
波形のピークあたりが歪になるのです。
原因不明で放置!
moni2.jpg

Arduino 電力量計 DIY 3

Arduino 電力量計 DIY 中なのですが・・・・

思った様には行かないのが世の常なのでしょうか!

部品も届き、組立てていたら不足に気づき、追加手配して
なんとか組み立てているものの

電圧を抵抗で分圧して基準電圧を作り出しているのですが
安定しない・・・・誘導なのでしょうか!・・・ふらつくのです。
データ取込みの基準なので精度に大きく影響するので困る困る。

他の問題点も有り何度も組み立てたりバラシタリ段々汚くなる。美しくな~い!

アナログは苦手です。

デジタルは楽だな~~~~デジタル回路もノイズ回りが大変だけど。

その点ソフトは考え通りにほぼ動作するので良いですね。

電圧等のアナログデジタル変換も当初予定通り、他の表示処理と同時並行できるので
計測しながらWEB照会や波形などを液晶表示ができます。

ただ、処理が遅いので並行動作時はサンプリング数が少なく成りますがね。
液晶表示などは文字フォントデータを書込みしているので
パラパラパラと表示します。(遅~~い)

Arduino はコジンマリと出来ているので思わぬ落とし穴が有りますが
良くできています。
昔々これと同機能を要求したら何百万・何千万必要でしたから凄い事です。

良くできたオモチャです。

完成までの道程はなが~~~~い
(欲張りだから)


難航を極めている電力量計DIYですが
誘導問題やパッケージング、センサー数が多いので計測速度・遅れにどう対処するか
バッファリングしてズレを補正しようと考えたらメモリ不足。
限られたCPU資源でどう組み上げるか!


とりあえず開発中の画面(数値は適当)

デバッグを兼ねた基本画面
表示するのに約6秒・・・表示情報が欲張りすぎ
発電中の各パワコン、時刻別・日別・月別発電量表示
電圧と電流波形
・・・
物に成る事を祈って!!

その後
SDカード保存機能の作成
TFTシールドにSDカードスロットが付いているので、
それを使おうとしたのだが
チップ選択がうまく動作しない。

仕方なくイーサネットシールドに付いているSDカードスロットを使う事にした。
しかし動作が変! 悪戦苦闘! 原因はなんとメモリー不足!
なんとかデータ縮小対策をして、保存動作が出来るようになった。

トラブル時に1日分のデータは消失の可能性もあるが・・・起動時復元も動作

しかし、データをPCへ持って行くのにSDカード経由は構造的に無理。
やはり当初予定通りインターネット経由だね。

WEB照会も日中の簡単な発電状況はリアルタイムに閲覧できる様になった。

ただSDカードには1分毎の情報も記録しているのだ
データの全ての記録内容の照会を作成してPCでデータ取込みを行う予定。

問題はメモリーと
気力・根気が続かないのよ~~~
簡単な内容なのだが・・・着手に時間がかかる。

メモリーネックで右往左往
データ定義を削るだけ削った後だけに苦しい
とりあえず、これでRAMから逃がすか!
Arduinoでメモリー(RAM)を節約する
Arduino日本語リファレンス PROGMEM

Arduinoは簡単に開発が行えるが、
RAM領域が小さすぎる事で
プログラムが正常動作しなくて
時間の浪費が多い事が開発のネックですね。

RAM節約の効果は素晴らしく
当面のメモリー不足は解消した。
そうなると・・・だんだん欲が出てきて
ある程度の機能は単体で表示できるようにしたくなる。
なんせプログラム領域はかなりの余裕があるのだから・・・
 
余裕があるようで無い
もう限界ポイので当初予定の機能で開発終了
明日からバラックセットを設置に向けて組み立て直すかな

Arduino 電力量計 DIY 2

ソフトの基本

・時刻合わせはNTPを使用する。1日1回は深夜に時計合わせを行う。
・アナログ入力を割込み処理で行い、1秒単位に電力量を計数する。時計の計数を兼ねる。
 計測は60Hzの1波形を〇分割して10入力のアナログデジタル変換しないといけないので高速化が必須となる。

調べていたら何とかなりそうだな・・・なんとかしなくては!

参考
Arduinoで遊ぼう - NTPを使ってインターネット経由で時刻をあわせる
Arduinoで時刻を管理する
:: Timer1 ::
タイマー割り込みライブラリ(MsTimer2)
[arduino]Arduino Mega ADK or Arduino Megaでタイマ割り込みを使う
sleep概要

Arduino 日本語リファレンス analogRead(pin)
この処理は約100μ秒(0.0001秒)かかります。つまり、毎秒1万回が読み取りレートの上限です。
Arduinoは遅いか?
マイコン中のADコンバーターへ送られるAD変換クロックというのがあり、それは125KHzに設定されていました。
AD変換には、通常13 AD変換クロック(初回25 AD変換クロック)必要なので9.6kSPS(1秒に9600回)の速度で変換できる計算です。
なんでも独り言 Arduino Utilityライブラリ
setADCFrequency(int divisor) AD変換器の周波数を変える関数など
Arduino UNOとExcelでオシロっぽい何かを作る(高速化編)
Arduino core の実装メモ

Arduino電力計 - 一日の消費電力を表示させる

Arduinoソフトウェアの内部構造 analogRead()
analogRead(14)

printfを強化
小数(浮動小数点数)を文字列に変換する

これだけはやるな!Arduino Unoを破壊する10の回路

精度について
アナログデジタル変換が10bitの為(Arduino Due は12bit ただしピン電圧が3.3v)
現在入手のセンサーを使用した場合、
係数値=精度 KVT=0.3107V KCT1=0.4578A KCT2=0.0771A
実効値 rms KVT=112.29V KCT1=165.43A KCT2=27.86A
最大値 max KVT=158.78V KCT1=233.92A KCT2=39.40A
良くて上記、実際にはもっと精度が落ちる

Arduino 電力量計 DIY 1

Arduinoで野立て用の電力量計を製作しようと部品を調べました。
うまく動作できれば良いのですが・・・

基本回路は Arduino電力計 - プロトタイプ を基本にして検討しています。

電力の計測については 消費電力のモニタリングを使わせて頂こうと考えています。

基本構想
・野立ては5.5kwパワコンを6台使用しているので、各パワコンと幹線の電流計測を行う
・系統電圧計測用には電圧検出トランスを使用するが、Arduinoで計測する関係で
 100V用だと電圧が低い為、
 U相・W相の電圧を個別に計測したいので200V用を100Vで2個使用する。
・アナログ入力数が多いので arduino MEGA ボードを使用する。
・arduino MEGA ボードは「計測用」と「表示用」の2個に分ける事も考慮する。
・表示機能は電圧・電流・電力のリアル値及び波形・推移グラフ表示、
 時刻別・日別・月別の電力量と標準予測値の表示を行う
・温度計測も行い必要に応じてファン制御も行う。
・計測値はSDカードにも保存するがWEB照会やPCへのデータ転送も行う。


とりあえず部品の手配

系統電圧計測用には電圧検出トランス
電圧検出トランス VT3510-A01

電圧検出トランス VT3510-A01
価格:840円(税込、送料別)

電圧検出トランス VT2401-A01

電圧検出トランス VT2401-A01
価格:630円(税込、送料別)



電流センサー
分割型交流電流センサー/AC0.1~30A φ6mm

分割型交流電流センサー/AC0.1~30A φ6mm
価格:1,260円(税込、送料別)

分割型交流電流センサー/AC0.1〜200A φ24mm

分割型交流電流センサー/AC0.1〜200A φ24mm
価格:3,150円(税込、送料別)


電流センサーは U_RD が情報が詳細なのですが、
電圧検出トランスの手配の関係で同一店舗の上記製品を手配しています。
電流容量や電線径は多種類あります。

サインスマート(SainSmart) Mega2560互換ボード + 3.2TFTサインスマート(SainSmart) Mega2560互換ボード + 3.2TFT LCD液晶 + TFT LCD シールド for Arduino
()
サインスマート(SainSmart)

商品詳細を見る
互換ボードが安くて、ワンクラス上の製品が入手できる。
アナログ入力が多いのが大きな魅力だ。
TFT液晶とのセットが可能性を大きく広げる

商品紹介のリンクのサンプルは動作しませんが、開発元のHPのLIBRARIESのサンプルは動作しました。
http://www.henningkarlsen.com/electronics/library.php
ここのArduino用UTFTからUTouchのライブラリをdownloadしてサンプルの使用ポートを
Arduino Mega が有効になるようにコメント調整する必要があります。

サインスマート(SainSmart)MEGA(ATmega2560搭載) 互換ボード+ イーサネット シールド for Arduinoサインスマート(SainSmart)MEGA(ATmega2560搭載) 互換ボード+ イーサネット シールド for Arduino
()
サインスマート(SainSmart)

商品詳細を見る
イーサネット シールドとのセット商品

イーサネットシールド for Arduino (micro SD, Wiznet W5100)イーサネットシールド for Arduino (micro SD, Wiznet W5100)
()


商品詳細を見る
激安!!!




まだMEGAボードとTFTしか届いていませんが、
なんせ初めてarduinoが動作したのを確認できたので一安心!
まだまだ先が長~い。
プロフィール

お気楽どん

Author:お気楽どん

最新記事
最新コメント
ありがとう
気が向いたら
にほんブログ村 ライフスタイルブログへにほんブログ村 その他趣味ブログ 電子工作へ にほんブログ村 環境ブログ 風力発電・太陽光発電へ

DHC DHC DHC 売国議員
天気予報
カテゴリ
検索BOX・タグ一覧
リンク