← Hub に戻る Library 基礎知識

モータードライバの仕組み

ESP32 の GPIO だけでは DC モータを直接まわせません。 DRV8833 は、小さなデジタル信号を「モータ用の電力」に変換する H ブリッジ型ドライバです。 ラジコンカーの後輪駆動(ミニ①)で実際に使っています。

なぜドライバが必要か

MCU のピンはだいたい 3.3V・数十 mA 程度 しか流せません。 一方、DC モータは 数百 mA〜 の電流が必要になります。 そのまま GPIO につなぐと、モータは動かず、場合によっては MCU を傷めます。

ドライバ IC は「スイッチの集まり」として働き、別電源(VMOT) からモータへ電流を流し、 MCU は ON/OFF の指示だけ出す——という役割分担にします。

H ブリッジとは

DRV8833 の中核は H ブリッジ です。4 つのスイッチでモータの両端の極性を入れ替え、 正転・逆転・停止(ブレーキ)を実現します。

AIN1 AIN2 モータの動き
HIGHLOW正転
LOWHIGH逆転
LOWLOW停止(ブレーキ)
HIGHHIGHブレーキ(短絡ブレーキ)

ESP32 からは digitalWrite で AIN1 / AIN2 を組み合わせて制御します。 ミニ①では GPIO 2625 を使っています。

DRV8833 の主なピン

AIN1 / AIN2 回転方向の指令(MCU の GPIO から)
PWMA 速度制御(PWM)。初回テストでは 3.3V 固定(フル速度)でも可
STBY スタンバイ解除。HIGH にしないとドライバが動かない
VMOT モータ用電源(例: 外部 5V)
GND MCU・ドライバ・モータ・外部電源で必ず共通
AOUT1 / AOUT2 DC モータの両端

配線で気をつけること

Chocofon のメモ: 最初は PWM なしの「正転 / 逆転 / 止まる」の 3 状態だけで十分。 動いたあとに analogWrite で PWMA を叩いて速度調整を足す、という順が楽でした。

コードのイメージ

void motorForward() {
  digitalWrite(MOTOR_AIN1, HIGH);
  digitalWrite(MOTOR_AIN2, LOW);
}

void motorReverse() {
  digitalWrite(MOTOR_AIN1, LOW);
  digitalWrite(MOTOR_AIN2, HIGH);
}

void motorStop() {
  digitalWrite(MOTOR_AIN1, LOW);
  digitalWrite(MOTOR_AIN2, LOW);
}

この技術が使われているプロジェクト

ラジコンカー製作記で、DRV8833 は次のステップで実際に使っています。