Pololu Jrkは周波数入力をサポートしていて、1相のロータリーエンコーダによるフィードバック制御に対応しています。周波数入力は、速度制御のみサポートしています。
ロータリーエンコーダを次のように接続します。
Jrk G2 Configuration Utilityで「Feedback」タブを開き、「Feedback mode」を「Frequency」に設定し、「Reset to full range」をクリックします。
「Frequency feedback on FBT」内の「Measurement method」でモードを選択します。モードは次の2つがあり、エンコーダの出力する周波数によって選択します。
5 kHz以上のパルスでフィードバック制御を行う場合に効果的なモードです。Pulse countingモードでは設定する項目が「Pulse samples」と「Frequency divider」の2つがあります。
Pulse samplesは、パルス数を何サイクル分まで使用するかを指定します。Pololu Jrkは、計測したパルス数を10 ms(PIDサイクルを行う周期)ごとに加算しています。Pulse samplesを5に設定すると、過去5回の50 msの間にカウントしたパルス数を使用して周波数を算出します。周波数は、期間(Pulse samples×PIDサイクルを行う周期)の移動平均で求められます。
Frequency dividerは、算出した周波数を設定した値で除算して使用されます。パルス数が2047であふれるため、Pulse samplesで指定した期間内にパルス数が2047を超えるようならば1より大きい値を設定することで適切に周波数を設定できます。値を大きくすると低速時の性能が悪くなります。
Pulse timingモードでは、つぎの5つの項目を設定します。
設定の詳細は、つぎの表や計算方法を参考に設定してください。
パルスタイミングクロック | 周波数分周器 | 生パルス幅範囲 | フィードバック範囲(前方) | 周波数測定範囲 (50%のデューティ比を想定) |
---|---|---|---|---|
1.5 MHz | 1 | 58982 ~ 33554 | 3185 ~ 4048 | 12 Hz ~ 22 Hz |
1.5 MHz | 2 | 58982 ~ 16777 | 2616 ~ 4048 | 12 Hz ~ 44 Hz |
1.5 MHz | 4 | 58982 ~ 8388 | 2332 ~ 4048 | 12 Hz ~ 89 Hz |
1.5 MHz | 8 | 58982 ~ 4194 | 2190 ~ 4048 | 12 Hz ~ 178 Hz |
1.5 MHz | 16 | 58982 ~ 2097 | 2119 ~ 4048 | 12 Hz ~ 357 Hz |
1.5 MHz | 32 | 41943 ~ 1048 | 2098 ~ 4048 | 17 Hz ~ 715 Hz |
3 MHz | 32 | 41943 ~ 1048 | 2098 ~ 4048 | 35 Hz ~ 1.43 kHz |
6 MHz | 32 | 41943 ~ 1048 | 2098 ~ 4048 | 71 Hz ~ 2.86 kHz |
12 MHz | 32 | 41943 ~ 1048 | 2098 ~ 4048 | 143 Hz ~ 5.72 kHz |
24 MHz | 32 | 41943 ~ 1048 | 2098 ~ 4048 | 286 Hz ~ 11.4 kHz |
48 MHz | 32 | 41943 ~ 1048 | 2098 ~ 4048 | 572 Hz ~ 22.9 kHz |
48 MHz | 64 | 20971 ~ 524 | 2098 ~ 4048 | 1.14 kHz ~ 45.8 kHz |
48 MHz | 128 | 10485 ~ 262 | 2098 ~ 4048 | 2.29 kHz ~ 91.6 kHz |
48 MHz | 256 | 5242 ~ 131 | 2098 ~ 4048 | 4.58 kHz ~ 183 kHz |
48 MHz | 512 | 2621 ~ 65 | 2098 ~ 4048 | 9.16 kHz ~ 369 kHz |
48 MHz | 1024 | 1310 ~ 50 | 2098 ~ 3358 | 18.3 kHz ~ 480 kHz |
エンコーダの出力信号とパルスタイミングクロックの関係はつぎの図のようになります。
さらに詳しく算出すると次のようになります。
パルスタイミングクロックの周波数\(f_{ptc}\) 、周期\(T_{ptc}\)
\(n\)回目のパルスタイミングクロックが切り替わったときにエンコーダのパルスが検出された時のエンコーダの周期\(T_E\)は $$T_E=2nT_{ptc}=\frac{2n}{f_{ptc}}$$
また、エンコーダの周波数\(f_E\)は $$f_E=\frac{1}{T_E}=\frac{f_{ptc}}{2n}$$
さらに、カウントしたパルスタイミングクロックの回数をFrequency divisorで除算するため、Frequency divisorを\(d\)として、\(n\)に再度\(n/d\)を代入して $$f_E=\frac{f_{ptc}}{2n/d}=\frac{f_{ptc}}{2n}d$$
つまり、Frequency divisor倍測定可能な周波数範囲は広がっていきます。
設定が完了したら、右下の「Apply settings」をクリックして設定を適用します。
「PID」タブを開き、「Propotional coefficient」を1に、他のパラメータは0にし、右下の「Apply settings」をクリックして設定を適用します。
「Manually set target」のスライドバーを動かします。青いスライダが操作しているバーで、赤い点がポジションメータからフィードバックされた値です。スライダを動かすと赤い点が追従しようとします。モータを止める場合は左下の「Stop motor」をクリックします。
青いスライダが目的速度を指定していて、操作するとモータを回転させエンコーダのパルス数をカウントしながら目的速度へ制御します。
ここで設定したPIDパラメータはP制御のみの簡単なテスト用です。パラメータを適切に設定すれば追従性はさらに良くなります。