ESP32純正ボード用モータドライバはEspressif社が販売しているESP32開発ボード(ESP32-DevKitC-32E)専用のモータドライバです。ドライバICにはTOSHIBA製のTB9051FTGを搭載しています。純正ボード用に専用設計しているため、基板は、純正ボードと同形サイズとなっており、亀の子に接続することで、非常にコンパクトにモータドライバを収めることができます。
特徴1. 純正ボードと亀の子接続で省スペース
特徴2 TOSHIBA製のTB9051FTGを搭載
TOSHIBA製のTB9051FTGをブラシ付きDCモータドライバとして搭載しています。4.5~28Vと動作電圧が広く、連続2.6A(ピーク5A)の電流を制御できます。また、過電流、過熱状態に対する保護機能が内蔵されており、安全にブラシ付きDCモータを制御できます。
特徴3 ESP32の全ピンにピンヘッダからアクセス可能
ESP32の両側に全ピンにアクセスできるピンヘッダを設けました。モータドライバの信号チェック、制御用の信号入力など外部の回路と簡単につなげられます。
ピンアサイン
ESP32純正ボード用モータドライバで使用している端子は下の通りです。黄色の端子がTB9051FTGモータドライバ、赤色の端子が外部電源供給、灰色はGNDに接続されています。
以下はモータドライバの端子説明になります。
コネクタ情報
回路図のコネクタ位置をCADの3Dデータに表示します。
コネクタはJST社PHコネクタを採用しています。定格は2.0A/端子になります。これを目安にして、電線を単線使用/複線使用を使い分けてください。
ボードの適合
本製品が使用できるESP32ボードはEspressif Systems社の純正のESP32-WROOM-32D もしくは 32Eの開発ボードになります。
ピン幅25.4mm(1000mil)、ピン数38pinの開発ボードでピンアサインが以下のものであれば他社互換品でも使用できる可能性があります。
ただし、他社互換品については、動作未確認になりますので、自己責任でお願いいたします。
モータドライバ仕様
モータドライバの仕様は以下のとおりです。
詳細は、下記のメーカーのデータシートをご確認ください。
また、ご使用前にデータシートを十分にお読みください。
電源供給
7~28Vの範囲で電源供給をお願いいたします。
※外部からの電源供給時は、ESP純正ボートに電源を供給する必要はありません。
電流センス
電流モニタ出力は、2.0A/Vになります。ただし、ICの都合で、OCMの電流特性にばらつきがありますので、ご注意ください。
回路図
付属品
本商品は以下を付属しております。
・ESP32純正ボード用モータドライバ ×1ケ
・JST社PHコネクタ(4極オス) ×2ケ (実装済み)
・2.54mmピッチピンヘッダ(19極) ×2ケ (実装済み)
・樹脂スペーサ+M2ねじ ×4セット
※1 ESP32純正ボードは同梱しておりません。
※2 メス側のPHコネクタおよび電線は同梱しておりません。
注意事項
・純正ボードの差し間違いにご注意ください!!ボード裏面で、USBコネクタの向きをシルクで表示してあります。純正ボードのUSBコネクタの向きがその方向と一致するように差し込んでください。
・電源に関して、逆接保護回路は実装しておりませんので、電源供給時は、かならず、極性を確認してください。
テスト条件
安心してご使用いただくため、商品すべてにおいて、以下のテストを実施したのちに梱包しております。
・DCモータの正転/逆転モードでモータ電流MAX3Aを各30分駆動で不具合無きこと。
・モータ電流モニタ機能が正常動作を確認する。
・ENB、EN_HB、DIAG端子が正常動作を確認する。
サンプルコード
簡単なサンプルコードを示します。arduino IDEのバージョンはv1.8.13で動作確認をしています。
DCモータを駆動周波数1KHz、0-50%DUTYで駆動します。
const int MotorPin = A4; // PWM1側出力
//const int MotorPin = A5; // PWM2側出力
int ENHB = 21; // ENHBはデジタルピン21に接続
int ENB = 22; // ENBはデジタルピン22に接続
int OCC = 23; // OCCはデジタルピン23に接続
//#define TestPin 23 // ENHB = 21,ENB = 22,OCC = 23ピンチェック
#define TestPin 34 // OCM = 34ピンチェック
void setup() {
ledcSetup(0, 1000, 8);
ledcAttachPin(MotorPin, 0);
pinMode(ENHB, INPUT_PULLUP); //内部プルアップに設定
gpio_set_pull_mode(GPIO_NUM_22, GPIO_PULLDOWN_ONLY); //内部プルダウンに設定
gpio_set_pull_mode(GPIO_NUM_23, GPIO_PULLDOWN_ONLY); //内部プルダウンに設定
Serial.begin(115200);
}
void loop() {
static uint8_t MotorDUTY = 0;
static int diff = 1;
while(1){
ledcWrite(0, MotorDUTY);
if (MotorDUTY == 0) {
diff = 1;
} else if (MotorDUTY == 128) {
diff = -1;
}
MotorDUTY += diff;
long d = 0;
for (int i = 0; i < 1; i++) {
d += analogRead(TestPin);
}
Serial.println(d / 1); // 平均値をシリアルに出力
delay(5);
} }