2014年3月1日土曜日
CAN経由のサーボコントローラ
CAN経由でサーボを制御できるコントローラを作ってみました
STBeeMiniの下にDIPのMCP2551が乗っています
サーボ用の電源は外部から供給し、マイコンの電源はCANに使われる配線のもう1ペアで供給します
そのためケーブルはツイストペアが2ペア入っているケーブルで、ものすごく硬くて太いです
このケーブルは100m売りで、あと99mくらいあります ジャマです…
ビットレートは多分750kbpsくらいです
STM32F1のペリフェラルはあまり自由にビットレートを設定できないのが不便ですね
データフォーマットとして
拡張CAN(アドレス29bit)
1バイト目がコマンド(サーボ制御は2)
2バイト目が対象のサーボ(現状1-4の範囲)
3バイト目がパルス幅(マイクロ秒)のMSB
4バイト目がパルス幅(マイクロ秒)のLSB
という感じになっています
CANはこういう「何かに命令を出す」というデータが苦手で、全体に命令を出す もしくは全体にお知らせする というのが適しています
今回はコントローラ1個1個に違うメッセージアドレスを設定するという方法で対応していますが、あまりいい方法では無いですね
サーボ制御はTIM2のPWMを使っています
これはGPIOA0-3に出力ポートがあるので使いやすいです
何に使うかとかは特に考えていなくて、信頼性の要求される用途 例えばモデルロケットの動翼とかに使えそうですが そもそもCANコントローラ経由で制御するとなると全長3mクラスとかにならない限りメリットが無いので、あまり現実的な用途ではないですね
家の中で電気のスイッチを押したりするのが関の山かなぁ と思います
登録:
コメントの投稿 (Atom)
0 件のコメント:
コメントを投稿