明日は我が身の備忘録(あすびぼ)

自分向け備忘録です。頻繁に更新は難しいでしょうね

ArduinoUNO で Futaba RS405CBを動かす

f:id:kirikoshokunin:20210411142345j:plain

 前回は双葉サーボRS304MDをArduinoからTTL通信で動かしたが、今回はRS405CBをArduinoから動かしてみる。RS405CBはRS304MDと異なり、RS485 という通信方式を採用しているので、回路を変更する必要がある。

RS405CB

RS405CBは双葉電子工業製のコマンドサーボで通信は以下のような特徴があり、ホビーのロボットには使いやすい。

  • 通信の物理層:RS485
  • 動作角度:300 deg.
  • 板金部品に固定しやすい取り付け穴
  • ナットをはめる凹みがあるので雌ねじがバカにならない
  • 出力軸の角度、電流、温度、電源電圧等のフィードバックを得られる

しかし、値段が¥20,000と少し高い。

RS405CBの通信

RS485通信

 RS485通信は一方向の通信を2つの信号線の電圧差で信号の1,0を決める差動通信方式で、A,B,GNDの三本で双方向通信を行う。マイコンからは直接RS485通信で信号を出せることはあまりないので、RS485ドライバを間に挟んで通信を行う。その際に信号を受け取るか、送るかを切り替える信号が別途必要になる。また、差動通信はバスの両端に信号の反射を抑制するために終端抵抗を挿入する必要がある。RS485の場合は120 Ω を入れる。

 RS485通信を使用するメリットは、以下の通り。

  • 数百メートルの通信もできる
  • TTLのUARTよりも高速で通信が可能(RS405CBの場合は速くない)
  • プロトコルが規定されていないので、既存のUART通信プロトコルを流用できる。
  • コネクタが規定されていないので、自由度が高い
  • 環境の放射ノイズが多くても通信が通りやすい

RS405CBの通信考察

 結局、ホビーのロボットの場合は配線が一本多くなりドライバが必要になるというデメリット以上のメリットが得られるかは判断が難しい。 通信速度を10Mbps程度まで上げられるならメリットが大きいが、RS405CBは通信速度が遅いのでTTLの方が使い勝手が良いと思う。

 大型の設備、ロボット(数メートル級)なら恩恵は得られるかもしれないが、50㎝以内だったら配線が多くなる面倒さが強いだろう。ただし、信頼性が必要ならばRS485通信の方が良い。

 なので用途によって通信方式を選べるファミリー化とかしれくれたら良いのではないかと思う。

ArduinoUNOとRS405CBの回路

 前述したとおり、RS485通信を行うにはドライバを使用する必要がある。今回使用したドライバは「LT1785」というICを使用した。

f:id:kirikoshokunin:20210411130349p:plain
ArduinoUNO + RS485ドライバ回路図

RS405CBをArduinoUNOから動作させるスケッチ

 基本的にRS304MDと同じプログラムで動作するが、RS485ドライバのイネーブル信号を送信前にHighにする必要がある。今回のスケッチではRS405CBからデータを読み出すことをしていないのでLOWにしていなが、RS485バス上のデータを読むときはLowにする必要がある。

動作の様子

上述したスケッチでRS405CBを動作させた様子を下にしめす。

 

youtu.be