ADXL202JEという2軸の加速度センサーがあります。
メーカーのデータシートを見ると、重力加速度を求める式は
A=(T1/T2-0.5)/12.5%
となるとの事。
Aが重力加速度で、単位はGになります。
T2は加速度センサーのPWM回路からの出力パルスのon時off時の合計のパルス長です。
T1は加速度センサーのPWM回路からの出力パルスのon時のパルス長です。
また、重力加速度Aは
A=Sinα[αは傾き角度]
とも表すことが出来ますから、重力加速度がわかれば傾き角度もわかります。
(例)
角度α 重力加速度A
0度 0.0000
15度 0.2588
30度 0.5000
60度 0.8660
90度 1.0000
というわけで、プログラムを組んでいるのですが、PIC16F84Aのアセンブラに掛け算や割り算の命令は無いので、足し算と引き算だけで上記の式をこなさねばなりません。はっきり言ってめんどくさいです。
とりあえず、
A=(T1/T2-0.5)/12.5%
は
A=(8T1-4T2)/T2
と変形出来ます。
重力加速度は-1(-90度)から1(90度)の間の値をとりますが、PICで符号付き浮動小数点の計算は面倒なので、0から255の間の数値になるように補正してしまいます(^^;
そういう訳で、求める式は以下のようになります。
PITCH=(8T1-4T2)/T2
PCON=PITCH*58+150
PCONの値は、-60度の時に約100、0度の時に150、60度の時に約200の数値をとります。
これは、サーボの動作角度と一致しますので、サーボの制御がしやすくなります。
手順
・[T1を8回足した数]から[T2を4回足した数]を引き、値を_Aとする。
・_AからT2が何回引けるか(0以下になるまで)カウントする。
・カウントした値が商(PITCH)となる。
・PITCHを58回足して、150足す。
これで、角度が”PCON”という値で出てきます。
という訳で、加速度センサーを使って角度を求める事が出来るわけですが、アセンブラで書くのはやはり面倒です。特に私みたいに、未だLEDをぴかぴか光らせて遊んでいるレベルの初心者が組むのは難しいです。やはり、Cのコンパイラを買おうかな。。。とりあえず、HI-TECH社のサイトからPIC C CompilerのLite版を落としてみました。MPLABと統合できて良さそうです。MPLAB6.x用のプラグインのインストールもありますが、7.10で問題無いのかは不明。まずは、使ってみます。
コメント
きょう千秋はパルスも制御したの?