• 検索結果がありません。

07 TMRW04.c

13.1.7 サーボモータを 8 個動かす (IC で割り振り )

前回は、割込み関数を用いて

8

本の独立した

PWM

を出力しました。

これによって、サーボモータを

8

個制御できることを確認しました。

しかし、8個のロボット用モータを制御するために、8本の端子が必要でした。20個のモータを制御し ようとしたら

20

本の端子が必要になります。

また、ソフト的に割り振りをしていたのでは処理スピードが問題になることもあります。後ほど紹介す る「モーション作成ソフト」を用いた場合には、ソフト的に割り振っていたのでは処理が間に合わないこ ともあるのです。

一般に、ソフトウェアで処理するよりもハードウェア的に処理するほうが早いようです。また、回路に よってはマイコンの出力端子を少なくすることも可能です。

ここでは、TC4051Bを用いて、1本の

PWM

8

本に振り分けるということをしてみましょう。

タイマ

W

PWM

モードを用いて

FTIOB

端子に

PWM

を出力します。これを

2.5ms

ごとに

8

本に振 り分けるわけです。

図示すると、以下のようになります。

13.7 1

本の

PWM

8

本に振り分ける

13.7

で、 最初のパルスは

2.5mS

の周期で

ON

時間を変更しながらパルスを作っています。

もととなるパルス

(FTIOB

端子に出力)を

2.5mS

ごとに出力先を切り替えることで、ロボット用モー タを

8

本出力することが可能になるわけです。

このとき、 切り替え時間に必要なのは、 最悪で

0.2mS

になります。

なお、出力の切り替えを、出力が

0

の時に行っていることに注意してください。

TC4051B

上で説明した、パルスの振り分けをおこなうのが

TC4051B

という

IC

です。

TC4051B

のピン接続図と真理値表を載せておきます。

13.8 TC4051B

のピン接続図

13.8 TC4051B

の真理値表 コントロールチャンネル 出力チャンネル

INH A B C TC4051B

0 0 0 0 0

0 1 0 0 1

0 0 1 0 2

0 0 0 0 3

0 0 0 0 4

0 0 0 0 5

0 0 0 0 6

0 0 0 0 7

1 * * * None

上の説明に対応させるならば、

COM

にもととなるパルスを入力し、

A,B,C

の値を変えることによっ て、 出力先を

0

から

7

までに切り替えることができるわけです。

13.8

から分かるように、

A=0,B=0,C=0

の時には

COM

から入力されたパルスは端子

0

から出力さ

れます。

A=1,B=0,C=0

の時にはパルスは端子

1

から、

A=0,B=1,C=0

の時にはパルスは端子

2

からというふ うになります。

COM

にたとえば

FTIOB

端子をつなぎ、0から

7

までの端子にサーボモータをつなぐことで、8個の サーボモータを制御できます。

このとき、マイコンにつなぐ端子は

COM

A、B、C

4

本ですみます。

FTIOC

端子、FTIOD端子にも

TC4051BTF

をつなげば、最大

24

本の

PWM

6

本の端子で制御で きることになります

(A、B、C

FTIOB

端子、FTIOC端子、FTIOD端子で共通にできます)。

回路図

今回のサンプルプログラムのための回路を図

13.9

に示します。

8

個のモータの信号線は、TC4051BPの

8

本の出力ピンにつないでください。

13.9

モータ回路図

今回のサンプルプログラムは、8個のサーボモータを

2

秒ごとに動かすというものです。