日付1/20
DRV8873,MDを作ってみたものの。。。
MDを作ってみました。ICのパッドが地味にはんだ付けしにくいなって感じながら普通にはんだ付けして。データシート読みながらこのピンにこう接続すればいけるでしょっていうやつをやっていたんですけど、動かず。。。結局原因が謎のままICの発熱など色々よくわからないまま進んでいました。仕方なく2枚目の基板にもう一度きれいにはんだ付けして、作り直そうとしたときに結構綺麗にはんだ付けはできてしまったので、これはTwitterに載せなきゃって思いたったわけです。
ICの撮影って反射したりして難しいので色々試行錯誤しました。フラッシュを焚けばかなり綺麗に写ることがわかったのでそれをTwitterに投稿しようと思ったその時です。
あまりにも鮮明にICの文字が見えたのでそのICの名前を目視でちゃんと確認してみるとどうやら全く違うICの名前が書いてあります。ICだけ表記が違うということはよくあることなので一応合っているのかどうかをネットで検索してみると、、、

マルチプレクサでした。なんじゃそれ。
結局30個全部マルチプレクサを買っていることに。。。
IC単価は77円
まあなんやかんやで、ひとまず動かない理由(ありえんやろ)が解決(してはない)したので、、、
休みを無駄にしました。
関係無いですけど、オシロスコープとか安定化電源とかもうちょっといいの使いたいなと思いました。10Vで設定していた安定化電源がなぜか16Vになったり20Vになったり色々ぶっ飛んでいます。安定化電源が安定しないのはいかがなものかと思いました。なんでやねーん。
ほんと、ひどい...w
5Vのデバイス試してたら10Vとかになるわけです。ありえんでしょ!!!!
というわけでひとまず、おつらいデーでした。
備忘録程度に書いておきます。
私たちのMDで問題だったのは電流です。
LAP駆動ってのは正転逆転の繰り返し動作でスピード調節が行われるということで、古典的駆動方法として有名です。最近ではSM駆動が一般的らしいです。LAPのメリットとしては電流が連続で流れるということです。モーターの回転は電流と電圧で決まります。電圧は回転数、
電流はトルク(馬力)です。LAPは電流が連続で流れるのでトルクが出やすいことがわかります。

で、このモードのやつがそれです。駆動方式を切り替えるやつですね。
Phase and Enable(PH/EN)はLAP駆動ですね。これはG2と同じ駆動方式です。
PHはPhaseなので相。つまりは波の向きですね。正転/逆転の切り替えができます。ENはEnableなのでモーターをONにするかOFFにするかの切り替えです。これをすればLAP駆動ができます。SMチックなのもできますね。PHをHIGHで正転、PHをLOWで逆転、ENにPWMをぶち込んで速度を決められます。これだとPWM分解能をフルに使えるので実質SMですね。最&高

ですが、このSMチックなやつをした場合ショートブレーキと回転の繰り返しによるSM駆動なので電流どうなっちゃうんだろって感じです。2018機ではこの方式をとっていました。制御がしやすい。正転/逆転を繰り返して行うLAP駆動よりはマシかな。
一方PWM駆動

1つのモーターを駆動させるのに2つのPWMピンを必要とします。
でもこれロジックICでなんとかできないもんですかね。。。回転方向決めるピンとスピードを決めるピンみたいにしてPWM1本とデジタル1本で駆動できるようにした方がペリフェラル的に嬉しいです。でもこの方式を取れば、LAP駆動チックなことも同じハードウェアで再現できなくも無いです。まあ、どっちにしてもこれはこれで便利。ENとPHをLOWにしたらHi-Zになるっぽいのでモーターがスルスルな感じになりますね。いいねー。ただトルクが出ない。ENとPHをHIGHにすればショートブレーキがかかります。つまりは制御方式的にスピード0としたときに条件分岐ができてしまいます。
ブレーキの0とHi-Zの0
使い分け次第で制御の仕方に大きく関わってきそうです。
一応PWMモードでの駆動を前提としています
(なぜならPWMモードができればPH/EN駆動も作動するから)
プログラムも軽く書いてみました
void run(float M_speed){ if(abs(M_speed) > 100) { if(M_speed > 0) { M_speed = 100; }else{ M_speed = -100; } if(M_speed > 0) { //正 EN.write(0); PH.write(M_speed/100); }else{ //負 EN.write(M_speed/100); PH.write(0); } }else{//M_speed = 0 #ifdef MD_BRAKE EN.write(1); PH.write(1); #else EN.write(0); PH.write(0); #endif } }
こんな感じです
PWM駆動想定ですね。
#define MD_BRAKEをコメントアウトしたりしなかったりで決められるようにした、けどこれどうせどっかで仕様変更しないとだるそう。一応評価プログラムとしてこれを書いたまでなのでプログラマーさん頑張ってね。一応MDのスペック書いておきます
- Max100KHz
- Max10A
- Max38V Min4.5
- Logic voltage 1.8,3.3,5V support
我々は3.3Vかな。これ成功したらMD売れるんじゃね。そういえばこれ電流センスできます。


Loading Comments...