モータードライバの仕組み
ESP32 の GPIO だけでは DC モータを直接まわせません。 DRV8833 は、小さなデジタル信号を「モータ用の電力」に変換する H ブリッジ型ドライバです。 ラジコンカーの後輪駆動(ミニ①)で実際に使っています。
なぜドライバが必要か
MCU のピンはだいたい 3.3V・数十 mA 程度 しか流せません。 一方、DC モータは 数百 mA〜 の電流が必要になります。 そのまま GPIO につなぐと、モータは動かず、場合によっては MCU を傷めます。
ドライバ IC は「スイッチの集まり」として働き、別電源(VMOT) からモータへ電流を流し、 MCU は ON/OFF の指示だけ出す——という役割分担にします。
H ブリッジとは
DRV8833 の中核は H ブリッジ です。4 つのスイッチでモータの両端の極性を入れ替え、 正転・逆転・停止(ブレーキ)を実現します。
| AIN1 | AIN2 | モータの動き |
|---|---|---|
| HIGH | LOW | 正転 |
| LOW | HIGH | 逆転 |
| LOW | LOW | 停止(ブレーキ) |
| HIGH | HIGH | ブレーキ(短絡ブレーキ) |
ESP32 からは digitalWrite で AIN1 / AIN2 を組み合わせて制御します。
ミニ①では GPIO 26 と 25 を使っています。
DRV8833 の主なピン
| AIN1 / AIN2 | 回転方向の指令(MCU の GPIO から) |
|---|---|
| PWMA | 速度制御(PWM)。初回テストでは 3.3V 固定(フル速度)でも可 |
| STBY | スタンバイ解除。HIGH にしないとドライバが動かない |
| VMOT | モータ用電源(例: 外部 5V) |
| GND | MCU・ドライバ・モータ・外部電源で必ず共通 |
| AOUT1 / AOUT2 | DC モータの両端 |
配線で気をつけること
- GND 共通 — StickC / DRV8833 / モータ / 外部電源を一つの基準にそろえる
- 電源分離 — モータ電源は USB 給電だけに頼らず、外部 5V を推奨
- ノイズ — モータの突入電流で MCU がリセットすることがある。配線を太く・短く
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 は次のステップで実際に使っています。