ワンチップマイクロコンピュータを使った実験装置
第4章 マイクロコンピュータを使った実験装置例

4.3 R/Cサーボモータを動かしてみよう(PIC)


はじめに

 PICマイクロコンピュータを使って,ラジコン模型用(R/C)サーボモータを動かしてみましょう。R/Cサーボモータは比較的安価で(5000〜10000円程度),トルクやスピードなど様々な種類があります。R/Cサーボモータを自由に運動制御することができれば,右写真のような魚ロボットを動かすことができます。
 それでは,PICの中でももっとも代表的なPIC 16F84/20Pを使って,R/Cサーボモータを動かす方法を紹介します。



R/Cサーボモータの制御信号

 市販の模型用ラジコン装置(プロポ)は,R/C送信機,R/C受信機,受信機用バッテリ,サーボモータで構成されています。ラジコンカーなどで普通に使う場合は,操作者がR/C送信機のスティックを操作して電波を飛ばします。R/C受信機は電波を受け取り,サーボモータに信号を送ります。サーボモータは,R/C送信機のスティックで指定された運動をします。すなわち,R/C受信機がサーボモータに送る信号と同じ信号をマイクロコンピュータで作ることで,R/Cサーボモータを自由に動かすことができます。
 右図はR/C受信機から出力される信号(パルス)を測定した結果です。右図の(a)はR/C送信機のスティックを一方に最も傾けた場合,(b)はスティックを中央の位置(中立点)にした場合,(c)は(a)と逆の方向に傾けた場合の信号です。この結果から,R/Cサーボモータは,周期が約19 ms(0.02 msの分解能で実測し,19.22 ms)のパルスによって位置制御ができることがわかりました。また,(a)の場合はON(+5 V)の時間が1.10 ms,(b)ではON(+5 V)の時間が1.54 ms,(c)ではON(+5 V)の時間が1.90 msとなっています。

(a) 一方に傾けた場合

(b) 中立点

(c) 逆に傾けた場合
R/Cサーボモータの制御パルス



回路の作成

 下図は,PIC 16F84/20Pを使って,R/Cサーボモータを動かすための回路図です。3端子レギュレータ78L05(U1),0.1μFコンデンサ(C1,C2),20MHzセラロック,スイッチ(SW1〜SW6)で構成されています。ポートBの0〜5番(6〜11番ピン,RB0〜RB5)に入力用のスイッチをつなぎ,ポートBの7番(13番ピン,RB7)にサーボモータの信号線(フタバ製サーボモータの場合は白線)を接続しています。

R/Cサーボモータを動かすための回路
(左の画像をクリックすると大きい画像が表示されます)

 下図(左)は,回路にR/Cサーボモータを取り付けた写真です(模型魚ロボットPPF-08i用)。下図(右)は回路の裏面の写真です。

模型魚ロボット用R/Cサーボモータ駆動回路



サンプルプログラム

 MEL BASIC Compilerを使用してプログラムを作成しました。

(1) サーボモータの位置制御
 最初に,R/Cサーボモータの位置制御をするための信号を発生させるプログラムを作成しました。これは,「PULSOUT」の命令でポートBを任意の時間(プログラム上は0.01 ms単位,ただしPICのクロックにより異なる)だけONとし,「PAUSE」の命令でポートを約17 ms(プログラム上は1 ms単位,ただしPICのクロックにより異なる)の間OFFとします。これを繰り返すことで,R/Cサーボモータの位置制御が可能となります。

(2) サーボモータの往復運動
 魚ロボットの尾ひれを往復運動させるために,R/Cサーボモータを周期的に動かすプログラムを作成しました。このプログラムでは,ポートRB7がONになる時間を周期的に変化させています。
サンプルプログラム1:ppf08_01.bas

(3) 複数のサーボモータの運動制御
 サンプルプログラム2は,2つのR/Cサーボモータに90 degの位相差をつけて周期的に運動させるプログラムです。サンプルプログラム3は,デモンストレーション用に開発してあり,5つの決められた運転モードを繰り返して動作します。これらのプログラムは,別の回路を使用しているので,使用しているポートが異なります。
サンプルプログラム2:ppf07_04.bas
サンプルプログラム3:ppf01_09.bas




双葉電子工業(ホビー用ラジオコントロール装置のページ)
魚ロボット・ホームページ

[ Microcomputer ] [ Hirata HOME ] [ Power and Energy Engineering Division ] [ NMRI HOME ]
Contact khirata@nmri.go.jp