Raspberry Pi Zeroソーラー電源システムの検討

RaspberryPi Zeroをソーラーパネルで昼間だけ稼働させるシステムを作るため検討メモです(まだ作ってません)。

余談ですが、今回検討するきっかけてしては、以下の理由があります。

  • 前々から作りたいと思っているベランダ菜園装置の電源システムとして、やってみたいと思っていた
  • 技術的ネックだったマイコンの実装がRaspberryPi Picoの登場により出来るんじゃないかと思った
  • 最近、仕事で屋外にRaspberryPi Zeroによる計測装置を設置する機会があり、そこでも使えそうと思った

これだけ理由があるので、いつもみたいに考えといて作らないじゃなくて、今回は作るはず、です。

 

追記:道半ばですが作ってます

 

 

■ システム概要

目指すのは、昼間ソーラーパネルで十分発電できる時だけ、RaspberryPi Zeroを稼働させ、夕方にソーラーパネルの電圧が落ちてきたらZeroをシャットダウンし、朝に電力が回復したら、Zeroを起動させる独立電源システムです。

 

ソーラーパネルの電圧監視・リレー制御にRaspberryPi Picoを使います。この用途だと、正直PICでも十分いけるのですが(安価で省エネな最適解)、過去、何度もトライしてるのに能力不足で扱いきれないので、Picoなら出来るかもという期待を持っています。

Picoは後発のマイコンボードの割には目立ったメリットが無いというのが巷の評価っぽいですが、能力の低い僕的には、安くてMicroPythonが使えるマイコンボードって凄く魅力的です。

 

■ ソーラーパネルの検討

夜間稼働に必要な電力を充電させなくて良いので、そんなに大きな電力がいらないのがこの方式の利点。

平均的な電力消費は下記くらい。
Raspberry Pi Pico 0.09W
Raspberry Pi Zero 0.75W

Zeroはゴリゴリ処理している時で1Wくらいとのことなので、1〜2Wくらいのソーラーパネルが選択肢になります。

 

Raspberry Pi Zero Wの消費電力
https://www.usagi1975.com/052520180823
 

秋月電子で買えるソーラーパネルの中では下記が最もコスパが良い。

太陽電池モジュール 2W SY-M2W ¥600
https://akizukidenshi.com/catalog/g/gM-08919/
 

ただ、最大出力電圧が5.9Vで、入力範囲をカバーする昇降圧コンバータが下記になり、ややお高い。

入出力2.5V~15V 同期整流式昇降圧型スイッチング電源モジュールキット LTC3111使用 ¥1,380
https://akizukidenshi.com/catalog/g/gK-11212/

 

その他の組合せとしては、以下が考えられます。

 

太陽電池モジュール 1.15W SY-M1.15W ¥450
https://akizukidenshi.com/catalog/g/gM-08918/

5V出力昇圧DCDCコンバーター ¥300
https://akizukidenshi.com/catalog/g/gK-13065
 

太陽電池モジュール(1.5W) ¥900
https://akizukidenshi.com/catalog/g/gM-05357/

XC9306使用同期整流昇降圧DC/DCコンバータキット 5V版 ¥350
https://akizukidenshi.com/catalog/g/gK-15775/

 

最初の組み合わせのLTC3111の電源モジュールは、接続先を12V鉛蓄電池できたりと汎用性がありそうなので、これでやってみようと思います。

ですが、最後の1.15Wのソーラーパネルの組み合わせは750円と安く、小型化にも貢献しそうなので、1.15Wで電力が賄えるかというのも試してみたい。

 

■ スーパーキャパシタの検討

PicoでZeroにシャットダウン指示をした後、Zeroがシャットダウンするまでの電力を確保する目的でスーパーキャパシタ(電気二重層コンデンサー、EDLC)を使うことを考えています。

スーパーキャパシタを予備電源とする場合は、電源の安定化同様、パスコン(バイパスコンデンサ)すれば良く、並列につなぐだけなので、シンプルでいいねっと思ったら、キャパシタの電圧は残量とともに低下するので、放電時は、通常、電圧制御回路が必要とのこと。

Picoは昇降圧回路が内蔵(入力電圧1.8V~5.5V)されているので、なくても良さそうですが、Zeroはどうなんでしょう。入力電圧の仕様は5Vですが、内部で3.3Vに降圧しているのでその範囲で動かないだろうか?ちなみに、3.6V(エネループ3本直列)では動作するとの情報があるので、いけそうな気がします。
追記:Zeroも2.7Vくらいまで動作しそうです

 

キャパシタに必要な容量は、静電容量CはファラドFという単位表されて、以下の式からJa=Jbになるように容量を求めればよいとのこと。

必要なエネルギー量 [Ja] = 電圧 x 電流 x 持続時間
電気二重層キャパシタのエネルギー量 [Jb] = 1/2C (V1^2 - V2^2)

V1は放電開始時の電圧で、充電電圧とイコール。V2は動作可能な下限の電圧で、デバイスの動作電圧(DC-DCコンバータ等)の入力電圧範囲によって決める。

シャットダウンに必要な電力を、5V、0.15A、10秒とします(えいや)。Ja=7.5J。
昇降圧回路なしで3.3Vまで動作すると仮定し、V2=3.3Vとすると、Jb=7.055C。なので必要容量Cは1.1F。
電圧調整するとしたら、入力電圧2.5~5.5Vの昇降圧回路を使い、V2を2.5Vとすると、Jb=9.375C。なので、Cは0.8F。変換効率を80%としたら、必要容量は1F。まぁなくてならシンプルで済むのでそっちの方がいいかな。

一番安いのだと100円/F(耐圧5.5V)くらいなので、そこまでシビアにする必要もなく、2~3F積めば良いかな。

 

電気二重層コンデンサ EDLC
https://akizukidenshi.com/catalog/c/ccap2
 

電気二重層キャパシタの基礎知識
https://jp.rs-online.com/web/generalDisplay.html?id=ideas-and-advice/electric-double-layer-capacitors-guide
 

太陽電池と電気二重層コンデンサによる ESP32 駆動
https://rabbit-note.com/2018/07/22/esp32-operation-using-solar-panel-and-edlc/
 

無停電電源が必要になる時 – スーパーキャパシタでデータ消失を防ぐ方法
https://news.mynavi.jp/article/20190902-886019/2
 

スーパーキャパシタを用いたバックアップ電源(MAX38888)ソリューション(Part1)※回路の参考
https://www.marubun.co.jp/service/technicalsquare/a7ijkd000000ckdx.html
 

 

■ RaspberryPi Picoによる電圧測定

ソーラーパネルの出力電圧を監視して、電圧が下がってくればZeroをシャットダウンし、電圧が上がればZeroを起動させます。

Picoはアナログ入力端子を3つ備えていて、0~3.3Vの範囲で分解能は12bit、すなわち4096段階で電圧を取得できます。

使用を考えている上記のソーラーパネルの最大出力電圧は5.9V。1/2くらいに電圧を落とせばよいので、同オームの抵抗で分圧すればOKということですね。

 

ラズパイでAD変換!Picoでアナログ入力してみた
https://misoji-engineer.com/archives/raspberrypi-ad-pico.html
 

はじめての電気とIoT (11) SPI経由でアナログ電圧測定 その4 LM358で10倍増幅
https://www.denshi.club/pc/raspi/iot11spi4
 

 

■ PicoからZeroへシャットダウン指示の方法

PicoとZero(その他デバイス)間の通信としてメジャーな方法は、PicoをUSBデバイスとして認識させて、USBシリアル通信するのが便利らしい。

ただ懸念なのが、Picoの電源はソーラーパネルから引っ張ってきたいので、USB端子から供給する場合とは、設定が異なるようで、そこを上手く解決できるかということ。

GPIOピンで通信させる方法にI2CやSPI、UART通信なるものもあるそうですが、詳しい解説情報がなくて、難しそう。。。

 

Raspberry Pi Picoの仕様書を読んでみる(5)
https://blog.boochow.com/article/rpi-pico-spec-5.html
 

Raspberry Pi Pico を使ってみたいなら日経Linux 2021年5月号を読もう
https://www.hiro345.net/blogs/hiro345/archives/20060.html

 

そもそも、ON/OFFがわかれば良いだけので、PicoのGPIO出力をそのままZeroのGPIO入力に与えればいいのでは?素人考えでは、GPIOピン同士を抵抗挟んで直接接続させたら良い気がしますが(追:これでOKでした)、よくわからないので、MOSFETを介すことにします。
Zeroの方で、入力に設定したGPIOの値を監視して、シャットダウンをするプログラムを走らせます。

 

MOSFET 2N7000 ¥20
https://akizukidenshi.com/catalog/g/gI-09723/
 

MOSFETによる双方向電圧レベルシフト回路の仕組み
https://blog.ashija.net/2017/06/21/post-1116/
 

追記:RaspberryPi ZeroとPicoのシリアル通信

 

■ リレーの検討

Zeroをシャットダウンさせた後、電力回復後に再起動するために一度切る必要があり、リレーでON/OFFします。

現時点、下記のリレーを使おうと思ってます。

ドライバ内蔵リレーモジュールキット ¥200
https://akizukidenshi.com/catalog/g/gK-13573/
 

選定の理由は僕の能力的な問題が主で、半導体リレーのことがよくわかってないからメカニカルリレー。寿命や小型化、コストを考えると、半導体リレーの方が良いかもしれないので、この際勉強しておきます。

スイッチングの方法を調べると、メカニカルリレー、ソリッドステートリレー、MOSFET、フォトカプラと様々なワードが出てきて、混乱してきました。

  • 電圧コイルの力で物理的にスイッチをオンオフするリレーがメカニカルリレーで、エレクトロメカニカルリレー(EMR)、有接点リレーとも呼ばれる
  • 半導体を使って電気的に絶縁させオンオフするリレーが半導体リレーで、ソリッドステートリレー(SSR)、無接点リレーとも呼ばれる
  • 半導体リレーの中で、絶縁機能に使われる素子がフォトカプラで、スイッチ機能に使われる素子がMOSFET
  • 半導体リレーは、メーカー毎に呼び名があり、フォトリレー(東芝)、PhotoMOSリレー(パナソニック)、MOSFETリレー(OKI、オムロン)、ソリッドステートリレー(HP)などある
  • フォトカプラを使うのは電気的に絶縁したい時(例えばモーターのノイズを遮断するなど)で、スイッチング用途だけだと、MOSFETだけでもOK
  • 大電力を取り扱うように設計されたMOSFETをパワーMOSFETと呼ぶ

 

今回の用途だと、リレーはMOSFETに置き換えられるかもしれませんので、勉強がてら、特徴を整理します。

  • MOSFETは普通端子が3つあって、それぞれドレイン(D)・ゲート(G)・ソース(S)と呼ばれる。G-S間に電圧が印加されたときに、D-S間が通電する。
  • MOSFETにはNチャンネルとPチャンネルがある。Nチャンネルが良く使われる。両者は違いは印加電圧がプラスかマイナスかの違いで、Nchがプラス。
  • 印加していないときに通電しないノーマルオフタイプをエンハンスメント型と呼び、印加していないときに通電するノーマルオンタイプをデプレッション型と呼ぶ。
  • 印加に必要な電圧が、RaspberryPiのGPIO出力の3.3Vより小さい必要がある。呼び方は各社ばらばらで、ゲートしきい値電圧、ゲート・カットオフ電圧、ゲート・ソース遮断電圧など。
  • MOSFETはG-S間の印加電圧に応じて、ドレイン電流(D−S間を流れる電流)が決まる特性があり、3.3V時のドレイン電流が十分かデータシートで確認する。
  • 通電時の抵抗をオン抵抗と呼び、小さい方が良い。
  • 印加してない時も僅かに電流は流れ、漏れ電流と呼ばれる。

 

MOSFETの使い方 [Arduino]
https://www.petitmonte.com/robot/howto_mosfet.html

 

秋月で一番お安いパワーMOSFETが下記ですが、印加電圧3.3Vでもドレイン電流4A以上ですし、要件は満たしているように見えます。

NchパワーMOSFET 2SK4017(Q) (60V5A) ¥30
https://akizukidenshi.com/catalog/g/gI-07597/
 

試してみよっと。

 

■ 回路

動かしてみるまで自信はないですが、回路図はこんな。

 

追記:リセットIC

電池とスーパーキャパシタで、電池を付けたりはずしたりしながら、Picoのオンオフを試していると、電圧が下がってPicoが停止した後、再度電圧を上げても、Picoが復活しない現状が何回か見られました。

Picoの最低動作電圧を下回り、正常に稼働していないけど、完全に停止はしていない状態からだと、電圧を復活させても、Picoが正常には動かないのかなぁなんて思って調べていると、マイコンを使うにあたり、最低動作電圧より低い電圧による誤作動を防ぐようにすることは、当たり前みたいで、リセットICなるものが存在することを知りました。

 

一定電圧以下になったら電気を止める用途は、マイコンの誤作動を防ぐのみならず、バッテリーの過放電を防止するという目的としてよく使われるので、市販品もありました。が、12Vとかそれ以上を対象としたものが多く、Picoの低電圧カットオフ回路として使えるか分からない。

続けてと調べていますと、過放電防止回路を色々自作・公開してくれているサイトがありました。ありがたい。

 

M51957B を用いた自動回復型なシンプル過放電防止回路
https://wakwak-koba.hatenadiary.jp/entry/20171008/p1

 

こちら抵抗でカットオフする電圧の閾値を自分で決めれるのですが、以下のページにあるリセットICで閾値が決まっているやつもシンプルになっていいなあっと思いまして。

 

リチウムイオン電池にも使えるハイサイド動作な過放電防止回路
https://wakwak-koba.hatenadiary.jp/entry/20161210/p1

 

後者は、カットオフ後手動で復帰するタイプなので、前者の回路のM51957Bを、後者のTCM809Rに置き換えるとこうなりました。

ちゃんと動きました。

 

追記:実際にPicoをこの回路で動かしたところ、検出電圧以下になり電気を遮断するのですが、その後、電源電圧が回復して通電、Picoが動くと電圧が下がり遮断、また回復して通電、とオンオフを繰り返す挙動となりました。リセットはできているのですが、なんかPicoの体に悪そう。なので、この挙動を和らげるため遅延時間を設定できるリセットICの方が良さそうです(M51957Bはできる)。理想的には、検出電圧と解除電圧の差を大きくとれることですかね(TA8030Sでできそう)。

 

リセットIC(TCM809R)は2.63V以上の時にHightのリセット信号、つまりは普通はHighの信号を出すので、PchのMOSFET(DMG3415U)のゲートにマイナスの印加つまりはLow(GND)を与えるために、NOT回路で反転すると。

NOT回路
http://www.crl.nitech.ac.jp/~ida/education/computer/project/computer020601.html

 

なんでPchのMOSFETなのかはよく分かっていないのですが、おそらく下記のサイトの通り。

https://okayamalabo.hatenablog.com/entry/Hi-NMOS#ハイサイドNchが難しい理由

 

 

っとゆーか、リセットIC使えば、ソーラーパネルの電圧降下をZeroに教えられるから、今回のシステムでPico要らんじゃん!って思いましたが、自分でプログラミングできれば色々幅が広がるので、まぁいいか。

1 Comment

Add a Comment
  1. 失礼します、あなたのブログ投稿の内容を読んだ後、私はそれが非常に興味深いと思います。 私はラズベリーパイを販売しているAmazonの販売者です。 ラズベリーパイ4のケースの記事を書いてほしい。 弊社はあなたに無料で製品を提供します。 よろしくお願いします

コメントを残す

メールアドレスが公開されることはありません。