ESP8266::MicroPython Stepperモータカーコントロール
<MicroPythonでのStepperモータコントロール>
ESP8266のボード上でのMicroPythonのコードによるステップモータの制御を
検討して見ました。コントロールの対象を、2WDのロボットカーとし、先に
検討したWebSocketのモジュールを利用すればスマホからのWiFiコント―ルで
簡単に行える事が判りました。その様子は次の様なものでした。
[システム]
[主要部品]
[構成]
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ページ上に動作シーケンスのリストを組んで、
プログラム走行ができるのを確認
結果としては、ほぼ期待通りの制御ができる事を確認しました。ただし、
モータの回転が非常に遅いため、大きなタイヤを付けてそれをカバー
する事を試みましたが、もう少し速度が欲しいと良いと思いました。
[機器の接続]
[モータドライバ制御]
ステッパーモータドライバのA4988は、回転方向と回転のためにそれぞれ
1ビットが必要で、1モータを2ビットで制御するインターフェイスと
なっていましたが、次の方式にする事で、1ポートのパルス極性で、
回転方向と回転速度を制御できる様にしました。
[電源システム]
ステッパーモータドライバA4988のモータ用電圧は8V以上なので、
CPUボード用の電源に更に別の電源を積み上げて、モータ用の電圧を
上げる方式としました。また、モータがオンするとモータの電流により、
そのままではCPUボード用の電圧も影響を受けて下がるので、以下の
様に電圧低下を補うためのDC to DCのステップアップコンバータを
利用しました。
[モータの改造]
今回利用したステッパーモータは、ユニポーラタイプですがドライバの
A4988はバイポーラ用のものなので以下の様な改造をして、バイポーラ型に
改造しました。
[オリジナルタイヤの取り付け]
今回利用したステッパーモータは、減速比が大きくて回転速度がとても
遅い為、ロボットカー用のモータとしては余り適していません。その為、
大きなタイヤを取り付ける必要が有り、100円ショップで売られていた
盆栽用の皿を利用しました。その取り付けは以下の様に行いました。
[走行パラメータ]
走行リストに左右のモータの速度(%)と走行時間を入力して、
動作シーケンスリストに追加すれば、プログラム走行ができる様に
しました。その時の走行パラメータに関しては、以下の様に計算しました。
--- 最大速度の計算 ---
--- 回転走行の計算 ---
[制御用のWebページ]
MicroPpythonでは、Htmlファイルをそのまま扱えるのでとても便利です。
今回作成したWebページは下記のもので、最初のものがページ全体で、
ページはマニュアルコントロールとプログラムコントロールの部分から
できていて、その次のものが、各々のコントロール部分を表したものです。
--- 全体 ---
[コード関連]
実際のWiFiへのアクセスには、使っているネットワークのパラメータを
コード上に記述する必要が有り下記の様に、その部分を変更する必要が
有ります。
[コードダウンロード]
Code download URL : https://drive.google.com/open?id=1V6OMweu8FtSdqbxJ2c6jOjJVD5gEB5uy