夏休みといえばMD動くかなチャレンジですね!!去年もしたのでもうこれは恒例行事ですね。
(MDはMotor Driverの略です)
今回のMDはこちらです。
VNH2SP30
STマイクロ製のモータードライバーを使ったモータードライバモジュールです。
ロボカッパーならみんな知っているであろうダイセン電子工業で売っている4CHモーターコントローラーに乗っているICと同じです。僕の買った購入元はこちらです
MDのスペック
- 動作電圧:直流5.5V~16V
- 駆動電流(連続):最大14A
- 駆動電流(ピーク):最大30A
- PWM制御の周波数:最大20kHz
- 電源逆接続保護回路
基本的にモーターを動かすなら十分な性能をしています。
一時ロボカップ界隈で中華VNHが流行りました。2016年のSSSというチームの人がこれを使って安くロボットを作ったからです。中華MDは中華と付くくらいなので安いけど性能はイマイチ
と言ったところです。
今回試すのは中華VNHなのですが、最近Twitterで情報収集をしていたところこの中華VNH基板を買ったらほとんどが使えないゴミが届いたというような報告を散見していました。
ちょっとビビりました。
僕もこのMDを使って大会に参加しましたが、このようなことはなかったので多分大丈夫だろと思って購入しました。上に僕が買ったショップのリンクがあります。
検証。実際どうなのか
Aliexpressで注文してから約2週間で到着しました。Chinapostで注文しました。いつも通りです。
他にも色々注文しました。お小遣いで買っているので使う分の4つしかMDは買っていません。
開封
一枚だけ基板の色(レジスト)色が違います。右のやつですね。
プログラム
久しぶりにVNH2SP30を動かすことになったのでマイコンに書き込むためのプログラムを用意しなければなりません。自分で描いたやつがあるはずなのに見当たらなかったのでプログラムを即席で作りました。
mbed用です。
書き換えればArduinoとかでもなんでも動きますね。即席で作ったので汚いかもしれません。
#include "mbed.h" Serial pc(USBTX,USBRX); PwmOut PWM(D15); DigitalOut INA(D14); DigitalOut INB(D12); void turnMotor(float power){ //power:-100 to 100 if(power > 100) { power = 100; }else if(power < –100) { power = –100; } if(abs(power) > 0) { if(power > 0) { INA.write(1); INB.write(0); }else{ INA.write(0); INB.write(1); } }else{ INA = 1; INB = 1; } PWM.write(abs(power)/100); } int main(){ pc.baud(230400); PWM.period_us(50); while (1) { for (int i = –100; i < 100; i++) { turnMotor(i); wait_ms(8); } for (int i = 100; i > –100; i–) { turnMotor(i); wait_ms(8); } } }
一個ずつ動くか試したのですが、一個も動いてくれませんでした。
MD動くかなチャレンジ失敗です!!
4つともゴミ箱に投げ込むのはなんか気が引けたので半田付けし直して見ることにしました。
VNH2SP30のデータシートを見てみるとICの裏にモーター出力パッドがあるんですね。
裏に端子があるひょっとして浮いているのではないかと思い、ヒートガンで温めてみました。
そのあとにICの端子にハンダを上から盛りました。表面実装は少し慣れているのでなんとか、。。
動画ですが、埋め込みに対応していないようなのでTwitterでこのツイートを見ていただけるとちゃんと見られるはずです。
これを全部したら全部復活しました。
MD動くかなチャレンジ成功です!!
もし動かないことがあれば半田付けをしなおせば治るかもしれませんね。今年も新しいMD基板を作る予定なので冬にもう一度MD動くかなチャレンジをしたいと思います。