ttoのblog

メモ

ArduinoUNOにeneloopで電源供給

Arduino UNOをスタンドアロンで動かそうと思い、

電源ポートに挿さる乾電池ソケット付きの電源を買おうと思ったのですが、

スタンドアロンで動かすのでUSBポート使わないじゃないか」と思い付き、

手持ちのeneloop stick boosterで

SANYO eneloop USB出力付ハンディ電源(単3形2個セット) KBC-D1BS

SANYO eneloop USB出力付ハンディ電源(単3形2個セット) KBC-D1BS

動くんじゃないの?と繋いでみました。


そしたらちゃんとArduino UNOの電源LEDが点いたので、

今度は「単三Eneloop2本でどのくらい持つのか?」を試したくなりました。


まず、Arduino UNOにSDカードソケット付きEthernet Shieldを挿して、

Arduino イーサネットシールド

Arduino イーサネットシールド

「1秒に1増える変数の値をSDカード上のLOG.txtに書き込む」スケッチを書き込みました。

#include <SPI.h>
#include <SD.h>

int data = 0;

void setup() {
  //----- Digital Pin -----//
  pinMode(13, OUTPUT);
  
  //----- Serial port -----//
  Serial.begin(9600);
  
  //----- SD card -----//
  Initilize SD card
  Serial.println("Initilizing SD card...");
  if (!SD.begin(4)) {
    Serial.println("Failed!");
    return;
  }
  Serial.println("Suceeded!");
}

void loop() {
  String dataString = "";
  
  dataString += "OK:";
  dataString += String(data);
  
  Serial.println(dataString); //OK:(電源入れてからの秒数)
  
  File dataFile = SD.open("log.txt", FILE_WRITE);
  
  if (dataFile) {
    digitalWrite(13, HIGH);
    dataFile.println(dataString);
    dataFile.close();
    Serial.println("success writing log.txt");
  }
  else {
    Serial.println("error opening log.txt");
  }
  digitalWrite(13, LOW);
  data++;                    // data値は1秒に1増える
  delay(1000);
}

動作確認用にシリアルポートの通信がいくつか書かれていますが、

気にしないでください。


で、一回PCからUSBケーブルを抜き、eneloop stick boosterに繋いで電源ON。

これで電源が落ちた時にLOG.txtを見れば何秒まで動作していたかが分かるという寸法です。

f:id:tto0816:20130224213642j:plain

こんな感じ。(あ、SDカード挿してない…)


電源ON後はほっといて、寝ました。


朝起きてArduino UNOが電池切れで停止していることを確認し、

SDカードを抜いて中のLOG.txtを確認してみました。

すると、

f:id:tto0816:20130224220243j:plain

となっており、約10500秒なので、1時間3600秒だから3時間弱動いていた計算になります。


ここまでやっておいてなんですが、この値はArduinoUNO側の構成によって変わります。


私が考えているのは電源コードレスで、Bluetoothを使ってPCとシリアル通信しようと考えているので、

その場合はBluetoothモジュールの消費電力によって変わるでしょう。


でも、ま、たぶん大きくは変わらないってことで、

電源ONしてすぐに動作停止ってことはないことが分かりました。