近藤のB3MサーボとDynamixelのAXサーボを並列で動かす必要があったのでやってみました。
使用したのは
・KONDO B3M-SC-1170-A
・Dynamixel AX-12A
です。
どちらも通信方式は半二重通信なのでLTC485を使用すれば使い分けることができます。B3Mは差動通信なのでD+とD-が必要ですが、AXシリーズはD+だけ接続すればよいです。
接続は以下のようにしてください。TX, RXはデバイスのTX、RXです。DEはHighなら送信モード、Lowなら受信モードになります。送信のみの使用なら+5Vに接続してもいいです。
実は、この接続に秋月のUSBシリアル変換モジュール(FT232)を接続すると、公式の設定用ソフトが使えてしまいます。
USBシリアル変換モジュールFT232
ソフト
・B3M Managerソフトウェア | 近藤科学(B3Mサーボ用)
・Besttechnology - Dynamixel Configurator [DXCONF] - ナレッジベース(AXサーボ用)
この場合は以下のように接続です。
とりあえず、mbedでプログラムを書いてみました。
ライブラリは以下です
B3MServo : B3MServo - Library for Kondo B3M Servo Motor | Mbed
AX12A : AX-12 | Mbed
多分、バージョンの関係でAX12のライブラリからエラーが出ると思うんですけど、その場合は、AX12.hの183行目の SerialHalfDuplex を消して、代わりに Serial としてください。
#include "mbed.h" #include "AX12.h" #include "B3MServo.h" int main() { B3MServo myServo(p13, p14, NC); AX12 myax12(p13, p14, 0xFE, 115200); myServo.onTorque(0); while(1) { myax12.SetGoal(0); myServo.controlAngle(0, 0); wait_ms(1000); myax12.SetGoal(90); myServo.controlAngle(0, 90); wait_ms(1000); } }