ArduinoUNO で Futaba RS405CBを動かす
前回は双葉サーボ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を使用した。
RS405CBをArduinoUNOから動作させるスケッチ
基本的にRS304MDと同じプログラムで動作するが、RS485ドライバのイネーブル信号を送信前にHighにする必要がある。今回のスケッチではRS405CBからデータを読み出すことをしていないのでLOWにしていなが、RS485バス上のデータを読むときはLowにする必要がある。
動作の様子
上述したスケッチでRS405CBを動作させた様子を下にしめす。