ArduinoUNOで1つのバスで複数のS.BUSサーボを動かす
前回に引き続き、いまだに重い腰を上げてArduinoのスケッチ例を試してArduinoの使い方を学んでみる。今回は以前プロトコル解析したS.BUS通信をArduinoに実装して、1つのバスで複数のS.BUSサーボを動かしてみる。
S.BUS通信 論理反転回路
S.BUS通信は以前解析した通り、論理反転させる必要がある。しかし、ArduinoUNOにはRX220の拡張シリアルような機能がないので、外付け回路で論理反転させる必要がある。今回はNPNトランジスタの2SC1815をエミッタ接地して論理反転させた。ブレッドボードに構築した回路は下の回路図に示す。
S.BUSプロトコル解析に関する記事は下のリンクから飛べる kirikoshokunin.hatenablog.com
Arduino スケッチ
ArduinoでS.BUS通信する際に重要なのはシリアル通信の初期設定で、100kbpsで偶数パリティ、1データ8ビット
Serial.begin(SBUS_SPEED, SERIAL_8E2);
RXマイコンのときと異なり、ストップビットを2bitにしないとうまく動作しなかったのでストップビットを2bitに設定してある。 複数(6個)のS.BUSサーボをArduinoUNOで動かすスケッチを下に示す。目標角度送信部分は今は無理やり作っているが、リングバッファで構築したらスマートだと思う。
使用したS.BUSサーボ
今回使用したサーボは、S.BUS通信に対応している双葉電子工業製の”S-U300”と”HPS-H700” を使用した。
実行動画
Arduinoと論理反転回路、電源分岐回路、S-U300×1、HPS-H700×4を接続して動作させた、動画を下に示す。
8周遅れのArduino ArduinoUNOでS.BUSサーボを動かす