サーボテスターの製作 2022.6.13


    1.はじめに
    製作したサーボ(モーター)テスターです。

     このテスターは数年前に製作した物ですが今でもラジコン用サーボモーターの動作確認(サーボホーンの移動角度を調べたり、サーボの位置決め)に使用しています。

     ラジコン用のサーボモーターを使った工作を幾つか行ってきましたがモーターの取付の際の中点位置決めなどに重宝しました。

     機能はいたってシンプルで、無いよりは有った方が便利という程度のツールですが参考になればと思い公開してみました。


    2.使い方

     右の写真のようにDCジャックに+5VのACアダプタを接続し基板上のSVGの出力ピンにテストしたいサーボモーターを接続します。この状態で基板上のボリュームを左右に廻すとそれに応じてサーボモータが回転します。

     ボリュームの中央位置でモータの制御パルスは約1.5msの幅になります。ボリュームを右に一杯廻すとパルス幅は約2.6msに左に一杯廻すと約0.4msとなります。標準的なサーボモータの制御パルスの仕様は、1.0msec〜2.0msec(1.5±0.5msec)ですので、それよりも広い範囲のサーボモータにも対応できるようにしています。


    3.回 路

     製作した回路はマイコンが1個と抵抗1本、コンデンサ3個、ボリューム1個、プログラム書き込み用・シリアル入出力用・サーボ制御信号の各ヘッダピンとDCジャックという簡単な回路です。

     使ったマイコンは dsPIC30F3012 です。サーボテスターに使うには勿体ないPICですが手持ちの関係でこれを使いました。PICのファームウエアは MPLAB IDE で C30 を使ってC言語で開発しました。

     作成したソースコードは config.h, main.c の2つです。MPLAB のProjectファイルはこちらです。


    4.ファームウエア補足説明

     開発した main.c について補足しておきます。サーボモータの制御信号は、下図のようになります。

     制御信号はPICに内蔵のタイマー2(Timer2)と出力比較モジュール1(OutputCompare1)を使って生成しています。出力比較モジュールはPWMモードに設定します。

     制御信号(PWM)のパルス幅は、電源電圧を分圧したボリュームの出力電圧を内蔵のADコンバータで読み取って決定します。

     タイマー2による20msec毎の割込み処理の中でボリュームからの電圧を読み取り、読み取った値からパルス幅を生成するクロックカウント値を計算しその値を出力比較モジュールのレジスタに設定しています。ボリュームの回転角度に比例したパルスを生成するために、ボリュームはBタイプのものを使います。

     出力比較モジュールのクロックはタイマー2のクロックを使っており、そのクロック周波数は、29.48MHz/64=460625Hz(周期 2.17μ)です。クロックカウントが184なら 184x2.17μ=399.28μ=0.4msec、1196なら 1196x2.17μ=2595.32=2.6msec となります。

     周辺モジュールの設定をした後は割込み処理にて動くようになります。デバッグ用のシリアル信号の処理は完成後は不要なので main.c のソースコードからは削除しています。