Picoの電池駆動の不具合(CO2濃度測定器)
ことの始まりは、Raspberry Pi PicoにMH-Z19Bを接続しSSD1036のOLEDに測定した二酸化炭素濃度の推移を表示させるあるプログラム例を知り、実行させてみたことから。
Raspberry Pi PicoをPCに接続してThonnyで実行した場合は問題なく可動したのに、Raspberry Pi PicoのVSYSピンに「+」をつなぐ乾電池駆動を試みた場合には、異常に高い数値が表示されるという不具合に見舞われたのです。
↑乾電池の「+」をVSYSピンに直付けでは異常値が表示される
軽量化、コンパクト化のためにRaspberry Pi Picoの電池駆動がぞまれますが、ボタン電池の使用を含めて乾電池を直接Raspberry Pi Picoに接続させる給電方式では、上述の不具合がどうしても発生してしまいます。
かさばるもののモバイルバッテリーからのUSB給電はどうかと考えるのですが、消費電力が少ないと働くバッテリーのeco機能により給電がストップするとか。
これは困りました。
なお、Picoに内蔵の温度センサーや、温湿度、気圧センサーのBME280を使って試してみると、電池駆動でも不具合は発生しないように見受けます。よって、問題は特殊この二酸化炭素濃度測定器のケースに限られたことなのかもしれません。
残念ながら問題の所在を究明するスキルはなく、できるのは、動く例はないのかを確かめることくらい。
そこで、実際に確かめてみました。これまでの結果は以下のとおりです。
■乾電池・充電池をPicoに直付
1.5V 単3×1本 →OLED自体が映らない
1.5V 単4×2本を直列 →異常値34304を表示
1.5V 単3×3本を直列 →異常値34304を表示
■リチウムボタン電池1個をPicoに直付
3V 1個 →異常値34304を表示
■電池昇圧キット aitendo(5V)AKIT-7750
ジャンパー線接続 →異常値34304を表示
単にUSB接続に改造 →数値が激しく変動
■モバイルバッテリーでUSB接続
太陽光充電器XD-S15000C →10秒後に停止
RAVPOWER RP-PB058(26800mAh) →正常
↑eco機能をもつモバイルバッテリーの中でRAVPOWER RP-PB058は不具合なく表示を保ったが、サイズがデカすぎ
■3.7V 5800mAhリチウム充電池をUSB接続
18650 Pi Partner V3(5V) →50秒で停止
■乾電池・充電池をPicoにUSB接続
セリアUSB CHARGER(1.5V 単3×2本直列) →正常
今のところはセリアのUSB CHARGER一択
以上。今のところVSYSピンに電池の「+」をつなぐ方式で、正常に動いた例はありません(あくまでも、MH-Z19BとSSD1306のOLEDを使用した今回の二酸化炭素濃度測定器に限る)。
モバイル充電器では、太陽光充電器はさすがに消費電力が少ないとecoが働くようですが、電力供給量の大きなRAVPOWERのポータブル充電器は消費電力量が少なくても電力供給は止まらず、8時間経っても動き続けていることを確認しました。
リチウム充電池を使った小型の充電器については、リチウムポリマー電池ではまだ確かめられずにいますが、リチウムイオン電池を使用し18650 Pi Partner V3は、一旦は正常に表示するも50秒後に停止してしまいました。
調べたもののうち、正常に動いたのはRAVPOWER RP-PB058とセリアのUSB CHARGERとの2例。今のところは、セリアのUSB CHARGERが一番小さいわけですが、単3乾電池2本を使用しており、サイズはコンパクトとは言い難いところ。せめて単4×2本分のサイズであればと思うのですが。
スマホを充電できない非力さに、ガラクタとバカにしていたセリアのUSB CHARGERが、こんな形で役に立つとは…。
【追記】
モバイルバッテリーの省電力モードによりRaspberry Pi Picoに給電されなくなる問題の解決策は、モバイルバッテリーとRaspberry Pi Picoの間に抵抗を入れること。消費電力を増やしてしまおうということでしょう。
なお、Raspberry Pi PicoにはUSBポートからとVSYSピンを通じての電源供給の2つがありますから、両方を使って接続した場合、一方の電源から他方への逆流を考慮する必要があります。Raspberry Pi PicoのデータシートにはショットキーダイオードあるいはPチャンネルMOSFETを使った方法が示されています。
【追記への追記】
モバイルバッテリーを無駄に消費するのはいかがなものかという点では、次のサイトの「Mobile Battery用シャント回路」が参考になりそうです。