#ESP8266が抱える突入電流の問題
本記事は、「ESP8266を単三乾電池一本で駆動したい」、「よわよわ電源だけどESPを起動できるようにしたい」などの要望に対するヒントになればと思います。
##突入電流の何が問題なのか
突入電流とは、装置の起動時に流れる大きな電流のことを差します。
とくにESP8266は省エネSoCを謳っているにも関わらず、起動時に最大で300~400 mAというドでかいピーク電流を吸い込んでいきます。
(次項に記載しますが、正確にはこの電流は突入電流ではないと思われます。)
SoCそのものの消費電力はWi-fi起動時であっても70~80mA程度で済んでいるのに対し、起動時にこれだけの電流吸い込むことによって、この対策のためだけに強力な電源を用意せざるをえません。
また、例えば乾電池1本から昇圧して使いたい場合で想定される、HT7733Aの利用などでは、到底このピーク電流を賄うことはできません。
何も考えずに設計すれば、電圧降下によって起動すらままならないでしょう。
##なぜESP8266は起動時に高いピーク電流を持つのか?
まず、答えから言ってしまうと、それは起動時に行われるRF calibrationが原因です。
以下は、RF calibrationによるピーク電流の様子です。20~30 msにわたってピーク電流が出ているのがわかります。
その後、Wi-fi起動による一本の細いピークが見えます。起動時に大きく問題になるのは、前者の電流になります。
RF calibrationによる突入電流の様子
引用元:https://bleepcoder.com/ja/arduino/158850911/problems-with-esp12f-without-wifi-on-50ma-power-source
#傾向と対策
では、どのようにしてこれに対策を取るべきでしょうか。いくつか方法はあります。
##1. 電源を強化する
###より高出力のPMIC、LDOを用いる。
単純に、起動時の電流を確保できるだけの強力な電源ICを用意してしまうのが最も手っ取り早い手法です。
###PMICやLDOをパラレルにして利用する
電源を二系統用意することで、電流を確保する方法です
しかしながら、この手法の問題として2系統の電源間でアンバランスが発生したとき、片方の電源系統に大きな負荷がかかり続けるという問題もあるため、設計上注意が必要です。
###電源のキャパシタの容量を増やす
20~30 msで数百 mAという消費電力を確保するには、概算にして数百 uF~数千 uFの大容量のキャパシタが必要になります。
回路の実装面積に余裕がある場合は良いですが、例えば単三乾電池での利用用途を考えると、そもそも実装面積が大きく取れない場合があるでしょう。
##2. RF calibrationを無効にする
突入電流そのものを消す根本的な解決策になりますが、この方法も必ずしも推奨できる手法ではありません。
なぜなら、RF calibrationを無効にすることで、Wi-fiの送信電力が定量的なものでなくなる可能性があるためです。
結果として、期待している通信距離が得られなくなったり、期待以上に消費電力が増加する可能性を孕んでいます。
起動時のオプションについては、API referenceの16ページあたりに詳しく記載があります。
以下コードは、system_phy_set_powerup_optionを2で起動します。
この条件では、VDD33のキャリブレーションのみが有効になり、RF calibrationが無効になります。
VDD33のキャリブレーションは、内部のリファレンス電圧のキャリブレーションなので、これをやらないとADCの値が滅茶苦茶になると思います。
extern "C" {
#include <user_interface.h>
}
RF_PRE_INIT(){
system_phy_set_powerup_option(2);
}
上記コードを実行することで、以下のようになります。
RF calibrationによる突入電流が無くなった様子
引用元:https://bleepcoder.com/ja/arduino/158850911/problems-with-esp12f-without-wifi-on-50ma-power-source
#まとめ
以下がまとめになります。
- ESP8266の起動時の突入電流は、RF calibrationが一番の原因。
- 解決方法は、電源周りの強化を行うか、RF calibrationを無効にするかのどちらか。
好きな方法で解決するのが良いと思いますが、適切なPMICやLDOの選択、キャパシタの選定を行うのが有効な解決策であると思われます。
雑な記事になりましたが、以上。
参考:https://bleepcoder.com/ja/arduino/158850911/problems-with-esp12f-without-wifi-on-50ma-power-source
等。ほか多数。