(2014.8.2 作成)
このサイトで公開しているプログラムは以下の論文を引用しています。
また、このページの最後で実際の動作を計算できるスプレッドシートがダウンロードできますので、そちらもあわせて参考にしてください。
ここで紹介している数式のパラメータは以下の通りです。
f |
タイマー周波数。[Hz] ここで紹介しているプログラムのRun()関数を実行する間隔ではなく、クラス内で計算用に用いているTimerクラスの周波数 |
n | 停止/等速回転から加減速し始めるタイミングを0として、そこから始まる通しのステップ番号。 |
ωn | 実効速度 [rad/s]。加減速時はω0が初速度、ω1が到達速度 |
ω' | 加速度 [rad/s2] |
Cn | n番目のカウント数。周波数:fで計測してnカウント目に次のステップを発生させる。 |
α | 1ステップの角度 [rad] |
n1 | 加速に要するステップ数 |
実効速度ωは以下の式で表されます。
n番目のパルス間隔Cnを時間に応じて求めることが実際に行うことになります。
右図でいうところのRamp / Smoothの2通りの台形駆動を行うことが出来ます。
ここで使用するのは以下の式になります。
ここで示しているのはあくまで基本的な式です。最高速度まで到達できずプロファイルが三角形になる場合などの処理もありますので、詳しくは元論文、ページ最後のスプレッドシート、公開しているソースコードなどを参考にしてください。
右図で言うところのRamp形式の加速・減速です。いくつかのサイトで紹介されているようにステップごとに固定値を追加していくと右図Simpleというプロファイルになるので、少しややこしいですがRamp形式の加減速を行います。
しかし下の式を見てわかるとおり計算は複雑です。
ここで
です。
速度0を超えて加速、減速は出来ません(回転方向を逆に出来ません)。
実際に計算を行えるスプレッドシートをしたからダウンロードできます。Microsoft Officeではなく、フリーのLibreOfficeで作成しています。未確認ですが、Excelでも開けるかもしれません。
シート中にオレンジで色づけされたセルが入力セルです。色々とパラメータを変更させるとグラフが変わるのでご確認ください。