41.電源監視装置 (2023.4.5-2023.4.8)

RaspPiを専用の5V電源等では無くバッテリーで運用するとしましょう。バッテリーはバイク等に使用する12Vの鉛蓄電池(電流容量20Ah)を想定します。この選択が適当かどうかは別として、手元にあったものを流用するのが目的です。電圧が12VもあることからRasPiの電源として直接接続できないため、DC-DCコンバーターによって5Vまで降圧します。大容量のバッテリーのためRasPiの長時間の稼動が期待できますが、バッテリーは使用と共に徐々に電圧が下がってきます。特に鉛蓄電池は過度に放電すると使用不能(回復不可能)になるため、適当な電圧になった所で警告を出して再充電を行わなければなりません。バッテリー電圧を降圧して使用しているので、RasPi自体はバッテリー電圧が相当低下しない限り動作を維持できますが、バッテリー寿命に関わるため電源監視は重要なテーマです。

鉛蓄電池の目安として、12Vのバッテリーは満充電状態で電圧が約13.0Vあります。放電によって徐々に電圧は下がりますから、過放電にならない程度で電力供給を停止する必要があります。大体11.0Vで残量20%程度とのことなので、この電圧で警告を出すことにします。

バッテリーの電圧の監視はDC-DCコンバーターの一次側(バッテリーに接続)で行います。しかし、RasPiにはアナログ電圧を計測する機能がありません。そこでADコンバーターと呼ばれるアナログ値をデジタル値に変換して読み取るデバイスを使って電圧値を計ることにします。注意したいのは、ADコンバーターはRasPiに接続するために電源電圧を3.3Vで使いますが、計測する電圧は満充電で13Vにもなる点です(充電中は14V位になる)。そのままではデバイスを破壊してしまうため、抵抗分圧によって計測電圧を下げ、最大でも3.3Vを超えないようにします。今回は安全を見て計測電圧の最大値を15Vと仮定します。

以上を考慮した回路が下図になります。分圧比が合えば抵抗値は図の通りで無くても大丈夫ですが、電流が多過ぎても少な過ぎても弊害をもたらすので、図の値程度が妥当だと思います。抵抗器は飛び飛びの値のものしか無いので、半固定抵抗を入れて電圧値を調整します。半固定抵抗はバッテリー電圧が15Vの時(実際にはここまで電圧値は上がらない)にADコンバーターの入力端子電圧が3.3Vになるように調整します。これで15Vまでなら入力電圧を測定できます。ADコンバーターはMCP3002と呼ばれる分解能10ビットで2回路のものを採用しました。「31.SPIインターフェース」でも詳しく紹介しています。10bitの分解能のため、得られるデジタル値は0(0V)~1023(15V)の範囲です。

ADコンバーターとRasPiとの接続は下図の通りです。

Pythonで次のテストプログラムを実行すると、小数点以下2桁までの計測値を1秒毎に表示し続けます。
ADコンバーターテストプログラム