●3軸加速度センサでサーボを 動かしてみよう
はじめに・・・ 手作りのスピコンやDMDではPWM信号を入出力して、なんとなく動かすことができまし たが、他の信号類でアナログ信号があるようで、ゲーム機や携帯電話などの画像表示制御す る際に、センサ類などからの出力でアナログ信号を使用しているようです。センサから得る 情報(アナログ信号)を活用して、ラジコンなどで使用するサーボを動かしてみることにしま した。センサから得られる情報(アナログ信号)が、ピッチコンとして活用できそうですので 無謀にもTBV式ピッチコンとしての製作試行です。とても難しく感じていますが・・・
・ ・ ・ ・ ・
●使用するセンサについて カイオニクス社のローノイズ3軸加速度センサを実装した8ピンの3軸加速度センサモジュ ール(KXM52−1050)で、位置変化を静電容量の変化として検出しており、測定範 囲が±2Gの低G加速度センサです。センサにより検出した3軸(X・Y・Z)方向のそれ ぞれの軸に対して働く加速度に応じた電圧が対応ピンに出力されます。センサ自体が傾くと 各軸に働く重力加速度の大きさも変移して、これにより姿勢変化の検出が可能となり、ピッ チコン制御として水平姿勢を維持させる最も重要な情報が得られます。 検出される加速度には、静的加速度と動的加速度の2種類あります。 @静的加速度(重力加速度) 地面(水底)方向の重力の大きさは、その物体の質量に、ほぼ比例しており、この比例定数 (重力加速度)に応じた反応特性を利用して、静的加速度(重力加速度)の算出要素値が電 圧の変化として出力されますが、安定した計測実行には、この電圧値からの移動平均値的な 要素を反映する必要性を感じます。  → 静的加速度(重力加速度)から、傾斜度を算出できそうです。 A動的加速度 進行方向に対して発生する加速度になると想定しますが・・・  → 動的加速度からの計算で速度が算出できそうですが、これは難しいですね (^^;
●簡易的に(X軸)情報を、A/D変換して測定値の推移を調べました。 センサ本体の上側を、水平にした状態を基準にして、センサを傾斜角度に合わせて、 静かに停止させた状態での計測です。 A/D変換値をEEPROMに保存(記憶)できるプログラム(SATBVD01)で 3軸加速度センサモジュールを簡易的に接続して計測したら下記の値が検出されました。 【本体の左側から見た傾斜の場合】 ・(+X) ← 側 (上方向)傾斜約90度:185 測定値 ・(+X) ← 側 (上方向)傾斜約45度:157 手計算 *上下位置間の中間値 ・(+X) ← 側  水平状態      :130 測定値 ・(+X) ← 側 (下方向)傾斜約45度:103 手計算 *上下位置間の中間値 ・(+X) ← 側 (下方向)傾斜約90度: 75 測定値 センサ本体を正確な角度位置に固定できませんので、目視による感覚的に傾斜角度を決め ています。傾斜約45度は、該当位置の上下位置の測定値を、単純に1/2計算しています。
・ ・ ・ ・ ・
●センサ自体の姿勢(X軸)情報より、サーボを動かす基本的な考え方です。 プロポ操作から通常のサーボ動作を行えますが、ニュートラル操作時のみ、センサ自体が操 作機になり、センサ自体の姿勢状態に反応してサーボが動きます。センサ自体の姿勢から検 出するX軸情報のみ取得して、疑似的(プロポ)操作からの入力パルス幅値を発生させます。 この疑似的な入力パルス幅値をプロクラム的に自動反映させてサーボを動かします。

センサ自体の設置(前後)方向を逆方向に設置すれば、サーボが動作する傾斜方向も変わり ますので用途に応じて任意な設定が可能です。これによりピッチコンとして使用できます。
・ ・ ・ ・ ・
●配線図です。

サーボ( Futaba S3003 )
■プログラムは・・・   ------------------------------------------------------------------------------   ・PCTESA01( VER A1.00 ) TBV式ピッチコン 試行版   ------------------------------------------------------------------------------       【 PIC12F683 】       __________ __________       | V |      | |       3〜5V+ --+ 1 Vdd(+) | Vss(-) 8 +-- 0V      --+ 2 GP5 |OUT GP0 7 +--> サーボ       --+ 3 GP4 | GP1 6 +--< X軸データ(アナログ)      サーボ-->+ 4 GP3 IN | GP2 5 +--< SW.水平ポジション設定       | |       +---------------------+   ------------------------------------------------------------------------------   ・PCTESB01( VER B1.00 ) TBV式ピッチコン 試行版     センサからのX軸情報を3回連続取得して、平均値を適用したが・・・      → サーボのギクシャク度は変わらず、動作が遅くなりました。   ------------------------------------------------------------------------------   ・PCTESC01( VER C1.00 ) TBV式ピッチコン 試行版     今度は、5回連続取得して、平均値を適用したが・・・      → 同じ状況ですが、更に、6回以上連続取得したら動きが変になりました。   ------------------------------------------------------------------------------   ・PCTESD01( VER D1.00 ) TBV式ピッチコン 試行版     通常操作処理と共用している出力パルス幅値テーブルを独立させ、疑似自動入力処     理の待ち時間調整など、PCTESA01プログラムをベースに改良しました。      → 通常操作処理のサーボ動作設定を、見直しする必要がありそうです。   ------------------------------------------------------------------------------
●テストボード上では、なんとなく動きましたが・・・ ギクシャクなサーボ動作で、なんとなく動かすことができましたが、微小な震動もセンサ検 知しますので、実装する際は、何らかの工夫で震動を抑制することが必要です。 センサからの情報活用方法が、なんとなくイメージできましたので初期段階として…OK!  → しかしながら… 中途半端なピッチコンもどきになりそうです。(^^;
・ ・ ・ ・ ・