ロボカップジュニアのサッカーとロボットを楽しむブログです。
以前の記事でTJ3だけでHMC6352を使うという記事がありましたが、その件で質問させてください。現在ダイセンがHMC6352のボードを作って売っていてC-styleもHMC6352に対応しています。私はストロベリーリナックスで売っていたものを使っているのですが、ロボットを90度回しただけなのにセンサーモニターの値は180くらい回ってしまいます。2個あるのですが、もう片方は同じ場所で正常に作動するので外部からの影響ではないと思います。そこで キャリブレーションをして正常に戻るか試したいのですが、どのようにしてTJ3Bローダーにキャリブレーションのコードをプログラムしたらいいのか分かりません。よろしければ教えて下さい。返答よろしくお願いします。
はじめまして朝さん。では、D_I2C.cとD_I2C.hとC-CodeLib.txtのバックアップを取ります。D_I2C.c の中から「// HMC6352の初期化処理」探してそこから16行分をコピーしてすぐ下に貼り付けます。1行目を「// HMC6352のキャリブレーション」に書き換えます。2行目setをcalに書き換えます。8行目と9行目は削除します。47とGをHMC6325のデータシートをみて「Enter User Calibration Mode」の値に4CとLを「Exit User Calibration Mode」の値に書き換えます。手で動かす場合は、9行目に60秒ぐらいwaitを入れてゆっくり60秒で一回転させます。書き換えたら上書き保存。D_I2C.hの中のD_I2C_EXT BOOL set_hmc(void);の次にD_I2C_EXT BOOL cal_hmc(void);を1行書き加えます。書き換えたら上書き保存。C-CodeLib.txtの中のBOOL set_hmc(void); // HMC6352 Continus Mode Setupの次にBOOL cal_hmc(void); // HMC6352 Calibration Mode Setupを1行書き加えます。書き換えたら上書き保存。C-Codeで張り付けてビルド、実行します。setupでHMC6352をチェックするのを忘れずに。C-Codeの使い方は、ほかの人に聞いてください。おわり。C言語を少しずつ覚えましょう。がんばって。
自動にしたければhttp://xrexcele.blogspot.jp/2012/02/hmc6352.htmlのmotor部分6行を参考にしてください。
ストロベリー・リナックスさんのサポートページへのリンクhttp://strawberry-linux.com/support/12106/1190200使い方http://strawberry-linux.com/pub/hmc6352-manual.pdf平置きした状態で使う。しばらく回したり、動かしたりしていると自己修正されて直る。北磁極と真北には数度のずれがあり真北にするには補正が必要。
詳しくありがとうございます。キャリブレーションをすることが出来ました。
無事、キャリブレーション出来てよかったですね。報告ありがとうこざいます。
コメントを投稿
6 件のコメント:
以前の記事でTJ3だけでHMC6352を使うという記事がありましたが、その件で質問させてください。
現在ダイセンがHMC6352のボードを作って売っていてC-styleもHMC6352に対応しています。
私はストロベリーリナックスで売っていたものを使っているのですが、ロボットを90度回しただけなのにセンサーモニターの値は180くらい回ってしまいます。2個あるのですが、もう片方は同じ場所で正常に作動するので外部からの影響ではないと思います。
そこで キャリブレーションをして正常に戻るか試したいのですが、どのようにしてTJ3Bローダーにキャリブレーションのコードをプログラムしたらいいのか分かりません。
よろしければ教えて下さい。
返答よろしくお願いします。
はじめまして朝さん。
では、
D_I2C.cとD_I2C.hとC-CodeLib.txtのバックアップを取ります。
D_I2C.c の中から「// HMC6352の初期化処理」探して
そこから16行分をコピーしてすぐ下に貼り付けます。
1行目を「// HMC6352のキャリブレーション」に書き換えます。
2行目setをcalに書き換えます。
8行目と9行目は削除します。
47とGをHMC6325のデータシートをみて
「Enter User Calibration Mode」の値に
4CとLを「Exit User Calibration Mode」の値に書き換えます。
手で動かす場合は、9行目に60秒ぐらいwaitを入れて
ゆっくり60秒で一回転させます。
書き換えたら上書き保存。
D_I2C.hの中の
D_I2C_EXT BOOL set_hmc(void);の次に
D_I2C_EXT BOOL cal_hmc(void);を1行書き加えます。
書き換えたら上書き保存。
C-CodeLib.txtの中の
BOOL set_hmc(void);
// HMC6352 Continus Mode Setupの次に
BOOL cal_hmc(void);
// HMC6352 Calibration Mode Setupを
1行書き加えます。書き換えたら上書き保存。
C-Codeで張り付けてビルド、実行します。
setupでHMC6352をチェックするのを忘れずに。
C-Codeの使い方は、ほかの人に聞いてください。
おわり。
C言語を少しずつ覚えましょう。がんばって。
自動にしたければ
http://xrexcele.blogspot.jp/2012/02/hmc6352.html
のmotor部分6行を参考にしてください。
ストロベリー・リナックスさんのサポートページへのリンク
http://strawberry-linux.com/support/12106/1190200
使い方
http://strawberry-linux.com/pub/hmc6352-manual.pdf
平置きした状態で使う。
しばらく回したり、動かしたりしていると自己修正されて直る。
北磁極と真北には数度のずれがあり真北にするには補正が必要。
詳しくありがとうございます。
キャリブレーションをすることが出来ました。
無事、キャリブレーション出来てよかったですね。報告ありがとうこざいます。
コメントを投稿