もうステップを見逃さない: クローズドループ・ステッピング制御による精度向上
役立つ情報を毎月お届けします
プライバシーを尊重します
はじめに
バイポーラ・ステッピングモータは、オープンループで動作しながら正確な位置制御を提供します。ロボット、加工機械および包装機械などの産業オートメーションアプリケーション、そして3Dプリンタおよびオフィス機器などの民生製品はステッピングの固有の位置保持機能を効果的に活用しています。これにより、複雑なセンサ技術、処理能力の要件、または複雑な制御アルゴリズムが不要になります。
ただし、オープンループ方式でステッピングモータを駆動するには、モーションプロファイルに誤差がないことが必要です。ステッピングの負荷が突然変化する不具合が発生すると、ステップ損失が発生し、ステッピングの位置とアプリケーションが認識する位置が同期しなくなります。ほとんどの場合、この位置追跡の損失は問題になります。たとえば、ラベルプリンタでは、ステップ損失により印刷がラベルに合わせてゆがんでしまい、結果としてラベル印刷がゆがんでしまう可能性があります。本稿では、ステッピングモータに位置を検知する能力を与え、作動中に発生する可能性のある誤差を積極的に修正するシンプルな実装方法について説明します。
仮定
本稿では、生産ラインの保守中に何らかのフラップやバルブを開閉する機構を駆動するために、1回転あたり200ステップのバイポーラ・ステッピングモータを採用していると仮定します。動きをスムーズにするために、8 段階のマイクロステップを備えたバイポーラ・ステッピングドライバを使用します。これにより、ロータの1回転あたり 1600ステップのコマンドになります。この機構を完全に開閉するには、ロータを複数回回転させる必要があります。簡単化のため、10回転必要と仮定します。この場合、コントローラはメカニズムを正常に作動させるためには、各方向に16,000ステップのコマンドを送信する必要があります。
電流がトルクの変動を克服するのに十分に大きくなると、ステッピングモータはそれに応じて動き、制御面を完全に開閉できます。この状況では、位置は保持されます。ただし、ステップが失われると、コントローラはモータとの同期を失い、作動が損なわれます。新しい技術では、印加された回転磁界が電流ゼロの値を通過するときにモータ巻線の逆起電力 (BEMF) を測定することにより、ストール検出などのチェックを提供しようと試みます。ストール検出は、モータが動いているかどうかをアプリケーションに伝えるだけで、実際に失われたステップ数は報告しません。このような場合、センシング技術を使用してロータ位置のループクローズを検討する価値があります。
センサの選択
場合によっては、単純なリミットスイッチ (磁気式、光学式、機械式など) を使用するだけで、制限に達するまでステッピングモータを駆動できることがあります。ただし、利用可能なスペースの都合上、このようなスイッチを使用できない場合も数多くあります。スイッチを使用できない場合は、モータの背面シャフトに光学シャフトエンコーダ (相対または絶対) を取り付けるのが合理的ですが、これらのソリューションには高い費用がかかります。このジレンマに対する手頃なソリューションは、非接触型角度位置センサです。このタイプのセンサでは、入手可能な磁気と、最大 15 ビットの分解能でロータの位置を抽出できるホールセンサを採用した高精度の半導体が使用されています。つまり、ロータの回転は最大215 = 32,768 単位、または0.01度 (360 / 32,768) にエンコードできます。
この例では、1600マイクロステップをエンコードするのに十分であるため、11.5ビットの分解能が選択されました。11.5ビットの分解能を使用すると、2,896.31の有効角度セグメントを取得できます。MA732のようなホール効果に基づく非接触センサは 11.5 ビットの分解能で絶対位置エンコーディングを提供します。
直径方向に磁化された円形磁石に結合すると、センサはシリアルペリフェラルインタフェース (SPI) ポートを介して1ミリ秒間隔で定期的にサンプリングされます (図1参照)。読み取りコマンドが発行されると、センサは16ビットワードで応答します。アプリケーションは16ビット相当の情報を使用しますが、システムの精度は実質11.5ビットの分解能によって決まります。
図1: MA732のMCUへの接続
パワーステージの選択
バイポーラ・ステッピングモータを駆動するには、2つのフルHブリッジが必要です。バイポーラ・ステッピングモータを駆動するための主な2つの実装方法は、マイクロコントローラユニット (MCU) を備えたデュアルHブリッジ・パワーステージを使用して正弦波と余弦波のペアを生成する方法と、マイクロステッピングに対応する完全に統合されたステップインデクサ・エンジンを使用する方法です。MCUとデュアルHブリッジの組み合わせを使用すると、正弦波電流を制御する方法の柔軟性が向上しますが、複雑さも増します。本稿では、最大16度のマイクロステップを備えた完全に機能集積されたステップインデクサを選択しました (図2参照)。本稿で統合されたステップインデクサは、MP6602であり、最大4Aの電流駆動を提供し、NEMA17およびNEMA23バイポーラ・ステッピングモータを駆動できます。一方、MCUはすべての制御信号を駆動し、SPIポートを介してインデクサと通信し、障害情報をサンプリングします。
図2: バイポーラ・ステッピングインデクサ接続
最終実装
クローズドループ・ステッピングモータの実装では、センサとパワーステージを市販のARM Cortex M4Fマイクロコントローラ (MCU) で制御する必要があります。MCUは、2つのチップ選択を備えた単一のSPIポートを介して両方のデバイスと通信します。内部タイマーがステップを生成します。ボードのサイズは1.35インチ x 1.35インチで、NEMA17ステッピングモータの後ろに収まるほど小さいものです (図3参照)。これにより、リファレンスデザインをNEMA23などのより大きなモータフレームサイズで使用できるようになります。
a) 上面
b) 底面
図3: プリント基板レイアウト
図4はモータ・アセンブリを示しています。図4aは、MA732センサに面した直径方向に磁化された円形磁石を備えたモータ・アセンブリを示し、図 4bは最終的なソリューションを示しています。
4a) モータ・アセンブリ
4b) 最終ソリューション (ハウジング・インビジブル)
図4: モータ・アセンブリ
絶対位置とセンサオーバーフロー
非接触型磁気ベースセンサは絶対位置エンコーダであると考えられていますが、これは 1回転あたりの場合にのみ当てはまります。つまり、ロータが各回転で角度移動する間、センサは MCU が読み取る16ビットの数値を提供し、これによりファームウェアは基本的に、特定の時点でのロータの絶対位置を知ることができます。
しかし、モータが回転すると、新しい回転は前の回転と区別がつかなくなります。角度位置の読み取り値をより大きな数値に追加することができ、これは、すべての角度の読み取り値を取得して全体の位置を絶対値として取得する変数 (Rotor_Angle_Absolute と呼ばれる) として表現できます。この変数は32ビットの符号付き整数です。モータが前進する場合は変数を増やし、後退する場合は変数を減らします。16ビットの読み取り値、1 回転あたり1600マイクロステップ、1000 rpmのステップレートを想定すると、変数がオーバーフローするまでに22.37時間かかります。MCUは、ロータがオーバーフロー領域を通過した場合でも、センサの読み取り値が正しく追加されるようにする必要があります。この絶対位置補正は、モータが時計回りに回転しているか反時計回りに回転しているかに関係なく (つまり、センサの位置が増加しているか減少しているかに関係なく)、実行する必要があります。
図5は、角度位置が時間の経過とともにどのように変化するかを示しています。
図5: 時間とともに変化する角度の位置
図5は、角度変位 (MA732_Angle_Delta、図5ではADと表記) が定期的な間隔 (1ミリ秒) で計算されることを示しています。各サンプル中、前回の読み取りは MA732_Angle_Prev (図5でPrev Angleと表示) に保存され、新しいサンプルは MA732_Angle_New (図5でNew Angleと表示) に保存されます。MA732_Angle_Deltaは式(1)で計算できます:
\[ \mathrm{MA732\_Angle\_Delta} = (\mathrm{MA732\_Angle\_New} - \mathrm{MA732\_Angle\_Prev}) \]式(1)の結果は MA732_Angle_Absoluteに加算されます。ロータが時計回り (前進) に動いた場合、変位は正となり、モータが反時計回り (後進) に動いた場合、変位は負となります。
角度センサのオーバーフロー時には特別な考慮が必要です。センサが最大値0xFFFF (図5ではOvF ADと表示) を超えて進む場合、またはセンサの位置が 0x0000 (図5ではOvF-AD と表示) を超えて減少する場合、前の式は使用できなくなります。どちらの状況でも、FWロジックは、処理するケースに応じて、次のいずれかの式を選択します。角度の変位が加算時にオーバーフローし、最大値 (OvF AD) を超える場合、MA732_Angle_Deltaは式(2)で計算できます:
\[ \mathrm{MA732\_Angle\_Delta} = 65535 + \mathrm{MA732\_Angle\_Delta} \]減算時に角度変位がオーバーフローし、最小値 (OvF-AD) を下回った場合、MA732_Angle_Deltaは式(3)で計算できます:
\[ \mathrm{MA732\_Angle\_Delta} = -\left(65535 - \mathrm{MA732\_Angle\_Delta}\right) \]位置制御アルゴリズム
センササンプルから導出された絶対位置が取得されると、現在の位置を位置コマンド (Position_Command) と比較することで、位置のループを閉じることができます。この実施では、シンプルなシリアル通信プロトコルを使用して、位置コマンドを外部コントローラ経由でモータのMCUに送信します。たとえば、本稿で紹介した、フラップを開閉するステッピングモータを考えてみます。現在の位置が0であるとすると、モータに655,530まで移動するように命令することができ、これは時計回りに10回転することを意味します。センサがサンプリングされ絶対位置が取得されるたびに、絶対位置コマンド誤差 (POS_Command_Error) は式(4)で計算できます:
\[ \mathrm{POS\_Command\_Error} = \mathrm{POS\_Command} - \mathrm{MA732\_Angle\_Absolute} \]誤差が正の場合、MP6602 DIR入力はハイになります。誤差が負の場合、MP6602 DIR入力はローなります。このとき、POS_Command_Errorは絶対値 (ABS_Error) に変換されます。ここで重要なのは、タイマーを使用してステップコマンドを生成し、誤差を0に近づくまで減らすことです。このタイマーの周波数は比例ゲインによって制御され、誤差が大きいほどステップ周波数が大きくなり、誤差が小さくなるにつれてステップ周波数が小さくなります。誤差がゼロに近づくと、モータが停止し、作動が終了します。
指示された位置を維持しながら不要な振動を回避するために、約3マイクロステップのデッドバンドが設定されました。誤差をさらにゼロに近づける必要がある場合は、複数の比例ゲインを実装できます。たとえば、誤差が大きい間は、誤差が3マイクロステップに近づくまで、モータを制御するために、より大きなゲインを使用できます。それ以降は、はるかに小さいゲインを使用して、モータ ホームを±1マイクロステップ以内に近づけることができます。
結論
市販のマイクロコントローラを使用して、SPIポートを介してステッピングモータ・ドライバとホールセンサベースのセンサをインタフェース接続できます。ファームウェアは位置センサを継続的に照会し、モータのロータ位置を常に推定することができます。この位置をコマンドで指定された位置と比較することで、モータを整流し、コマンドで指定された位置にタイムリーに到達させることができます。外部の力によってモータのステップが失われた場合、センサ情報は失われたステップ数を追跡し、マイクロコントローラが位置のループを閉じて、ステッピングモータをコマンドの位置に正常に移動します。
ステッピングモータは主にオープンループアプリケーションで使用されますが、位置でループを閉じることには多くの利点があります。MA732のような費用対効果の高いホールセンサ技術、およびMP6602のような使いやすいインデックスベースのステッピングドライバを採用することで、アプリケーションはステッピングベースのアプリケーションにサーボのような特性を追加できるようになりました。MPSは、 それぞれの特定のデザインのニーズに合わせて幅広い磁気角度センサとステッピングドライバを提供します。
_______________________
興味のある内容でしたか? お役に立つ情報をメールでお届けします。今すぐ登録を!
アカウントにログイン
新しいアカウントを作成