趣味のマイコンいじり

安価なマイコンを利用して作成したアプリの紹介です。

ESP8266::MicroPython Stepperモータカーコントロール

<MicroPythonでのStepperモータコントロール
   ESP8266のボード上でのMicroPythonのコードによるステップモータの制御を
   検討して見ました。コントロールの対象を、2WDのロボットカーとし、先に
   検討したWebSocketのモジュールを利用すればスマホからのWiFiコント―ルで
   簡単に行える事が判りました。その様子は次の様なものでした。

  [システム]

     f:id:I_Satoh:20191022124549p:plain

  [主要部品]

  f:id:I_Satoh:20191022124738p:plain

 

  [構成]

  f:id:I_Satoh:20191022124844p:plain

   1.ESP8266の基板はWeMos D1 mini のクローンを利用
   2.モータドライバはA4988をトを利用
   3.モータには28BYJ-48をバイポーラ型に改造して利用
   4.ESP8266が取得したIPアドレスの表示用に0.96"のOLEDを利用
   5.駆動用の電源は、Ni-MHを4本(1.2Vx8)にして対応
   6.DCモータ駆動時の電圧低下補正用にDCtoDCの
          ステップアップコンバータを 利用

  [動作状況]

    

 

<テスト内容>
  モータの制御動作の検証に関しては次の事を目標としました。

     1.ドライバのA4988を1ポート出力で速度と回転方向の制御が
             できる事を確認
     2.WiFiを利用して、スマホのブラウザからロボットカーを
            制御する状況を確認
     3.Webページ上に動作シーケンスのリストを組んで、
            プログラム走行ができるのを確認

     結果としては、ほぼ期待通りの制御ができる事を確認しました。ただし、
     モータの回転が非常に遅いため、大きなタイヤを付けてそれをカバー
     する事を試みましたが、もう少し速度が欲しいと良いと思いました。

 [機器の接続]

    f:id:I_Satoh:20191022125355p:plain

  f:id:I_Satoh:20191022125439p:plain

 [モータドライバ制御]
     ステッパーモータドライバのA4988は、回転方向と回転のためにそれぞれ
    1ビットが必要で、1モータを2ビットで制御するインターフェイス
     なっていましたが、次の方式にする事で、1ポートのパルス極性で、
     回転方向と回転速度を制御できる様にしました。

      f:id:I_Satoh:20191022125742p:plain

       f:id:I_Satoh:20191022125943p:plain

     [電源システム]
      ステッパーモータドライバA4988のモータ用電圧は8V以上なので、
      CPUボード用の電源に更に別の電源を積み上げて、モータ用の電圧を
      上げる方式としました。また、モータがオンするとモータの電流により、
      そのままではCPUボード用の電圧も影響を受けて下がるので、以下の
      様に電圧低下を補うためのDC to DCのステップアップコンバータを
      利用しました。 

       f:id:I_Satoh:20191022130319p:plain

       f:id:I_Satoh:20191022130420p:plain

 [モータの改造]
     今回利用したステッパーモータは、ユニポーラタイプですがドライバの
     A4988はバイポーラ用のものなので以下の様な改造をして、バイポーラ型に
     改造しました。

     f:id:I_Satoh:20191022130720p:plain

 [オリジナルタイヤの取り付け]
     今回利用したステッパーモータは、減速比が大きくて回転速度がとても
     遅い為、ロボットカー用のモータとしては余り適していません。その為、
     大きなタイヤを取り付ける必要が有り、100円ショップで売られていた
     盆栽用の皿を利用しました。その取り付けは以下の様に行いました。

     f:id:I_Satoh:20191022131317p:plain

     f:id:I_Satoh:20191022131415p:plain

      f:id:I_Satoh:20191022131506p:plain

 

 [走行パラメータ]
     走行リストに左右のモータの速度(%)と走行時間を入力して、
     動作シーケンスリストに追加すれば、プログラム走行ができる様に
     しました。その時の走行パラメータに関しては、以下の様に計算しました。 

      --- 最大速度の計算 ---
        f:id:I_Satoh:20191022131815p:plain

      --- 回転走行の計算 ---

     

     f:id:I_Satoh:20191022132039p:plain

 [制御用のWebページ]
     MicroPpythonでは、Htmlファイルをそのまま扱えるのでとても便利です。
     今回作成したWebページは下記のもので、最初のものがページ全体で、
      ページはマニュアルコントロールとプログラムコントロールの部分から
      できていて、その次のものが、各々のコントロール部分を表したものです。

      --- 全体 ---

     f:id:I_Satoh:20191022133043p:plain

           f:id:I_Satoh:20191022133132p:plain

           f:id:I_Satoh:20191022133225p:plain

    [コード関連]
     実際のWiFiへのアクセスには、使っているネットワークのパラメータを
     コード上に記述する必要が有り下記の様に、その部分を変更する必要が
     有ります。 

     f:id:I_Satoh:20191022133520p:plain

    [コードダウンロード]

      Code download URL : https://drive.google.com/open?id=1V6OMweu8FtSdqbxJ2c6jOjJVD5gEB5uy