https://www.pololu.com/product/1213
pololuのモータードライバモジュールの動かし方を毎度毎度忘れてしまうのでメモ
仕様
フルHブリッジのMC33926が2つ載ったドライバ。定格3A程度で、5~28Vの電圧をVINに供給可能。
必要最低限動かすのに必要なピンは以下の表。ジャンパーしがちなホールだけ2列になっている。
真ん中3列はジャンパーしちゃって良さそうかな。バッテリー駆動とかならENピンは活かすと良い。
PIN | 状態 | 仕様 |
---|---|---|
VIN | HIGH | 駆動電圧用の電源ピン。 |
GND | LOW | グラウンド |
VDD | HIGH | ロジック電圧。電源とは別に3~5Vの範囲でかける |
IN1 | OUT1ピンを制御する。M1/M2でそれぞれ2個ある | |
IN2 | IN1とほぼ同義。 | |
PWM/D2 | LOW | HIGHにするとOUT1とOUT2がハイインピーダンスになる。ここにPWMを入れてあげれば、方向とは別に出力をコントロールできる。 |
PWM/D1 | HIGH | D2の逆。逆だがD2とはANDという事なのか…?片方だけハイインピーダンスを指定したらどうなるんだろう |
INV | HIGH | HIGHでINに対する正転逆転が逆になる。 |
SLEW | HIGH | HIGHにするとスルーレートが速くなる。10kHzを超えるような高速のPWMで制御する時に使う |
EN | HIGH | イネーブル。LOWにすると低電流スリープ状態に入る。 |
シールドではEN以外をジャンパー。
Arduinoでとりあえず動かす
//2列部分はすべてジャンパーした場合の動作
#define PIN_M1IN1 3
#define PIN_M1IN2 4
#define PIN_M2IN1 5
#define PIN_M2IN2 6
void setup()
{
pinMode(PIN_M1IN1, OUTPUT);
pinMode(PIN_M1IN2, OUTPUT);
pinMode(PIN_M2IN1, OUTPUT);
pinMode(PIN_M2IN2, OUTPUT);
}
void loop()
{
delay(1000);
drive(true, true);
delay(1000);
stop(true);
delay(1000);
drive(false, true);
delay(1000);
stop(true);
}
void stop(bool isM1)
{
digitalWrite(isM1 ? PIN_M1IN1 : PIN_M2IN1, LOW);
digitalWrite(isM1 ? PIN_M1IN2 : PIN_M2IN2, LOW);
}
void drive(bool isM1, bool isCW)
{
digitalWrite(isM1 ? PIN_M1IN1 : PIN_M2IN1, isCW);
digitalWrite(isM1 ? PIN_M1IN2 : PIN_M2IN2, !isCW);
}
メモ
研究用に基板起こして使っているので基板がいっぱい余ってる…
ESPでサーバー立ててwebSocketでコントロールしてたリポジトリ