n_shinichi’s blog

日々の備忘録、 趣味のあれこれなど紹介 (すみません、メニュー、リンク、カテゴリー分けがうまくできてません、★記事一覧★で見てください...) NHK魔改造の夜ではDンソーのベテランアドバイザーってことで出ました♪

MENU

M5stack ATOM-S3 で3レベルインバータ駆動で ステッピングモータをポート2つだけ使って回す 

学校では教えてくれないモータ駆動の仕方だな。。。

ATOM3のスッテッピングモータ配線

 3レベル中性点をLEDのVfの非線形特性を利用して

 およそいい感じに電流ベクトルの大きさが一定で制御できるようにした♪

*************************************


最近のIoTマイコン、まだまだ使い方わかってない。。。

 IoTマイコンの技術進歩がすごいのしょっちゅう感じてる。

 

仕事じゃHV車のインバータ設計とかしてきたけど

 量産設計、忙しくやってると頭がガラパゴスになってるとこけっこうありそう。

 車載モノ、型が古いこなれたICモノよく使う。特に安全第一の走行系なんか。

   超安い。でもって品質が極められてる...?

 

ちょいと前から若い衆に最近のIoTマイコン進んでるから使ってみてって

ESP32関係、触り出してからは驚きの連続がまだ続いてる。

 激安であの高性能、ほんとすごい。

 

ポートが動的にモード切り替えれるの気付いてなかった・・・

 昔々のマイコンはポートの役割は決まってた。

 20年くらい前サイプレス、今はインフィニオンだったかな からPSoCが出て

 ポートの役割を動的に変えれるのがすごいなって思った。

 

でも、今はフツー?になってるなんて。

 

ESP32、Arduinoで pinMode(X,OUTPUT); pinMode(X,INTPUT);とか

setup()でフツー?設定するけど、それって 

そうじゃなきゃいけないってどっかで見たわけじゃないけど

setup()でしないといけないみたいに思い込んでた。

 

ふとこれって loop() の方でもできるんじゃね?って思った。

 まずコンパイルやってみた。 通るやん。。。

  書き込んでみた。エラーなんか出ない。

   ちゃんと動くじゃん!!!

スリーステートポートで使えるじゃん!

 

書く順番ちょっと間違えた。

  そもそもの始まりは小さいロボ、ステッピングモータをドライバ使わず

 いい感じで動かせないかな。。。が始まりだった。

 ドライバ使ってモータを回したりしてるとどうにもかさばる。

 でもって定格出力のほんのちょっとしか使ってない。

 

数cmくらいのミニカーロボとかならちょっと走らせたりとか

 するくらいなら数十mW程度の仕事で動ける。

ESP32のポートは約30m程度定常的に流せる。

  冷えてたらトータルmax1.2Aも流せる...

 

10g程度なら数十mWのパワーで十分動ける。

 M5 ATOM3は約7g

 

Φ6ステッピングモータでミクちゃんカー動かせてる。

 このモータの相抵抗が約30Ω

こいつをポートでフツーに動かすと3.3Vなら約100mA流れてしまう。

ちょいと大きい。PWM掛ければそれなりにいけるけど面倒。

30mAだと1v程度で動かさないといかん。。。

で思ったのがPSoCとかなら3.3Vの1/2電圧で動かして

簡単に3レベルいけるんだけど...だった。

ESP32も動的にポートをハイインピーダンスにできればなぁって思って、、、、あれ、

 

でも、ESP32のポートってsetupでピンモードを指定しておかないといけない...

 なんて見たことないぞ。ってふと思った。

  で、、、やってみようってなった。

 

そしたらできた♪♪♪  なんもおまじないもいらない。

スリーステート駆動できるやん♪

LEDでVfが2.3Vくらいので分けたら1Vで30mAっていけるやん。

 

おぉー そしたら車載、産業用の高級?モノと同じように

 3レベルインバータできるやん♪ Hブリッジなんかいらんくなる♪

 ポート2本でステッピングモータが全パターン駆動できるじゃん。

ポート叩くのにPWMで刻みも入れたら気の利いたベクトル制御もいけるな。。。

ちょうどいい感じのポート出力使い切りくらいでモータ駆動ができそう。

でもってやってみたのがこちら。