やること
数珠繋ぎにした近藤科学製のサーボモーター(ICS通信、メーカー独自規格)をTeensyなどで高速に反応させたいときのTIPSです。
・2台以上のICS通信サーボを同時に制御したい
・Teensy4.0など高速なマイコンを使い1.25Mbpsで制御したい
という条件下において、公式ライブラリそのままでは制御速度のパフォーマンスが発揮できないばかりか、まともに動かせないという問題があります。
これを解決します。
サーボとマイコンの半二重通信回路による接続方法、サーボへの給電方法などは別途ご検索ください。メーカーから専用の変換基板も発売されています。
サーボとマイコンの接続が成立しているという前提で話を進めさせていただきます。
参考)ICS変換基板の使用方法
結論
公式ライブラリICS Library for Arduino ver.2を使います。
一点だけ注意点として、サーボコマンドとサーボコマンドの間に
delayMicroseconds(2);
を入れるようにします。
こうすると解決します。
仕組み
Teensyなどによる高速なシリアル送受信処理が、ライブラリの想定を超えていることが原因のようです。
ライブラリをそのまま使用すると半二重信号の送信と受信の信号が重なる時間が発生してしまい、通信が成立しません。
なのでここにディレイを入れればうまく動くというカラクリです。
試したところディレイの値はTeensy4.0使用、1.25Mbpsでの通信時に2μsでもっとも安定するようです。