概要
サーボモーターを20kサーボ からdynamixelへ組み替えた。
この記事はどちらかというと逆運動学というよりteensyでのdynamixelの制御法について。
dynamixel MX106R,EX106+ 通信仕様
dynamixel達にはTTL版、RS-485版とがある。今回用いたのはRS-485版のMX106R、EX106+。
MX106RはEX106+の後継機で、EX106+がprotocol 1.0のみ対応なのに対し、MX106Rは2.0が利用可能。protocol2.0は1.0よりもできることがいろいろ増えているらしい...が実際どう違うのかは知らない。位置制御だけならあまり変わらないかも。
RS-485は差動式・半二重・シリアル。マイコンから扱うには変換回路が必要になる。
(参考: このTTLという表現はあくまで俗称的な表現?で、本来「TTL」といえばTransistor Transistor Logic、ロジックレベルでよくつかう回路のこと。まあ、シリアルといってUARTを指すようなものです。)
必要な回路
RS-485用のロジックIC、SN75176BPを用いた。このICがRS-485の差動半二重をいつものシリアルにしてくれるらしい。回路は以下の記事を参考にした。
SN75176BPは5vレベルなのに対し、使うマイコン側は3.3vレベルなので、RXについてはレベルシフトが必要なことに注意。とりあえず適当に分圧すればいい。
また、長い通信配線に発生する伝送路の「反射」問題を解消するため、配線の両端に終端抵抗なるものを入れる必要があるらしい。とりあえず言われた通りにするがあまり意味は分かっていない。無くとも動きはした。
↓伝送路の反射、終端抵抗について資料(結局反射のメカニズムはわからなかった)
(話としては高い通信レートでもはや信号は波であり、波が固定端で位相がずれて帰ってくるような現象が信号線でも見られる...ということらしい。感覚的には分らんでもないがその原理は理解できなかった。)
ソフト
ArduinoIDEのライブラリ管理ツールから入手できるDynamixel2Arduinoライブラリを利用する。導入は以下の記事を参考。サンプルコードのシリアルやピン番号を用いる回路、マイコンに合わせる必要がある。
Dynamixel2ArduinoライブラリのAPIは以下の記事を参考。だいたいサンプル通りで構わないが、サンプルが全てのAPI例を示しているわけでないので使いたいときはそれぞれ調べる必要がある。
・ソフト面の一つ大事な仕様として、EEPROM書き込みを行う命令(protocol,baudrate,ID,oparatingModeの指定)はTORQUEをオフにした状態でないと受理されないらしい。
・試したところ、MX106をprotocol 1.0で動かすことはできなかった。そのため1.0と2.0を切り替えながら動作させることとなったが、特に問題はなかった。
・dynamixelへの電源を再度入れなおした場合、protocol 1.0では角度指定を与えるとすぐにその位置へ回転しトルクが入るが、2.0では初期化処理をやり直さなければトルクが入らない仕様のようだ。リスタート操作ができるようにするとデバッグ的によい。
・dynamixel本体赤色LEDは電源投入時に0.5sほど点灯する。このLEDはソフトで制御できるほか、過電流等の保護が働いた際(条件は指定できる?)、短い間隔で点滅し、再度電源を入れなおすまでトルクが入らなくなる。
実機動作
dynamixel MX-106R,EX-106+版 3+3軸垂直多関節アーム
— 6186milktech (@6186milktech_rt) September 24, 2025
(25' 08) pic.twitter.com/zY4Qn0eyDs
次
引き続き操作性の向上を。
...え こいつら一個8万とかすんの??ま??
少しいいこと思いついたので完成したら続き。
参考
・dynamixel製品についてのまとめ
・他のライブラリ。arduino Unoなどシリアルが貧弱なマイコンで回したいときに助かるかも。
・これも他のライブラリ。いくつかあるらしい。
・こちらは3ピンタイプをESPで使う記事。
おまけ:事案
制御テスト中に発生した事故。
土台($\theta_1$)の可動域が-135~135°から-180~180°まで増えたことに対応し、
制御側の制限をそれに引き上げた(両端含む)。
「両端含む」ため端を超えるような入力をすると値がジャンプする。
動作試験中にそれが発生しアーム先端が基板部に直撃。
露出していた基板裏の12v線に接触し短絡(推定)、teensyを破壊。変換回路やdynamixelは無事だった。
5to3.3の三端子レギュレータが破壊されただけならありがたいが... シリアル変換もいかれると...ちょっと...
ログ
2025-08-09 dynamixel MX106回せた
2025-08-12 アームフレーム組み立て,MX106数珠繋ぎ
2025-08-13 EX106+との共存,手首組み立て
2025-08-15 記事作成
2025-09-25 残りを書く、記事完成