グランドループ(しゃちょ〜)

今日は私の誕生日だったのだが、今日からまた2泊3日の台湾出張。。。ただ、誕生日に飛行機に乗ると、チェックインカウンターでANAから誕生日プレゼントをもらい、機内食もCAさんからの直筆のメッセージカード付きだった。CA全員がわざわざ「お誕生日おめでとうございます」って席まで言いに来てくれて、おかげで免税品を買わずに済んだ(^^!。取引先ではバースデーケーキが出てきたし、誕生日の出張も悪くないかも。

で、本題に入ると、"電気"を全て司っているのはオームの法則である(と思う)。まぁ、私は機械屋なので経験上のお話としてお聞きください。
どんな複雑なシステムでも、オームの法則で考えれば、その挙動は全て分かってしまいます。分圧回路、オペアンプなどの抵抗値の算出などは、簡単だと思っていても、いざ自分で求めようとすると、アレ?ってことになる。そんな時もオームの法則(と、キルヒホッフ則)で全て解決できます。
さらに、その基となる電圧(V)、電流(I)、抵抗(R)も、中学校で習っているから誰でも軽視しやすい存在ですが、いざ、自分が作ったロボットが動かない時に、その原因を特定するにはこの3パラメータが全てであるというのにはなかなか気づけません。よくV、I、Rを水の流れ(滝とか)に例えて、V=落差、I=流量、R=抵抗と言われていますが、ここでIは絶対値であるのに対し、Vは相対値であることを見逃しがちです。滝の高さを表記する際、いちいち海抜??mから、海抜??mに落ちていますとは言いませんよね。単純に高さ(落差)は10mとかって言います。
ロボットのように複数のコントローラが共存し、さらにバッテリも複数個搭載しているようなシステムでは、この概念が非常に重要になります。
ある回路系から、別の回路系に信号を送る場合、仮に0〜5Vの信号波形を出力していても、一方の回路では-4V〜1Vの信号のように取られてしまう場合があります。そうすると受け側では1Vの信号ということになりデジタル系では0Vとして認識され、結果として信号が来ていないことになります。これは電圧が相対値だからです。言ってしまえば、2つのGNDレベル(上で言う海抜)がズレているからです。なので、どこかでGNDレベルを揃えてあげる必要があります。
小さい回路では大して問題にはなりませんが、ノイズ源となる大きなモータなどを複数搭載したロボットなのでは、グランドの取り方次第で、システムの安定性が極端に変わります。
イクシスのモータドライバiMDs03というのは、コントロール系とモータ系のGNDは基板上でアイソレート(分離)されています。なので、何も考えずにモータや電源、コントローラを接続しても動いてくれません(これが原因で動かないというクレームを多く頂くことがあります)。どこかでコントロール系とモータ系のGND接続してあげる必要があります。が、、、変なところで接続してしまうと、モータ側で発生するノイズの影響で、コントロール系が落ちてしまうことがあります。なんで?って思うかもしれませんが、正にオームの法則です。電流は抵抗値の低い方に流れやすいです。仮に基板上のパターンの抵抗が長さに比例すると仮定すると、距離が短い程抵抗値は低くなるため、電流が流れ込みやすくなります。ということは、iMDs03上でコントロール系とモータ系のGNDを接続すると、モータノイズは直近のコントローラ系に流れ込んでしまいます。ノイズはGNDレベルをガンガンに動かしてくれるので、あっという間にコントローラ系はリセットがかかるなどの症状が出てしまいます。
さらに面倒なのは、このグランドを複数箇所で共通化させてしまう場合です。これがグランドループの問題の根源です。そうすると電流が流れる経路(ループ)が増え、モータ系を流れたノイズを含む電流があちこちに行ってしまいます。やはり、電流は最短経路で出発点(バッテリ)に戻ってもらわないと、何が起きるかわからなくなります。
と考えると、どこか一箇所でGNDを共通化すれば良いことになります。さて、どこでやりましょう?
あくまで、コントローラ系とモータ系のGNDレベルを揃えるために両方のGNDを接続するのであって、そこにガンガン電流を流すわけではありません。さらに、ノイズを平滑化してくれるキャパシタ的な存在を持っている付近が良さそうです。
そうです、バッテリ(電源供給元)付近で、ほそ〜い線で2つのGNDを共通化すれば良いのです。さらにノイズが気になるのであれば、その間にコイルを入れてやればLC回路でノイズの影響はほぼキャンセルできます。
コントロール系にバッテリを持たず、PCのUSBからの電源供給で駆動している場合はどうでしょう?PC内でもGNDは共通ですので、なるべくPCの電源供給元付近にGNDを接続してあげるのが良いでしょうか?
もちろん、ノイズをちゃんとキャンセルできるような回路を途中に入れてしまえば、他の箇所でも容易に接続できます。
このように考えると、GNDの共通化はシステムによって様々であることがわかり、一意に「ココに入れてください」とは言えません。かなり経験がモノをいう領域になってきます。「デジタル1年、アナログ10年」と言われるようにアナログ領域の習得には時間がかかります。
色々と条件が抜けていて、グランドループの概念などをきれいにまとめてはいませんが、ロボットが巧く動かない時には、まずオームの法則を思い浮かべ、どこにどういう風に電流が流れているか?というのを一度考えて見ると、デバッグが楽になります。