はじめに
重力加速度の計算コードを書く前に、
取り扱う数値がどの位の大きさになるが把握して
変数のデーター型式を決めなければならない。
例えば int ならば次のようになる。
int 16ビットの符号付き数値
−32768 〜 32767
落下検出から重力加速度表示までの流れ
計算の流れと扱う数値
説明の都合、下記の前提をおく。
落下時間: 285.7 msec
落下距離: 0.4 m
time Capture サンプル: 8μsec
Timer1のcapture の値
S1検出信号で Timer1をクリアして、
S2検出信号がトリガーに入ると
Timer1のcapture レジスターには、
35713 が入る。
この値の意味は、
落下時間285.7 msecを 8μsec で割った値
コードの中では、stopT 変数に入れる。
stopT: 35713
重力加速度の計算式で使う値
stopTを μsec 単位で使いたいので
stopT X 8倍とする
stopT = 285700 μsec <= 落下時間の値になっている
10進6桁程度の数値となっているので
データー型式 long 32ビット符号付き整数 とする
10進数で9桁程度扱える。
long stopT
重力加速度の計算
重力加速度 g の計算式は、次のとおり。
g = 2 X .4 / (285700) / (285700) X 1E12
= 9.80
結果は、小数点付きの値となる。
これ以降の内部計算は、整数値として扱いたいので
g = g X 1000 としている
g = 9800
この範囲ならば、データー形式は、intで良い。
int g <= 重力加速度の表示
平均した重力加速度と落下時間の表示
unsigned long sumT <= 落下試験で取得した落下時間の合計
unsigned long aveT <= 落下時間の平均値
まとめ
落下時間 285.7 msec とすると
計算プログラムで使う変数の型式は、次のとおり。
long stopT <= capture 読取変数
unsigned long sumT <= 落下試験で取得した落下時間の合計
unsigned long aveT <= 落下時間の平均値
int g <= 重力加速度の表示

0 件のコメント:
コメントを投稿