Last Update : 2006/Apr/25
ロボット開発記(4)
PWM-SD
PWM-SD(C)
ハードウェア
製作
動作原理
ソフトウェア
今後
謝辞
<<戻る


    ロボット用のサーボモータのコントロールには、PWM信号が使われています。このPWMはマイコンなどで発生させることが出来ますが、通常は3〜8ch程度の本数です。一方、ロボットでは16ch以上が使われます。このPWMを効率よく分配することが、ロボットの制御のキモになります。


  • PWM-SD と PWM-SDC

    • PWM-SD

      PWM-SDとは PWM-SiginalDistributor の略称です。このシステムは宮田耕自氏が発表された LBC(Little Burning Core)をベースに開発したものです。

    • PWM-SDC

      PWM-SDC とは PWM-SD の機能に加えて、Redバージョンなどの位置情報を出力するタイプのサーボモータに対応すべく拡張した機能です。


  • ハードウェア

    • PWM-SD

      オリジナルの LBC では PWM出力は24ch、 74HC75, 74HC238 x 3 で構成されていたものを 74HC237 x 4 の構成にしました。デコーダ回路を増やしたことにより、さらに 8ch の PWM 切替が可能になりました。

    • PWM-SDC

      CPLD を用いて実装しました。試作品では44ピンタイプのチップを用いたために、16ch分のサーボモータのコントロールですが、本基板では 32ch 分の制御が可能になります。

    • ブロック図


      図中の赤の部分が今回開発した、PWM-SDになります。緑色の部分が PWM-SDC の部分です。


  • 製作

    • PWM-SD

      • 部品の入手

        ブロック図内の赤色部分の部品は全て、秋葉原で調達可能です。
        部品 説明 入手先
        基板 C型基板、両面スルーホール 秋月電子通商
        ICソケット 4個 秋月電子通商
        74HC237 4個 若松通商
        ピンヘッダ直型 2列 x 32 秋月電子通商
        ピンヘッダ直型 1列 x 32 秋月電子通商
        ピンヘッダL型 2列 x 7 秋月電子通商
        サーボ用電源コネクタ JST:B3B-XH-A x 1 マルモパーツ
        コンデンサ 積層セラミック 0.1μF x 2 秋月電子通商
        抵抗 100 Ω(1/6W) x 32 秋月電子通商

      • 配線


        配線密度が高いので、ショートしないように注意します。サーボ電源部は大電流が流れるので、太い配線を使います(写真の中の赤い配線部)。

    • PWM-SDC

      • 部品の入手

        ブロック図内の赤色部分の部品は全て、秋葉原で調達可能です。
        部品 説明 入手先
        基板 C型基板、両面スルーホール 秋月電子通商
        変換基板 サンハヤト製・0.8mm ピッチ 千石電商
        9572XL 1個 秋月電子通商
        ピンヘッダ直型 1列 x 16 秋月電子通商
        ピンヘッダ直型 1列 x 16 秋月電子通商
        ピンヘッダL型 1列 x 7 秋月電子通商
        ピンヘッダ直型 2列 x 9 x 4 秋月電子通商
        ピンコネクタ 2列 x 9 x 4 秋月電子通商
        サーボ用電源コネクタ JST:B3B-XH-A x 1 マルモパーツ
        コンデンサ 積層セラミック 0.1μF x 2 秋月電子通商
        抵抗 100 Ω(1/6W) x 16 秋月電子通商

      • 配線


        配線密度が高いので、ショートしないように注意します。サーボ電源部は大電流が流れるので、太い配線を使います。


  • 動作原理


    写真は実際の PWM-SDC の出力波形です。画面の上から順番に ch0 出力、ch1 出力になっているのがわかると思います。トリガは オシロスコープの ch3 に入力し /LE シグナルを使っています。最下段のパルス状の波形です。サーボの動作周期 2.3msec 毎にトリガがかかり、ch0 から順番に出力されています。

    • PWM-SD

    • PWM-SDC

      PWM-SDC の機能は大きく分けて、上記の PWM-SD の機能とサーボモータの位置情報を取り込む機能があります。

      • 機能設定方法
        1. サーボモータへのPWM出力

          サーボモータへのPWM出力機能はサーボモータで駆動するロボットにとっては、ごく普通の機能です。

          1. PWM_IN_SEL を L 設定

            CPU が持つPWM 信号をサーボモータへ出力するための機能です。

          2. CPLD_OE を H 設定

            PWM の出力をそのまま、サーボモータへ出力します。

          3. PWMx へPWM出力
          4. PWM_A0, A1, A2 を設定
          5. PWM_LEにより、PWMポート出力をラッチ
          6. 上記動作を2.3msec の PWM のベース出力毎に行う

        2. レッドバージョンなどのサーボモータ位置情報取り込み機能

          1. カウンタリセット

            Reset 信号 L 設定にしてカウンタをリセットします。

          2. PWM_IN_SEL を H 設定

            CPU の GPIO から出力される PWM 出力(ソフト PWM)をサーボモータに出力します。

          3. CPLD_OE を H 設定

            PWM の出力をそのまま、サーボモータへ出力します。

          4. PWM_SOFT から指定幅の PWM 信号を出力

          5. CPLD_OE を L 設定

            レッドバージョンなどのサーボモータではサーボの角度指定の信号線が入力/出力の双方向に設定できます。角度情報の出力(サーボモータから見て)を CPU に取り込むためにCPUのPWM出力部をハイインピーダンス設定にします。

          6. サーボモータからのフィードバック信号の読み取り

            FB_Dataの信号を CPU のキャプチャ機能により、パルス幅測定を行い。サーボモータの角度情報を得ます。
            サーボの角度を設定した後、その角度を読み込んだところ。角度に応じてパルスの幅が変化しているのがわかる。

          7. Clock

            クロックを入力して次のサーボモータへセレクタを切り替えます。クロックへの出力はキャプチャ入力のパルス幅測定後に行います。


  • ソフトウェア

    • PWM-SD

    • PWM-SDC


  • 今後

    • ロジックの最適化
    • ch 数の増加
    • 専用基板による省面積


  • 謝辞

    LBCを公開いただいた、宮田耕自氏に感謝します。PWM-SDC を CPLD化するにあたって、IPを提供してくれた NOB_Tech 氏にも感謝します。


頁の先頭
織田裕一へメール


Copyright (C) 1998 - 2006 TeamKNOx