Arduino PRO MINI スリープモードと消費電流

概要

電池で動かすモノを作ってみようとすると、やはり電池のモチが気になるので、Arduino PRO MINIについてまた調べてみた。WiFiを使うならばESP-WROOM-02がよいのだけど、通信に用がないなら余計なものが載ってないPRO MINIがよさそうと思ったので。

電池で動かす場合、スタンバイ(スリープ)時の消費電流と復帰方法が重要になるだろう。Arduino や WROOM-02ならば、復帰方法として外部要因(スイッチを押す、センサーから電圧を与えるなど)による割込みが使える ( ESP-WROOM-02でもヌルく調査した)。
しかしながら、消費電流についてはデバイスや製品によって決まってしまうから、具合のよさそうなものを選定するしかない。

スリープモードと消費電流の調査

手元に、スイッチサイエンスで扱っているSparkFun社製の製品と、以前アマゾンで入手したArduino PRO MINIをうたう製品(裏面に The Simpleと書いてあるもので、400円未満)があったので、これらに簡単なスケッチを入れて、スリープモード時の消費電流などを測ってみた。残念ながら、いずれも+5V、16MHz動作品。

Arduino PRO MINI
Arduino PRO MINI (右がSparkFun社製、左がThe Simple)

SparkFun社が掲示している回路図を見る限り、外部から+5Vを与えればボード上のLDOも使われないので、AT-MEGA328PとLEDくらいしか電流を食いそうなものはない。測定といっても、テスターをArduino MEGA ADKの+5V出力とブレッドボードの+5Vの間につないで電流表示を読んだだけなのだけど。

測定時のスケッチ

以下のようなコードを使い、Arduino IDEから送り込んではテスターの表示を読むことを繰り返した。スリープしないときは、sleep_mode(); をコメントアウトして測定。

なお、各製品ともにIOピンのD13にLEDが接続されているので、9行目を digitalWrite(13, 1); としてから SLEEP_MODE_PWR_DOWN させ、LEDを点灯したままの状態での電流も測定した。

SparkFun製

  • 通常動作時:16.3mA
  • SLEEP_MODE_PWR_DOWN : 0.7mA
  • SLEEP_MODE_PWR_DOWN : 9.4mA (LED ON)

LEDオフでスリープに入っても、赤色のPOWER ON LEDが点灯している。このLEDには10kΩの直列抵抗が入っているから、LEDのVF=2Vとすると、3V ÷ 10kΩ = 300μA が常に消費されていることになる。このLEDを外せば、スリープ時の消費電流を0.4mAまで抑えることができるだろう。

D13のLED(緑色)を点灯した場合、8.7mAも増加してしまう。こちらには330Ωが入っているから、緑色LEDのVFが2.1~2.2Vとすれば計算通りだろう。

Arduino PRO MINI
SparkFun社製のPOWER ON LED周辺

KB50と書いてあるデバイスがLDO (MIC5205)で、その右側で赤色のPOWER ON LEDがぼんやり光っている。LDOの左の 01C と書かれたチップ抵抗が、おそらくLED用の10kΩ。

The Simple

  • 通常動作時:22.4mA
  • SLEEP_MODE_PWR_DOWN : 3.6mA
  • SLEEP_MODE_PWR_DOWN : 6.8mA (LED ON)

消費電流の話に突っ込むことになったのは、The Simpleのスリープ時の消費電流が大きかったから。同じ図面から起こした互換品のはずなのに、こんなに違うのはなぜ? と疑問に思ってしまった。

Arduino PRO MINI
The Simple

前にも書いた気がするが、この製品の特徴はLEDがまぶしいくらいに明るいことである。このあたりに理由があるのだろうと思って、LED周辺をほぼ等倍で撮影してみた。

Arduino PRO MINI
The Simple

赤く光るPOWER ON LEDの上には、102 と書かれたチップ抵抗が載っている。つまり直列抵抗が 1kΩ なのだった。1つ前の全体像を見ると、右側でD13につながる赤色LEDも光っているが、このLEDにも1kΩがつながっているのが分かる。

こちらは、スリープ前にD13のLEDを点灯したときに 3.2mA増加しており直列抵抗が1kΩだから、LEDのVFは1.8V程度と分かる。おそらくPOWER ON LEDも同等品なので、PON LEDもしくは直列抵抗を基板から外してしまえば、消費電流は3.2mA減って、スリープ時0.4mAとなりSparkFun社製と同程度になるだろう(同じマイコンなので当たり前だが)。

撮影風景

基板に実装されているデバイスを大写しにする、ということで、オリンパスのE-PM2とMZD60mmマクロレンズを使った。なおかつ、フレキシブルアームの先にLEDがついている、マクロアームライト (MAL-1) というのも使った。

E-PM2 + MZD60mm + MAL-1
E-PM2にマクロアームライトMAL-1

MAL-1は大した光量がなくて滅多に使わないのだけど、小さな陰を消したいときや、小さなものを光らせたいときなんかに役に立つ。レンズ先端にLEDを並べただけでは決まった方向しか照らせないから、フレキシブルアームになっていることに意味がある。

E-PM2 + MZD60mm + MAL-1
E-PM2にマクロアームライトMAL-1

MAL-1 を使うには、カメラにAP-2 (アクセサリポート2) が備わっている必要があるのだが、残念なことにオリンパス社のカラメからは AP-2が消えつつある。現行品で備えているのはOM-D E-M1とPEN E-PL8 という製品くらいか。OM-D E-M5IIにはついていないし、この冬に登場するE-M1の次世代機にも着いてないらしい。

E-M1では大袈裟だし三脚がゆらゆらしたのでE-PM2を使ったのだけど、そろそろ届くはずのMZD30mm/F3.5 マクロレンズとMAL-1を組み合わせて使いたい。また、AP-2のないカメラ向けの製品も期待したい。あるいは、高輝度白色LEDをレンズフードの周りに貼り付けた、とりあえずの近接用照明でも作ってみるか。

きょうのまとめ

  • ESP-WROOM-02のdeep-sleepが強力でよいのだけど、IOピンが足りない場合はArduino PRO MINIを使うことになるだろう。
  • The Simpleの消費電流に驚いてざっと調査してみたが、謎が解けてよかった。
  • スリープ時に400μAまで落とせることは分かったが、クロックを下げて電圧を下げる以外の方法で、もうちょっと下げられないものか。もうちょっと勉強してみます。

追記

The Simple のPower ON LEDを外してみた。それについては別途まとめた。

さらに、実際の赤外線リモコンを作るにあたって、省電力の方法をよりつめて3.3V電源でスリープ時18μAになった。まだまだできることはありそうな感じ。