shotaのマイクロマウス研修16[回路設計④ モーダドライバ・エンコーダ回路]


こんにちは、shotaです。

社員研修として、オリジナルマウスの製作しています。

[前回の記事]では物体検出センサ回路(壁センサ)について書きました。

今回はモータドライバ・エンコーダ回路について書きます。

モータドライバ・エンコーダ回路 ブロック図

モータドライバ・エンコーダ回路のブロック図はこのようになりました。

ブロック図中央のモータドライバは、ESP32から送られてくる正転・逆転や回転速度(PWM Duty)の信号を、モータ出力電圧に変換します。ブロック図下のエンコーダは、マウスのホイールに取り付けられた磁石の磁気を読み取り、ホイールの角度を出力します。

モータにはMK06-4.5を使用します。[アールティWebショップ]から購入できます。

この構成は、回路流用元の[HM-StarterKit]とほぼ同じですが、エンコーダのMA700が新規設計非推奨だったため、後継機のMA702に変更しています。

モーダドライバ回路図

回路図はこのようになりました。

モータドライバ回路は、モータドライブIC [DRV883のデータシート]に書かれている参考回路とほぼ一致します。それとは別に、モータ電流を滑らかにするためにインダクタ(L1, L2)を追加しています。

マイクロマウスで使うモータは小さいため、電気的時定数が小さい傾向が有ります。その場合、PWM入力に対して電流が反応しやすくなるため、電流スパイクが発生しやすくなります。この電流によりモータが発熱したり、制御が不安定になるという問題が有ります。

インダクタを追加した理由は、モータ電流を滑らかにし、モータの発熱と制御の不安定さを抑えるためです。

参考:[パルス出力ステージ(PWM)とチョークコイル – マクソンアカデミー]

 

ESP32と接続するピンは、PH(正転・逆転の切り替え)、EN(モータ出力制御(PWM))、SLEEPの3つです。PHとENは、右・左モータで独立しています。SLEEPは右・左共通です。

 

ESP32のピンアサインについては後ほどまとめて記事にしますが、ここでESP32のPWM機能について簡単に触れておきます。

ESP32 MCPWM機能について

ESP32でモータ制御をする場合、MCPWM機能を使います。MCPWMはMotor Control Pulse Width Modulator (MCPWM)の略です。まさに、モータ制御のための機能ですね。

MCPWM機能の全容は[ESP32のTechnical Reference Manual]を参考にしてください。MCPWMのAPIは[こちら]のページに書かれています。また、サンプルコードが[GitHub]に公開されているので、先にコードを読んだほうが機能を理解しやすいかもしれません。

ここでは、APIのドキュメントからMCPWMの機能をざっくりとまとめてみます。

※ここに提示している画像は[ESP-IDF Programming Guide]内のものを使用しています

  • MCPWMユニットは2つあり、それぞれのユニットが3つのペア(A, B)の出力をもつ
    • 今回はモータを2つしか使わないので、UNIT0 のPWM0A&PWM0B、 PWM1A&PWM1Bを使います
    • MCPWM Overview
    • MCPWM Block Diagram
  • ブラシ付きモータや、ブラシレスモータが回せるように設計されている
    • 今回はブラシ付きモータを使用します。
    • Example of Brushed DC Motor Control with MCPWM
    • Example of Brushless DC Motor Control with MCPWM
  • PWMだけでなく、High / Lowも出力できる。
  •  PWM0とPWM1とで同期出力できる

 

ということで、ESP32でのモータ制御は問題なさそう(むしろAPIが整えられてて簡単そう)ということがわかりました。

エンコーダ回路図

エンコーダ回路は、エンコーダIC [MA702のデータシート]に書かれている参考回路とほぼ一致します。

ESP32とは、SPI通信でやり取りします。ESP32でSPI通信をするやり方は、[ESP32でMPU9250とSPI通信する]の記事にまとめらています。

次回の内容

次回は、残りのモーショントラッキング・インジケータ・ソフト書き込み回路について書きます。

 


Posted in DCマウス研修, ブログ, 研修