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が届いた。
速達で。

Nec_0506

うわぁ。こんな・・・すてきな・・・。
クリスマスにこんなものが届いてしまったときの気持ちを想像してみてください。

Nec_0505

子供「うぁあ!!すごーい!サンタさん、ありがとう!」
   「でもね?パパ」
親父「なんだい?」
子供「USBケーブルが無いから書き込めないや!」
親父「ありゃ?そこには気づかなかった!ごめんよ」
親&子「・・・・・・」
     「ハハハハハ!!」

なんか注意書きの冊子も綺麗だし、イカしたシールも入ってた・・・どこに貼れと?

Nec_0504

これから何をやるべきか、それが問題だ。