NHK大学ロボコンに向けて、モジュールの一つであるサーボドライバを作成しています。 使用サーボはGWS、HSRー5980SGの予定です。 【サーボ制御方法の簡単な説明】 分配器は74HC238を使用します。常にG1にPWMを、G2A,Bは0の状態にします。そして、A,B,Cの組み合わせによって、Y0~Y7のどこに電流を流すかを指定します。 これによって、どのサーボに信号を送るかを決めます。 分配器の入力と出力表です。
また、20msが一周期とするので、一つのサーボにつき2.5msを割り当てます。また、高速PWMを使います。 プリスケーラ値は設定しない予定です。 サーボは1.5msの時に中心(ニュートラル)です。 *外部クロック使用に際してのヒューズビットの設定*
11100110
(bit7~bit0)
詳しくはデータシート18目ページくらい、◆ヒューズビット参照してください。
~高速PWM制御の方法~ ATmega88 (書いてる途中)
TCNT1は0からICR1の値になるまでカウントされていきます。つまり、ICR1によって、パルス幅を設定するということです。 (今回はICR1の値を255に設定して、TCNT1は0~255までカウントされます。) そして、OCR1Aの値によってOC1AのON,OFFを決めます。 なぜならば、OCR1Aの値、または、ICR1の値とTCNT1の値が同じになった時にOC1Aの値をセットまたはクリアします。 OC1Aがセットかクリアどちらの状態で始まるのかはCOM1Aで決めます。 (今回はセットされた状態から始めるので、COM01Aの値は0b10です。【非反転動作】) ちなみに、OC1AのピンはPB1です。 WGM1では波形生成種別を設定する※データシートに表が載ってます。 (今回はICRをTOP値とする高速PWM制御をするのでWGM1 3~0は0b1110に設定してください。 ) COM01AやWGM1はTCCR1AとTCCR1Bの中にあります。(データシートに書いてあります。) また、タイマは16ビットあるので、TIMER1を使用します。
(詳しくはAVRマイコン・リファレンス・ブック p133) 回路図↓
実験の際はteratermというPCのソフトを使用します。(https://sites.google.com/a/robo-doshisha.org/wiki/seigyo-han/rrc-seigyo/i2c-bus-system/uart-i2c-bridge/ToriTerm2.zip?attredirects=0) http://nicotak.com/avr/making/fb168.html
参考文献:AVRマイコン・リファレンス・ブック 山根彰著 CQ出版社 2006年4月15日 参考にはしてないけど、良いと思ったURL:http://homepage3.nifty.com/rio_i/lab/avr/09pwm.html サーボ変更点・20MHzのクリスタルを追加する。
・アングルを9bitで表す。 ・アングルの値を0~180から0~511に変更する。 ・プロトコルの変更 ・チャンネルは0~7chまで存在する
・サーボタイプはST08(GWS),ST04(HSRー5980SG)とする。 ※ST05はマニュアルならば、問題なかったが、自動では精度の向上が必要なので、ST04に変更する。 【サーボタイプ】ST04の場合、0001 ST08の場合、0010 に設定する。 ・アングルは0~511の値をとるものとする。(2byte目に1byte目のbit0を加えた9bitで表す。)
更新日時:2010/12/11 {ちょっとしたサーボの制御方法の説明文を紹介。 2010/12/28 完成版(仮)回路図、基板図をアップ。(回路図も基板図の作成過程で少し改変しました。) 2010/01/08 基板図完成版改(仮)をアップ。 2010/01/17 基板図のコネクタを変更、やや、基板図改善 2010/02/10 実験基板完成、デバック開始 2010/02/13 タグを装着 |