«  | トップページ |  »

2004年5月16日 (日)



加速テーブル作成。

このBasicMouse/DCでは割り切って速度制御をあきらめ、サーボの目標位置を16KHzごとに更新し、それに対する位置サーボだけでコントロールしてみる。

------

ステッパーBasicMouseでは、タイマーコンペアマッチでパルスを各々精度よく出力している。
これはDCでも、そうであるに越したことはないのだけれど、このマウスでは使えるタイマーがまったく残ってない。

そこで、ソフトウエアですべて処理することを考える。
具体的には、次の目標位置更新までの残り時間をソフトウエアで管理し、16KHz割り込みごとに62.5usecを減らして行く。
計算値がアンダーフローするタイミングで、目標位置をインクリメント(またはデクリメント)し、加速テーブルから次のタイミングまでのインターバルデータを引き、残り時間に加算して処理を終える。これを左右でそれぞれ行う。処理の集中を避けるために、0.5msecおきに左右交互に行い、各々1msec間隔の処理とする。

加減速データもCPUで算出すると、自由度が高くていいのだけれど、H8-Tinyには荷が重いというもの。
オリジナルと同じくExcelで計算済みのテーブルを使うことにした。

目標値更新の時間精度は、最大62.5usecの誤差が出るけれど、累積誤差も必ず62.5usec以内に収まるし、ローカルサーボ自体が目標値に対して定常でも3~10ステップくらいの偏差が残っているようなので、問題にならない(と成立するので、うれしい...)

....文章で説明すると、なにがなんだかわからないけれど、実装してみると大体うまくいっているようだ。
バッテリーパックをくみたてていないので、迷路では走らせられないのだけれど。

今日はここまで。今日の割り込み処理時間14.0~28.9usec。そろそろいい感じになってきたが、未実装の処理も残り少なくなってきた。なんとか収まってほしいことろだ...

|

«  | トップページ |  »

コメント

コメントを書く



(ウェブ上には掲載しません)




トラックバック


この記事へのトラックバック一覧です: :

«  | トップページ |  »