基本問題
応用問題
Problem 2 rpmからの逆算
回転数 3,000 rpm のモーターに,1 回転で 4 パルスを出す回転センサーが付いている.パルス周期を 2 MHz のタイマーで計測すると,何カウントになるか.
Problem 3 タイマーの限界
1 回転で 2 パルスを出す回転センサーを1 MHzのタイマーで計測するとする.タイマーが 16 ビット(最大 65,535 カウント)の場合,オーバーフローせずに計測できる最低の回転数は毎秒約何回転か.
応用問題(統計・データサイエンス)
Problem 4 誤差の伝搬
- モーターの軸に回転センサーが付いており,軸が 1 回転するごとにパルスを \(k = 2\) 回出力する.
- このパルスの周期(立ち上がりから次の立ち上がりまでの時間)を,クロック周波数 \(f = 1\) MHz でカウントアップするタイマーで計測する.1 カウントは \(1,\mu\)s に相当する.
- ある時点で計測したカウント値は \(N = 10{,}000\) であった.
- タイマーは 1 カウント単位でしか時間を測れないため,カウント値には量子化誤差が含まれる.真の周期を \(T\) とすると \(N = T f + e\) と表せ,誤差 \(e\) は区間 \([-0.5,\ 0.5]\) 上の一様分布に従うものとする.
- 回転数(毎秒)は \(\text{rps} = \dfrac{f}{kN}\) で計算する.
Questions
- 量子化誤差 \(e\) の標準偏差 \(\mathrm{SD}(e)\) を求めよ.
- デルタ法(1 次のテイラー近似)を用いて,回転数 \(r\) の標準誤差を求めよ.有効数字 2 桁で答えること.
- 回転数の相対誤差 \(\mathrm{SD}(r)/r\) は何 % か.また,同じタイマーとセンサーで計測したカウント値が \(N = 100\) だった場合(高速回転),相対誤差は何 % になるか.
Problem 5 打ち切りの扱い
- 工場のモーター 1,000 台について,回転数を 1 回ずつ計測した.
- 各モーターの軸には,1 回転するごとにパルスを 2 回出力する回転センサーが付いている.回転数は,このパルスの周期(立ち上がりから次の立ち上がりまでの時間)をタイマーで計測して求める.
- タイマーは 1 MHz のクロックでカウントアップし(1 カウント \(= 1\,\mu\)s),16 ビットのため最大 65,535 カウントまでしか数えられない.パルス周期がこれを超えるとオーバーフローとなり,カウント値は得られず「OVF」フラグだけが記録される.
- 計測結果は,カウント値が得られた 800 台と,OVF の 200 台(2 割)であった.
- 担当者は OVF の 200 台を「欠損」として除外し,残り 800 台の平均回転数を報告しようとしている.
Questions
- OVF が記録されたモーターについて,回転数に関して何が分かるか.「回転数は毎秒約○回転未満」の形で答えよ.
- 800 台だけで平均を取ると,全 1,000 台の平均回転数に対してどちら向きに偏るか.理由とともに答えよ.
- OVF のデータを捨てずに分析するには,どのような統計手法を使えばよいか.
- 計測側(ハードウェア・ファームウェア)でできる対策を 2 つ挙げよ.
Appendix: 量子化誤差発生の仕組み
タイマーは「刻みの本数」しか数えられない
タイマーは,パルスの開始エッジから終了エッジまでの間に入ったクロックの立ち上がり(刻み)の本数 \(N\) を数えます. 一方で,センサーのパルスはクロックとは無関係なタイミングで立ち上がるので,エッジが刻みと刻みの間に来ることがほとんどです.
上図の例では,
- 開始エッジから最初の刻みまでの端数:\(\delta_s = 0.5\) カウント
- 最後の刻みから終了エッジまでの端数:\(\delta_e = 0.25\) カウント
- 真の周期:\(Tf = 7.75\) カウント(実数)
- タイマーが数えた刻みの本数:\(N = 8\) カウント(整数)
となっています.赤い区間(端数)は 1 カウント未満なので,タイマーには見えません.
誤差 \(e\) の式
数えた \(N\) 本の刻みの間には \(N-1\) 個の間隔があり,真の周期はその両端に端数を足したものです.
\[ Tf = \delta_s + (N - 1) + \delta_e \]
したがって量子化誤差は
\[ e = N - Tf = 1 - (\delta_s + \delta_e) \]
となり,上図では \(e = 8 - 7.75 = 0.25\) です. つまり誤差の大きさは端数 \(\delta_s,\ \delta_e\) だけで決まり,周期の長さ(\(N = 8\) でも \(N = 10{,}000\) でも)にはよりません.
なぜ確率変数として扱うのか
パルスのエッジとクロックの位相関係は計測のたびにばらばらなので,\(\delta_s,\ \delta_e\) も,したがって \(e\) も毎回変わります. そこで,本問では \(e\) を確率変数とみなして \(e \sim \operatorname{U}[-0.5,\ 0.5]\) と簡易的にモデル化しています.
誤差の絶対的な大きさが \(N\) によらずほぼ一定であることから,相対誤差 \(e / N\) は \(N\) が小さいほど(高速回転・低クロック周波数ほど)大きくなります.
📘 用語集
glossary:
- def: 量子化誤差 (Quantization Error)
description: |
連続的な量(時間・電圧など)を,離散的な最小単位(タイマーの 1 カウント,ADC の 1 LSB など)に丸めて表すときに生じる誤差.真の値と,丸めた結果の値との差として定義される.タイマー計測では 1 カウント未満の時間を区別できないため,カウント値 N は真の値 T × f から最大で約 ±0.5 カウントずれる.誤差の大きさはカウント値によらずほぼ一定なので,カウント値が小さいほど(高速回転・低クロック周波数ほど)相対誤差は大きくなる.
- def: 分解能 (Resolution)
description: |
計測器が区別できる最小の変化量.タイマーによる周期計測では 1 カウントに相当する時間 1/f が時間の分解能で,1 MHz クロックなら 1 µs,プリスケーラで ÷8 に分周すると 8 µs になる.回転数に換算した分解能は 1 カウントの違いによる rps の差(およそ rps/N)なので,カウント値 N が小さい高速回転ほど粗くなる.分解能は「どこまで細かく読めるか」を表す量であり,「真の値にどれだけ近いか」を表す精度(確度)とは別の概念である.