ESP32とL298Nモジュールを使ってDCモーターの速度を制御する方法
DCモーターの制御は、適切なコンポーネントと理解があれば簡単な作業です。このチュートリアルでは、ESP32マイクロコントローラーとL298Nモータードライバーモジュールを使用して、2つのDCモーターを制御する方法を探ります。このガイドの最後には、ESP32からのPWM信号に基づいてモーターの速度と方向を調整できるようになり、ロボティクスや自動化における多様な応用が可能となります。
このチュートリアルに付随するビデオでは、配線やコーディングを含む全プロセスの視覚的なデモンストレーションが提供されています(ビデオは00:00にあります)。
ハードウェアの解説
モーター制御を実現するために、ESP32とL298Nモータードライバーモジュールを使用します。ESP32はWi-FiとBluetooth機能を備えた強力なマイコンで、IoTプロジェクトに最適です。L298NはHブリッジモータードライバーで、PWM信号を使用してモーターの方向と速度を制御することができます。L298Nモジュールは2つのHブリッジ回路を備えているため、2つのモーターを独立して制御できます。各Hブリッジはモーターの方向(時計回りまたは反時計回り)とPWM信号を変化させることで速度を制御することができます。L298Nのイネーブルピンと入力ピンをESP32に接続することで、モーターを効果的に操作できます。
データシートの詳細
| 製造業者 | STマイクロエレクトロニクス |
|---|---|
| 部品番号 | L298N |
| 論理/入出力電圧 | 5 V |
| 供給電圧 | 5-46 V (VS) |
| 出力電流(チャンネルごと) | 2 A最大/チャネル(絶対最大) |
| ピーク電流(チャネルごと) | 2.5 A |
| PWM周波数ガイダンス | 1 kHz - 15 kHz |
| 入力論理閾値 | 2.5 V(高)、1.5 V(低) |
| 電圧降下 / RDS(on)/ 飽和度 | 1.8 Vで2 A |
| 熱的限界 | 150 ℃ |
| パッケージ | 15ピン マルチワット |
| ノート / バリアント | デュアルHブリッジモータードライバー |
- モーターの電圧定格がL298Nの供給電圧と一致していることを確認してください。
- 高電流での連続運転のために、適切なヒートシンクを使用してください。
- すべてのコンポーネントのグラウンドを接続して、フローティングリファレンスを避けてください。
- アプリケーションに適したPWM周波数を使用してください(1-15 kHz)。
- 過熱を防ぐために、最大電流定格に注意してください。
- 配線を確定する前にモーターの方向をテストして、損傷を避けてください。
- 安定性のために、電源のデカップリングコンデンサを検討してください。
配線指示

L298NをESP32に配線するには、まず2つのDCモーターをL298Nの出力端子に接続します。モーター1をラベルの付いた端子に接続しますOUT1そしてOUT2、そしてモーター2にOUT3とOUT4モーターの極性は問題ではありません。L298Nが方向を制御します。次に、外部電源を接続してください。VMSとGNDL298Nの端子。モーターに対して適切な電圧が供給されていることを確認してください。通常、5Vから46Vの間です。5VL298Nのターミナルは必要に応じてESP32に電力を供給するために使用できますが、電流要件が満たされていることを確認してください。コントロールピンに接続してください。ENAGPIO 19に、IN1GPIO 18に、そしてIN2モーター1にはGPIO 5に接続します。モーター2は接続してください。IN3GPIO 17へ、IN4GPIO 16に、そしてENBGPIO 4に接続します。最後に、ESP32とL298Nのグラウンドを接続して共通の基準を保証します。
コード例とウォークスルー
以下のコードスニペットは、ESP32用に設計されたL298Nライブラリを使用してモーターを制御する方法を示しています。このライブラリは、モーターにコマンドを送信するプロセスを簡素化します。まず、必要なライブラリをインクルードし、モーターのパラメータを定義します。
#include
#define ENA 19
#define IN1 18
#define IN2 5
#define IN3 17
#define IN4 16
#define ENB 4
Robojax_L298N_DC_motor robot(IN1, IN2, ENA, CHA, IN3, IN4, ENB, CHB);
このスニペットでは、両方のモーターの制御ピンを定義します。ライブラリのインスタンスrobot作成され、プログラム全体でモーターを制御するために使用されます。次に、シリアル通信を設定し、ロボットインスタンスを初期化します。setup()空の文字列
void setup() {
Serial.begin(115200);
robot.begin();
}
これにより、デバッグ用のシリアル通信が初期化され、モーター制御ライブラリの操作の準備が整います。最後に、主要な制御ロジックが配置されます。loop()モーターを回転させてその速度を調整できる機能:
void loop() {
robot.rotate(motor1, 80, CW); // run motor1 at 80% speed in CW direction
delay(3000); // wait for 3 seconds
robot.brake(1); // brake motor1
delay(2000); // wait for 2 seconds
}
この抜粋は、モーター1を80%の速度で時計回りに3秒間回転させた後、ブレーキをかける方法を示しています。完全なコードにはモーター2や異なる速度のための追加のロジックが含まれており、この記事の下に読み込まれた完全なプログラムで見ることができます。
デモンストレーション / 期待すること
実行されると、モーターはESP32から送信されたPWM信号に応じて動作します。モーター1が80%の速度で時計回りに回転し、その後ブレーキ動作が見られます。このプログラムには、速度の変動を徐々に管理するロジックも含まれており、モーターの加速を0%から100%まで観察することでテストできます(動画は05:00で)。一般的な落とし穴には、グラウンドを適切に接続しないことが含まれ、これが不規則な動作を引き起こす可能性があります。また、L298Nの定格電流を超えると過熱する原因となります。モーターの挙動を監視し、必要に応じてパラメータを調整することを忘れないでください。
動画のタイムスタンプ
- 00:46 イントロダクション
- 04:07 ESP32をL298Nに接続する
- 06:10 ESP32ボードで動作するようにArduino IDEを準備中
- 08:15 Arduinoコードの解説
- 15:00 単一モーター制御のデモンストレーション
- 16:00 2つのDCモーターの制御デモンストレーション
- 17:00 L298Nと外部電源からESP32への電源供給のデモンストレーション
必要かもしれないもの
-
アマゾンAmazonからL298Nモータードライバーを購入するamzn.to
-
イーベイeBay(アフィリエイト)からL298Nモジュールを購入するebay.us
リソースと参考文献
-
外部eBay(アフィリエイト)からL298Nモジュールを購入するebay.us
ファイル📁
Arduinoライブラリ(zip)
-
robojax_ESP32_L298N_library
robojax_ESP32_L298N_library.zip0.18 MB
フリッツィングファイル
-
ESP32-38Pin_Wide
ESP32-38Pin_Wide.fzpz0.03 MB -
L298N DC motor driver
L298N DC motor driver.fzpz0.11 MB