Arduino よもやま話-9 (UNOの電源切り替え回路)
2019年11月27日09:55
Arduino よもやま話
◆まえがき
Arduino の互換機をいくつか買ったので、中の回路をいろいろ調べてみました。Arduino には UNO や Nano, Mini などがありますが、電源回路が少し違っているようです。
そういう中で、UNO が一番ちゃんと作り込まれていたので、今回その回路を詳しく調べてみました。なお、互換機の話から書き始めたのですが、以下の記事は主に UNO の純正基板の話になっています。
・UNO の基板の電源まわり

USB と DCジャックのいずれからでも電源供給出来るようになっているので、部品の数が多いです。
◆電源の回路
UNOの公開されている回路図には当然電源の部分の回路も入っています。そこから電源の部分だけを抜き出したのが以下の図です。
・UNO の電源まわりの回路図

これ、接続関係が記号で書かれている箇所が多くて、直感的に判り難いです。そんなことで、自分好みに書き直したのが次の回路図です。
・書き直した回路図

◆回路の動作
左側から入る DCジャック (DC-IN) と USBからの電源は、A点でパラに接続されていて 5V電源を供給するようになっています。また、3.3V は 5V からシリーズレギュレーター (U2) を通して作られています。
上側の、DC-IN からシリーズレギュレーターを通って +5V を作るパスはごく普通の回路です。下側は USB からの電源供給回路です。実は私、この二つの回路をパワーFETでばっさり切り替えているのではないか思っていました。しかし、回路をよく見ると想像していたものとかなり違っていました。ということで詳しく動作を追っていきます。
◆ダイオードを使った場合の問題
手っ取り早くやるなら、USB の VBUS の +5V からダイオードを通して、回路図の A点に接続しておけばとりあえず大丈夫です。ただこうやると、電源電流がダイオードを通過するのでその Vf 分だけ電圧が下がってしまいます。ショットキーバリアダイオードを使っても 0.3V くらいのドロップがあるので、+5V 電源の電圧が +4.7V くらいまで下がってしまいます。
◆オペアンプとP-MOSFETで解決
そういう問題を解決するために入っているのが、オペアンプ (LM358) と P-MOSFET (FDN340P) の回路です。DCジャック側から電源供給が無い場合は、オペアンプの出力は LOW レベルになるので、P-MOSFET は ON になり USB から電源が供給されます。MOSFET の ON 抵抗は低い (数十mΩ) ので、ここでの電圧ロスは無視できるくらい小さくなります。
DCジャックの電圧が上がるとオペアンプの出力が 5V になるため、P-MOSFET は OFF になり、こちらのパスからの電源の供給は止まりそうです。しかし、FET にはパラにボディイダイオードが入っているので、そちらのパスを通って電源は供給されます。但し、ボディダイオードを通過するので電圧が 0.6V 下がり、こちらのパスからの電圧供給力は約 4.4V くらに下がります。
A 点はシリーズレギュレーター (U1) によって 5V に保たれているので、ここに 4.4V を供給しても電流は流れません。ということで、結局は USB からの電源供給は停止され、めでたく電源の切り替えが完了するという仕掛けになっています。
【2020/03/14追記】
コメントで、P-MOSFET(FDN340P)の向きは何でこうなっているの?という質問を頂いたので私なりのお返事を書きました。グッドクエッションでした。
◆切り替え電圧
この切り替えは コンパレーター (U5A) でやっていますが、その切り替え電圧は、ダイオード (D1) 通過後の電圧の 1/2 が 3.3V になった時に行われるので、大雑把には 7.2V 付近になります。
この 3.3V はロジック回路用に用意されているものですが、それをうまく流用しています。また分圧抵抗 (RN1A, RN1B) は同じ値の物で済むので実装コストを下げることが出来ます。ということで、うまい手を考えたものです。
実際の回路で切り替わりの様子を見てみると、7.22V で切り替えが始まり、7.41V で完了していました。オペアンプのゲインを考えると一気に切り替わりそうな気がしますが、実際には0.2V くらいの切り替え範囲がありました。
◆発振
この回路を見ていて心配になるのは発振です。何しろオペアンプの出力は A 点の電圧に影響し、オペアンプはそこから電源をもらっています。さらにはレファレンスに使っている 3.3V の電圧にも多少の影響があるはずなので、なんだか危なっかしい感じです。ということで、オペアンプの出力ピン (U5Aの1ピン) をオシロで見てみると、
・発振してました

電源の切り替え中はこんな波形になっていて、発振していました。周波数は約1500Hz です。この電圧が Low の時は USB からの電源供給が有効で、Hi の時は電源供給停止です。入力電圧を変化させると波形のデューティが変わって滑らかに切り替えが行われていました。ということで、発振しているものの問題無い、と言うか急な切り替えにならないので、かえって好都合なのかも知れません。
◆まとめ
あまり気にしないで使っていた UNO の電源切り替え回路ですが、調べてみると巧妙な仕組みになっていて感心しました。パワー FET が使われていることは認識していたのですが、これがダイオードの電圧降下をゼロにするためだけに使われていたとは、思ってもいませんでした。
ちなみに、Arduino Nano では USB からの電源供給はショットキーバリアダイオードを通すだけでやっているので、VCCの 電圧が 0.2-0.3V 程度下がった状態、つまり4.7~4.8Vくらいになっています。
・UNO の互換機の基板の電源まわり

互換機にもいろいろありそうですが、この基板は、搭載されている部品を見る限りはオリジナルを再現して作られているようです。
・いたずら
USBから電源供給している状態で、DCジャックから 7V くらいの電源を供給した場合、両方のパスが生きているので並列運転状態になります。この時、USB の電源にダイソーの300円モバイルバッテリーを使うと、何とモバイルバッテリーが充電されました。
お!これ UPS になって具合いいじゃん、と思いました。ところが、DC ジャックからの電源供給を絶った瞬間に、モバイルバッテリーの DCDC コンが起動するのですが、そのタイムラグがあるのでしょう、電源が瞬断されるために Arduino にiリセットがかかってしまいました。これでは UPS として使うことは出来ないわけで、うまくいかないものです。
Arduino の互換機をいくつか買ったので、中の回路をいろいろ調べてみました。Arduino には UNO や Nano, Mini などがありますが、電源回路が少し違っているようです。
そういう中で、UNO が一番ちゃんと作り込まれていたので、今回その回路を詳しく調べてみました。なお、互換機の話から書き始めたのですが、以下の記事は主に UNO の純正基板の話になっています。
・UNO の基板の電源まわり

USB と DCジャックのいずれからでも電源供給出来るようになっているので、部品の数が多いです。
◆電源の回路
UNOの公開されている回路図には当然電源の部分の回路も入っています。そこから電源の部分だけを抜き出したのが以下の図です。
・UNO の電源まわりの回路図

これ、接続関係が記号で書かれている箇所が多くて、直感的に判り難いです。そんなことで、自分好みに書き直したのが次の回路図です。
・書き直した回路図

◆回路の動作
左側から入る DCジャック (DC-IN) と USBからの電源は、A点でパラに接続されていて 5V電源を供給するようになっています。また、3.3V は 5V からシリーズレギュレーター (U2) を通して作られています。
上側の、DC-IN からシリーズレギュレーターを通って +5V を作るパスはごく普通の回路です。下側は USB からの電源供給回路です。実は私、この二つの回路をパワーFETでばっさり切り替えているのではないか思っていました。しかし、回路をよく見ると想像していたものとかなり違っていました。ということで詳しく動作を追っていきます。
◆ダイオードを使った場合の問題
手っ取り早くやるなら、USB の VBUS の +5V からダイオードを通して、回路図の A点に接続しておけばとりあえず大丈夫です。ただこうやると、電源電流がダイオードを通過するのでその Vf 分だけ電圧が下がってしまいます。ショットキーバリアダイオードを使っても 0.3V くらいのドロップがあるので、+5V 電源の電圧が +4.7V くらいまで下がってしまいます。
◆オペアンプとP-MOSFETで解決
そういう問題を解決するために入っているのが、オペアンプ (LM358) と P-MOSFET (FDN340P) の回路です。DCジャック側から電源供給が無い場合は、オペアンプの出力は LOW レベルになるので、P-MOSFET は ON になり USB から電源が供給されます。MOSFET の ON 抵抗は低い (数十mΩ) ので、ここでの電圧ロスは無視できるくらい小さくなります。
DCジャックの電圧が上がるとオペアンプの出力が 5V になるため、P-MOSFET は OFF になり、こちらのパスからの電源の供給は止まりそうです。しかし、FET にはパラにボディイダイオードが入っているので、そちらのパスを通って電源は供給されます。但し、ボディダイオードを通過するので電圧が 0.6V 下がり、こちらのパスからの電圧供給力は約 4.4V くらに下がります。
A 点はシリーズレギュレーター (U1) によって 5V に保たれているので、ここに 4.4V を供給しても電流は流れません。ということで、結局は USB からの電源供給は停止され、めでたく電源の切り替えが完了するという仕掛けになっています。
【2020/03/14追記】
コメントで、P-MOSFET(FDN340P)の向きは何でこうなっているの?という質問を頂いたので私なりのお返事を書きました。グッドクエッションでした。
◆切り替え電圧
この切り替えは コンパレーター (U5A) でやっていますが、その切り替え電圧は、ダイオード (D1) 通過後の電圧の 1/2 が 3.3V になった時に行われるので、大雑把には 7.2V 付近になります。
この 3.3V はロジック回路用に用意されているものですが、それをうまく流用しています。また分圧抵抗 (RN1A, RN1B) は同じ値の物で済むので実装コストを下げることが出来ます。ということで、うまい手を考えたものです。
実際の回路で切り替わりの様子を見てみると、7.22V で切り替えが始まり、7.41V で完了していました。オペアンプのゲインを考えると一気に切り替わりそうな気がしますが、実際には0.2V くらいの切り替え範囲がありました。
◆発振
この回路を見ていて心配になるのは発振です。何しろオペアンプの出力は A 点の電圧に影響し、オペアンプはそこから電源をもらっています。さらにはレファレンスに使っている 3.3V の電圧にも多少の影響があるはずなので、なんだか危なっかしい感じです。ということで、オペアンプの出力ピン (U5Aの1ピン) をオシロで見てみると、
・発振してました

電源の切り替え中はこんな波形になっていて、発振していました。周波数は約1500Hz です。この電圧が Low の時は USB からの電源供給が有効で、Hi の時は電源供給停止です。入力電圧を変化させると波形のデューティが変わって滑らかに切り替えが行われていました。ということで、発振しているものの問題無い、と言うか急な切り替えにならないので、かえって好都合なのかも知れません。
◆まとめ
あまり気にしないで使っていた UNO の電源切り替え回路ですが、調べてみると巧妙な仕組みになっていて感心しました。パワー FET が使われていることは認識していたのですが、これがダイオードの電圧降下をゼロにするためだけに使われていたとは、思ってもいませんでした。
ちなみに、Arduino Nano では USB からの電源供給はショットキーバリアダイオードを通すだけでやっているので、VCCの 電圧が 0.2-0.3V 程度下がった状態、つまり4.7~4.8Vくらいになっています。
・UNO の互換機の基板の電源まわり

互換機にもいろいろありそうですが、この基板は、搭載されている部品を見る限りはオリジナルを再現して作られているようです。
・いたずら
USBから電源供給している状態で、DCジャックから 7V くらいの電源を供給した場合、両方のパスが生きているので並列運転状態になります。この時、USB の電源にダイソーの300円モバイルバッテリーを使うと、何とモバイルバッテリーが充電されました。
お!これ UPS になって具合いいじゃん、と思いました。ところが、DC ジャックからの電源供給を絶った瞬間に、モバイルバッテリーの DCDC コンが起動するのですが、そのタイムラグがあるのでしょう、電源が瞬断されるために Arduino にiリセットがかかってしまいました。これでは UPS として使うことは出来ないわけで、うまくいかないものです。
- 関連記事
トラックバックURL
http://radiopench.blog96.fc2.com/tb.php/962-fc49ce94