AX-12安くてそこそこのトルクが出るシリアルサーボ(クリックでロボット王国から購入できます。)※AXシリーズの問題でありDXシリーズは大丈夫です!ただ、単純にPWM送れば動くって訳じゃないんで、ある程度シリアル通信に関しての知識が必要となりますが、そこら辺はマイコンやってる人ならどうにでもなるでしょう。2007/06/21公開Ver.2シリーズに比べて実行がかなり軽く、高速化されましたAX-12に加えて、Dynamixelシリーズ(RX-64・DX-117)でも動くことを確認しました、回路は各サーボのマニュアルに掲載されておりますH8/3052版も新しくしましたSH2/7045版が追加されましたユーザー関数名を一新しました。問題点(手抜き)受信データのチェックサムの真偽を書いてません。テストする環境がないので勝手に書き加えるにも行かず放置中・・・。マイコンとの接続AX-12に関しては単線双方向UART、DX-117・RX-64に関してはRS-485通信の回路を作成する必要があります。基本的にマイコンとはGND、TxD、RxD、DIRポートの4箇所の接続となります。(0.1μF)各サーボの回路図はベストテクノロジーさんのサイトからマニュアルをダウンロードしてください。5V駆動なのでそのまま回路を作成して構いませんが、CQ/Interface付録のSH2/7144基盤は3.3V駆動のため5V駆動のロジックIC・ドライブICを接続すると壊れる可能性があります。レベル変換ICを使用してください。3.3Vのレベル変換ICはSO基盤用のピッチ(1.27mm)が多いので、取り付けは少々難易度が上がります。Dynamixelの通信速度設定では、実際にサーボとマイコンで通信するわけですが、当然通信の速度(ボーレート)がお互いに同じ速度になっていないと、通信できません。設定されていますが、これには誤差を含んでいます。Dynamixelシリーズでは誤差に対して3%の許容があるのですが、実はマイコンの方も誤差を持っていて、お互いに3%未満の誤差でも、お互いの誤差を合わせると3%以上になって「通信できない」という事が、頻発します。H8/3052の中で、初期の57600bpsの設定で通信できるのはH8/3052だけです。AX用接続ケーブル」で行えます。設定できて便利だし、どちらも1000円なので買っていて損はないかもしれません。(といいつつ、僕はケーブルを持っていませんが・・・。H8/3052で設定用のプログラムを走らせて設定しています。)で!じゃあ、いくつに設定したらいいの!?って話ですよね。下に僕の使っている設定をまとめておきます。ちなみにダウンロードしたソースは下記の設定値に設定されてます。3052は、普通に通信できたんでちゃんと計算してません;;基本的な使い方メイン関数のなかでServo_Init()関数を呼べば、そのあとは全ての関数が使用できるようになります。基本的にはPos_sav[SAVNUM]のグローバル変数の中身を書き換えてall_send関数を呼べばその角度まで動きます。Pos_sav[SAVNUM]は、サーボのポジションで、Speed_sav[SAVNUM]はサーボの角速度です。設定範囲は0〜1023の範囲です。この辺はマニュアルにも記載してありますね。基本のソースを載せますと・・・。//ウェイト}}}これで、ID:0のサーボは行ったり来たりを繰り返します。不慮のパケットでIDやボーレートの書き換えを禁止するための命令です。動作中にIDが書き換わると誤動作の原因になるので、プログラムのはじめに実行しておきましょう。一度実行すると電源を切る以外解除方法がないので、実行中に動的にボーレートやIDを書き換えたい人は実行しなくてもいいです。普通に使う人はなるべく実行しておきましょう。Servo_OFF_ALL(void);すべてのサーボの動作をOFFにする。Servo_Limitmax_ALL(void);トルクリミットをMAXにする(エラーの解除に使用)エラーLEDが点滅して動かなくなった。)ではあえて復帰しない様にしてあります。同時にトルクリミット値が0になりますのでアラーム要因が解消していれば再設定する事で動作します。つまるところ、「温度が設定値を超えたとき」「設定したトルク以上の力でモーターが力を受けた」場合に発生するエラーに関して、最命令を実行する前に、Servo_Limitmax_ALL();を実行してください。それで、万事OKです。){prstr1("\n");}}sprintf(m,"%d個のAX-12モーターが検出されました\n",svn);prstr1(m);エラーのときに「-1」が返ってくるのを利用して表示させます。SAVNUMは検索する範囲の最大のIDを指定します。全検索の場合、254を代入します。