壁切れ補正の誤差
このマウスは光センサの処理を1msの割り込み周期で1つずつ処理を行っている。
なぜまとめてやらないか?実はSH7137Fは1サイクルスキャンモードという、8個まとめて連続でAD変換する機能を持っている。ここで問題となるのがその変換時間1.25μsであり、順番にAD0からキュー処理でサンプルが行われていくのである。私の場合光センサの発行側はベーシックマウス流のコンデンサチャージ式であるが、このコンデンサの充電途中の2値の差分を利用して外乱を除去している。つまりLEDが完全に消えた値と飽和した値の差分を使っているわけではないのである。(そうしないと強い照明にやられる)
というわけで連続で変換した場合、LEDを点灯させてからサンプルするまでAD0とAD7で1.25*6=7.50μsの差が生じる。この差が無視できないのである。実測の結果みごとにズレていた。
更新周期が7msのため、たとえば1500mm/sで切れ目を通過した場合、最大10.5mmも壁切れ補正値に誤差が出るということになる。まいったな...
なぜまとめてやらないか?実はSH7137Fは1サイクルスキャンモードという、8個まとめて連続でAD変換する機能を持っている。ここで問題となるのがその変換時間1.25μsであり、順番にAD0からキュー処理でサンプルが行われていくのである。私の場合光センサの発行側はベーシックマウス流のコンデンサチャージ式であるが、このコンデンサの充電途中の2値の差分を利用して外乱を除去している。つまりLEDが完全に消えた値と飽和した値の差分を使っているわけではないのである。(そうしないと強い照明にやられる)
というわけで連続で変換した場合、LEDを点灯させてからサンプルするまでAD0とAD7で1.25*6=7.50μsの差が生じる。この差が無視できないのである。実測の結果みごとにズレていた。
更新周期が7msのため、たとえば1500mm/sで切れ目を通過した場合、最大10.5mmも壁切れ補正値に誤差が出るということになる。まいったな...
カテゴリ : マイクロマウス