Now-How

あなたの「今、つくりたい」を手助けします

Futaba受信機(S-BUS)の数値読取とPPM出力の方法

概要

Futabaプロポ→受信機→SBUS→論理反転→ArduinoPPM→PixFalcon

Arduinoを介してPixFalconに入力を送る方法のまとめ。

ここではArduino(mega2560)を例に解説。

手順

【回路作成】

 受信機→Arduinoまでの回路は以下の図を参照。

f:id:zeemo4275:20171004152140p:plain

 TX3以降の回路は今回はPPM通信を使用するので作成しなくてよい。

 次にArduino(mega2560)→PixFalconを接続する。

 ArduinoのPWM出力を行えるデジタルピン(今回は10を使う)と

 PixFalconのPPM端子の信号読み取りピンを接続する。

 (電源はバッテリーから供給されるので線は信号用1本だけでよい)

 これで回路の配線は完了。

 

【プログラム】

 SBUSの読み取りとPPMの出力を組み合わせたサンプルプログラムを作成した。

 ダウンロードリンク:SBUS_PixFalcon_sample

 ファイル内のinoデータをダブルクリックして開く。

 以下に設定項目を示す。

 

 1.SBUSで読み取った値の変換

 この項目はメインタグの中段にある。

f:id:zeemo4275:20171004152605p:plain

 上記画像の上部を編集することで任意にSBUSの値を変換できる。

 ここではROLLの例で説明する。

 ROLL = map(receiver.getData(0),368,1680,1100,1900) -5;

 操作したい値の名前 = map( 任意のプロポの値 , 任意のプロポの値の範囲(最小値) , 

 任意のプロポの値の範囲(最大値) , PixFalconへ加える最小値 , PixFalconへ加える最大

 値) - 補正値 ;

 となっている。

 任意のプロポの値は画像下部のシリアルモニタ出力であらかじめ、どのレバー(スイッ

 チ)を動かしたときにどの番号の値がどのくらい(最小値~最大値)変化するのかを確か

 めておく。

 PixFalconへ加える値は任意に設定する。基本1000~2000であるが、PixFalconは

 1100(1090?)以下、1900(1890?)以上の値が入力されるとエラーとなって(実際の

 下限と上限はよく分からない)初期起動しないので、ここでは1100~1900としてい

 る。

 (1100~1900では起動した)

 (さらに1900~1100とすれば値を反転できる)

 また最後のマイナスの補正値はフタバプロポの中央値(1520)と実際送られてきている

 値(Mission Planerで確認)の中央値が違う場合があるのでその時はプラスマイナスして

 調整する。丁度なら0でよい。

 

 2.PPM出力の設定

 この項目はメインタグのSBUSの変換設定の下にある。 

f:id:zeemo4275:20171004152802p:plain

 PixFalconに送られるチャンネルの何番にどの値を送るかを任意に設定する。

 イコールの右側を任意に入れ替えればよい。

 また1000~2000の数字を直接書き込めばPixFalconはそのチャンネルにおいて

 プロポの入力を受け付けず、その値を維持し続ける。

 (ここでチャンネル番号が0~9がPixFalcon側では1~10となることに注意)

f:id:zeemo4275:20171004153130p:plain

 上記画像はdefineタブにあるPPMの初期設定の項目である。

 Chanel_numberのあとの数字を変更することでPPMにより出力されるチャンネルの数

 を変更できる。(12以上でPixFalconに読み取られなくなった)

 またsigPinの数字を変更するとPPMの出力ピンを変更できる。

 

【まとめ】

 以上でSBUS・PPMの設定は終わり。

 あとはメインループに必要なプログラムを打ち込めば終了!

 コンパイル、書き込みをして動かそう。

注意点

MEGA2560ならシリアルモニタを確認しつつ、SBUSも読み取れるが、

UNO、NANOはソフトウェアシリアルが一つしかないためシリアルモニタを確認しつつ

SBUSを読み取ることができない。

ただし、シリアルモニタを用いなければSBUSの読み取りは行える。

その場合はメインタブのSerial.beginをコメントアウトし、

Receiverタブの

 #define SERIAL_SBUS Serial3

 #define SERIAL_SBUS Serial

に変更するとよい。