ドームコントローラーの回転角度制御部でのエンコーダーパルスカウント制御には、PIO(Programable IO)を使う方向で検討しております。エンコーダーパルスを検出論理変換等するPIO例は幾つか見つけていますが、今回の制御部ではホームポジション検出でカウントをリセットする事も含め検討、模索しております。今のところの仕様案は下記で検討しております。
1.仕様案
1)ポジションは原点(ホームポジション)からの位置カウンタ数とする。CWで「+」更新、CCWで「ー」更新。因みに CW(時計回り)はドームを上から見て右回り(N-E-S-W)で解釈。
2)エンコーダーはパルスA相、B相が有るものとし、High,Lowの遷移の組み合わせで4パルスと考慮出来るが、A相観点でHigh(立上り)等で1パルスと考慮する案もある。プログラム領域(32命令)の制限もあり、実装方式によって決定する。
3)ラズパイPico内主制御とのインタフェースは、FIFOを利用した位置情報要求&レスポンス対応とする。
4)ホームポジション検出時は、位置情報カウンターのリセット及びIRQを入れてラズパイPico内主制御側にホームである点を通知する方式も採る。通知の目的は対PC制御で通知を考慮している。命令数の制限にあたる場合は、IRQ通知はしない。
5)電源Onやリセット時は、情報が初期化されポジション不明であるので不定値(TBD)とする。
2.Pico内主制御とのインタフェース
1)FIFOを用いた要求&応答方式とする。従って、定期的なリクエスト送出を想定。
2)命令数条件で可能な場合ホームポジション通過でIRQ割込み。
3.制限事項
1)ホームポジション検知は同一のエンコーダーでの検出でなく、別のリミットスイッチにて検出となる。そのスイッチの特性上パルスの立上り&下がりでエンコーダーよりも長いパルスとなる可能性がある。その為、PIOプログラムの数行でホーム検出状態となる可能性がある。
2)ホームポジションは0が考えられるが、1回転のカウンタ数はCWとCCWでは異なる数と想定されるので、1回転相当のオフセットを加えてホームポジションカウンタ値と考える。この値は実測して定義に設定する。
2023/4/6 追記
ホームポジションを意識しつつA相、B相でのCW,CCWを判断する方式は3Bit情報になるため、PIOプログラムが複雑になるか困難と考えるので、CW,CCWを意識するのでなく回転による増分とホームポジションの2Bit情報で制御する方式に改める事とする。
再追記
今までは1つのPIOプログラムで処理を考えていた(3Bit処理)のですが、エンコーダー側とホームポジション側を分離した案も検討してみる事とします。
コメント