忍者ブログ

設備のマニアどっとこむ

IoT開発、設備・DIYのブログ!

【arduino】電流監視ロガーの制作【DIY】

あけましておめでとうございます。今年も設備のマニアどっとこむをよろしくお願いいたします。
今年一発目の記事ですが、タイトルの通り電流監視ロガーを作ってみました。

データセンターのラックなどの電流を管理するのは非常に重要なことです。電源の異常を素早く察知し、顧客へ連絡することで被害を最小限にすることができます。

今回は電源ケーブルにCTを取り付け、arduino へとりこみマイクロSDカードへログを書き込んでみました。

まず準備するのはarduinoに加えてethenetシールドが必要になります。

これをガキーン!とくっつけます。

そしてマイクロSDカードをさします。


電流センサーは秋月電子通商で購入しました。
交流回路を直流にし、なおかつarduinoのアナログ入力である0~5Vにする必要があります。
CT比は3000:1(実電流3Aで2次側1mA)です。抵抗100Ωにて電圧回路にしています。特性表の電圧を10倍してください。3Aで0.1Vとなります。

回路例は写真の通りです。念のため、可動鉄片型の電流計にてわかりやすいように比較できるようにしています。



arduinoの入力はA0ピンとグランドを使い、LEDは5、6、7ピンを使っています。
注意しなければならないのが、ethenetシールドを使用する場合11、12、13、4ピンをつかうと
うまく動きません、それ以外のピンを使うようにしてください。


回路図はこのような形になります。CTは秋月で整流器は下記となります


ソースコードはスケッチの例にデフォルトで入っているSDフォルダのなかのDateloggerを少しいじったものになります。
#include <SPI.h>
#include <SD.h>
// On the Ethernet Shield, CS is pin 4. Note that even if it's not
// used as the CS pin, the hardware CS pin (10 on most Arduino boards,
// 53 on the Mega) must be left as an output or the SD library
// functions will not work.
const int chipSelect = 4;
void setup()
{
  // Open serial communications and wait for port to open:
  Serial.begin(9600);
  while (!Serial) {
    ; // wait for serial port to connect. Needed for Leonardo only
    
    pinMode(5, OUTPUT);
    pinMode(6, OUTPUT);
    pinMode(7, OUTPUT);
  }
  Serial.print("Initializing SD card...");
  // make sure that the default chip select pin is set to
  // output, even if you don't use it:
  // pinMode(10, OUTPUT);
  // see if the card is present and can be initialized:
  if (!SD.begin(chipSelect)) {
    Serial.println("Card failed, or not present");
    // don't do anything more:
    return;
  }
  Serial.println("card initialized.");
}
void loop()
{
  // make a string for assembling the data to log:
  String dataString = "";
  // read three sensors and append to the string:
  for (int analogPin = 0; analogPin < 1; analogPin++) {
    int sensor = analogRead(analogPin);
     
    dataString += String(sensor* 0.146484);
   
    if (analogPin < 1) {
      dataString += "A";}
if (sensor > 68.266) {
 digitalWrite(5, HIGH);
 delay(500);
 digitalWrite(5, LOW);
 digitalWrite(6, HIGH);
 delay(500);
 digitalWrite(6, LOW);
 digitalWrite(7, HIGH);
 delay(500);
 digitalWrite(7, LOW);
 
}  
else {digitalWrite(5, LOW);
 digitalWrite(6, LOW);
 digitalWrite(7, LOW);}  
     
  }
  // open the file. note that only one file can be open at a time,
  // so you have to close this one before opening another.
  File dataFile = SD.open("datalog.txt", FILE_WRITE);
  // if the file is available, write to it:
  if (dataFile) {
    dataFile.println(dataString);
    dataFile.close();
    // print to the serial port too:
    Serial.println(dataString);
  }
  // if the file isn't open, pop up an error:
  else {
    Serial.println("error opening datalog.txt");
  }
}
arduinoの入力電圧は0~5Vを1024分割した入力になります。それを電流にするため、
入力電圧×3000(CT比)÷100(抵抗)×1024÷5
=入力電圧×0.146484という定数をかけています。
これで実電流を表示する事ができます。センサー類を使う場合、この様な換算が必要になってきます。

警報が出るしきい値は10A以上としていますが、こちらは逆に10÷0.146484でセンサーの電圧にしています。

10A以上電流が流れる機器としてドライヤーを使用しました。
ヒーターを使うとLEDが点滅し、送風だと10A以下なのでスルーします。


aruduino IDEのシリアルモニタに電流が出力されていますがすべてマイクロSDカードにログが保存されていきます。



↑マイクロSDに作成されたファイル

これで電流監視ロガーができました。
arduinoははじめからさまざまなケースのスケッチの例があり少しいじれば簡単にいろんなことができます。業者にウン十万払って工事するよりも、意外と安くできる・・・かも。






拍手[0回]

PR

コメント

1. 教えてください

Arduino初心者です。
貴殿の取り組みに大変興味をもちました。
同じものを作って勉強したいと思います。
回路図、購入部品をお教え頂きたくお願いのコメントさせていただきました。
よろしくお願いします。

Re:教えてください

遅くなってすいません、回路図を追記しました。よろしくお願いします

>Arduino初心者です。
>貴殿の取り組みに大変興味をもちました。
>同じものを作って勉強したいと思います。
>回路図、購入部品をお教え頂きたくお願いのコメントさせていただきました。
>よろしくお願いします。

翻訳(Translate)

プロフィール

HN:
佐々木 雅史
性別:
男性
自己紹介:
2021年 ラズパイ、M5stackを用いたIoT開発を専門で受注するアルティメンテを設立。代表を務める。
・2020年ラズパイコンテスト優良賞受賞
・設備系資格多数(電験3種、消防設備士甲4、2級ボイラー技士、危険物乙4、電工2種、技術士補(電気・電子)、エネ電、フォークリフトなど)

AD

カレンダー

02 2024/03 04
S M T W T F S
1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30
31