Arduinoが届くまで暇だったので、村田のジャイロスター搭載ボードAE-GYRO-SMDで角速度積分による動的角度計測をやってみようとした。
wiiモーションプラスいじる前にこれをやってみるべきだったんですがねホントは・・・。
しかしこれが意外にも手強く、静止状態ではそれが原点でなくても角度が0となってしまうよくわからない挙動になってしまった。
#define K_GYR (5*1000/1023)/0.67*10.1
#define D_T 0.01
void main(void){
int i;
int sum=0;
float angle=0,delta=0;
int adc0,adc1;
for(i=0;i<10;i++){
sum+=Get_ADC();
}
adc0=sum/10;
//無限ループ
while(1){
adc1 = Get_ADC();
}
}
//CMT0割り込み関数
void CMT0_interrupt(void){
CMT0.CMCSR.BIT.CMF=0;
delta = (adc1-adc0)*K_GYR;
angle += delta*D_T;
printf("%f\n",angle);
}
ジャイロの感度が0.67mV/deg/secでローパスフィルタのオペアンプの増幅率が10.1のはず。
例えば45°くらいに固定したら45°のままでいてほしいのに0°になっていく。まるで角速度をそのまま表示してるような挙動・・・。積分の仕方が悪いのか?でもなぁ・・・。せめて台形則くらいやってやるか。wiiモーションプラスも気になってたが、今度はこっちががが・・・。
そんなときArduinoが届いた。
速達で。
うわぁ。こんな・・・すてきな・・・。
クリスマスにこんなものが届いてしまったときの気持ちを想像してみてください。
子供「うぁあ!!すごーい!サンタさん、ありがとう!」
「でもね?パパ」
親父「なんだい?」
子供「USBケーブルが無いから書き込めないや!」
親父「ありゃ?そこには気づかなかった!ごめんよ」
親&子「・・・・・・」
「ハハハハハ!!」
なんか注意書きの冊子も綺麗だし、イカしたシールも入ってた・・・どこに貼れと?
これから何をやるべきか、それが問題だ。