2002/09/08 【電子回路編TOPに戻る】
今回は、DCギヤードモータを6ch分ドライブするために製作した基板をご紹介します。モータ駆動用のブリッジドライバICとしてSTマイクロエレクトロニクス製のL6203を6個実装しています。外部制御としてサーボモータをコントロールするためのPWM波形と同様の信号を6ch分入力し、そのパルス幅によって指定の回転角度まで駆動するものです。L6203を制御するために、4chコントロールが可能なPIC16F873 を2個実装しています。内容的には7.L6203モータードライブ回路と352.ギヤードモータのサーボ化4ch対応の各ページでご紹介したものですので、そちらもご覧下さい。
12−1.基板の外観
下の写真が、今回製作したドライバ基板です。部品面の両側に3個ずつ6個並んでいるのがL6203で、放熱板を取り付けてあります。中央上に6個並んだ黄色いコネクタはA/D入力用で、関節角度を検出するためポテンショメータからの電圧を取り込みます。真中に見えるDIPのIC2個がPIC16F873で、中央一番下に見える黒いコネクタはCPUからPWM波形を入力するためのものです。
モータのための動力線と、モータ駆動用の+12V電源線は、コネクタを実装するスペースが無くなってしまったため、基板の周囲から生やしています。なので、虫のようなグロテスクな外観になってしまいました。半田面には部品面に乗り切れなかったコンデンサやダイオード、抵抗などが取り付けてあります。このあたりは、不安定な動作を安定化させるための努力の跡なども含まれています。(^^;
モーターに接続するためのコネクタ(ギボシ)は、ラジコン自動車用モータに使われているものと同じものです。ただし、製作時にオス/メスの取り付けを逆にしてしまって、電圧が出力される側に裸の端子(オス)を圧着してしまいました。手持ちの部品が足りなくなるので付け替えはしていませんが、本来はメス側を圧着する必要がありますので、ご注意下さい。
12−2.回路図
下に6chモータードライブ基板の回路図をご紹介します。

基本的には352.ギヤードモータのサーボ化4ch対応でご紹介している回路なのですが、この基板を作り始めたころから結構ハマってしまうことがあり、安定動作するようになるまでにはちょっと時間がかかりました。それは、大体以下のようなところです。
■熱暴走によるIC破壊
一番、これに悩まされました。352.ギヤードモータのサーボ化4ch対応の回路をもとに単純に組んでいったのですが、動作させようとして電源を入れると、いつの間にかあるL6203が勝手に発熱して、その影響か他の発熱していないチャンネルまでが動作しなくなるのです。発熱の量は半端ではなく、半田が溶けるのではないかと思えるほどの発熱です。L6203自体には過負荷制限用の機能が付いており、正常動作時に発熱が増えると自動的に動作を遮断するので、この場合には明らかに正常動作ではないようです。一度そうなったL6203は壊れてしまっているらしく、2度と使えなくなります。
配線にミスがなかったか、基板に穴があくほどよーく確認しても、間違いは見当たりません。それでもう一度動かしてみると、始めは正常にモーターを駆動してくれるのですが、色々とやっているうちに、やはりいつの間にかあるL6203が急に発熱してご臨終になってしまいます。
原因がわからないまま悶々とした日々が続き、試しては壊し、試しては壊しを繰り返しているうちに、6個のL6203を捨てることになってしまいました。実験回路では安定して動くのに、6CH化した基板では壊れるのはなぜでしょう?
トイレやフロに入っている間も考えをめぐらせた結果、DC12Vだけが加えられ、DC5Vが加えられていない間、L6203のIN1とIN2端子の電圧が不確定になり、その影響で内部のFETブリッジが勝手にショート状態になるのではないかと思い、図のようにPULL DOWN抵抗を入れてみました。この判断が正解なのかどうかは分からないのですが、それ以来発熱による破壊は起きていません。本来はENABLE端子も含めた制御を行うべきかもしれませんが、DISABLE状態にするとモータのブレーキも効かなくなり位置制御が難しくなるため、常にENABLE状態にしっ放しにしています。
L6203は、もともとSTマイクロさんからサンプルで8個もらったものでした。今回の件で6個ほど壊してしまいましたが、またSTマイクロさんから10個をサンプルでもらうことができ、助かりました。STマイクロさんありがとう!なお、サンプルを頂いたときにメモが同封されており、以下の注意点を頂きましたのでご紹介します。
| 注意点:素子電源の出来るだけ近くに100μF以上と0.1μFのパスコンを挿入して下さい。駆動電流が2A以上の場合、出力とGND間にショットキーダイオードを挿入(trr<50nsec)。電流検出抵抗を挿入する場合、電位差が0.9V以下となるように設定をお願い致します。 |
■関節動作の不安定さ
実際にロボットのボディを組み、この基板を使って関節の角度制御を行おうとすると、なかなか安定動作をしてくれません。いきなり意に反した大きな動きをしたり、約10度くらいの間を行ったり来たり勝手に動いて止まらなかったり、といった調子です。目標位置付近で細かな痙攣を起こすこともありましたが、制御用のPICの感度が原因であることは分かるので調整で直せました。
意に反する関節の動きは何が原因なのかを考えると、A/D変換用にポテンショメータから入力する電圧にノイズが混入する点と、CPUから供給するPWM波形にノイズが混入することによる誤動作でしょうか。で、取り付けたのがA/D入力部分のコンデンサ0.1μと、PWM入力部のダンピング抵抗220Ωです。
A/D入力にコンデンサを入れるのは、そのままA/D変換部分の感度を落とすことになりますが、今回の用途ではそれほど早い応答性が必要なわけではないので入れてみました。結果としては劇的な効果があったのかどうかは分かりません...。すみません。
PWM入力部にダンピング抵抗を入れるのは、PWM波形を伝送する過程で起こる反射を早く収束させるためです。反射によってテレビのゴーストに似た悪影響が起こり、正確なパルス幅が計測できなくなるのではないかと思い入れてみましたが、オシロスコープがないため効果のほどは確認していません...。どれもこれも半端ですみません...。
で、一応安定して動いてくれるようにはなりました。上にご紹介した点以外にも、ロボットに実装するときにA/D用の入力線を動力系の線から離すなど、細心の注意が必要です。
というわけで、6ch分のDCギヤードモータを駆動させるための基板を作り、TekuRobo2号の歩行用に使ってみました。ラジコンサーボを利用すればいらない基板であり、結構がさばるのが難点です。また、6ch分をひとつの基板に実装しているため、チャンネル間のノイズの影響などもあって、本当の安定動作は難しい気もします。今度は1ch分の小型基板を使って、各関節部分に分散して配置できるようなものを考えてみようと思います。