今回はマイコンで三角関数を扱う際のちょっとした小技をお伝えします。
PICマイコンを始め、コンパイラで三角関数をサポートしているのはご存じの通りです。
しかしながら、三角関数を使用すると演算に多くの時間を要してしまいます。
モータの制御などを行う場合には三角関数を使うことによって処理時間が遅くなると
制御性能に大きく影響します。
そのため、マイコンの処理時間に影響を与えずに三角関数を使用する小技を紹介します。
その方法は配列であらかじめテーブルとして三角関数のデータを用意しておくということです。
三角関数のデータを定数としてあらかじめ定義しておきます。
例えば、
sin関数の場合
const float sine[72]={0.0,0.087,0.174,0.259,0.342,0.423,・・・};
配列の最後までいったら0に戻すという処理をすればマイコンで容易に扱えます。
演算を減らす為にfloatを使わずに100倍した値などを入れた整数版のsin関数を作るのも良いと思います。
プロジェクションボール等のサンプリング周期が求められる場合にこの小技が大いに発揮します。