サーボドライバ

 
NHK大学ロボコンに向けて、モジュールの一つであるサーボドライバを作成しています。
使用サーボはGWS、HSRー5980SGの予定です。

【サーボ制御方法の簡単な説明】
分配器は74HC238を使用します。常にG1にPWMを、G2A,Bは0の状態にします。そして、A,B,Cの組み合わせによって、Y0~Y7のどこに電流を流すかを指定します。
これによって、どのサーボに信号を送るかを決めます。

分配器の入力と出力表です。
入力 - 出力
G1 #G2A #G2B C B A
Y0 Y1 Y2 Y3 Y4 Y5 Y6 Y7
1 0 0 0 0 0
1 0 0 0 0 0 0 0
1 0 0 0 0 1
0 1 0 0 0 0 0 0
1 0 0 0 1 0
0 0 1 0 0 0 0 0
1 0 0 0 1 1
0 0 0 1 0 0 0 0
1 0 0 1 0 0
0 0 0 0 1 0 0 0
1 0 0 1 0 1
0 0 0 0 0 1 0 0
1 0 0 1 1 0
0 0 0 0 0 0 1 0
1 0 0 1 1 1
0 0 0 0 0 0 0 1


また、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 タグを装着
              
                
Ĉ
Robo Kirarin,
2010/12/28 22:45
ċ
pro.txt
(8k)
Robo Kirarin,
2011/02/16 23:35
ċ
servodriver.CE3
(57k)
Robo Kirarin,
2010/12/28 22:45
ċ
servodriver.mb3
(97k)
Robo Kirarin,
2011/02/09 3:05
ċ
servoprogram.zip
(38k)
Robo Kirarin,
2011/07/12 2:45
Ĉ
Robo Kirarin,
2010/12/28 22:45
Ĉ
Robo Kirarin,
2011/02/16 23:35
ċ
チェック内容(サーボドライバ)
(0k)
Robo Kirarin,
2011/01/08 0:20
Comments