検索コード

ESP32チュートリアル 16/55 - ESP32とL293Dを使用したミニ水ポンプ | SunFounderのESP32 IoT学習キット

ESP32チュートリアル 16/55 - ESP32とL293Dを使用したミニ水ポンプ | SunFounderのESP32 IoT学習キット

このチュートリアルでは、ESP32マイクロコントローラーとL293Dモータードライバーを使用して5Vの水ポンプを制御する方法を学びます。このプロジェクトは、マイクロコントローラーでモータードライバーを使用するための素晴らしい入門です。これにより、マイクロコントローラーが直接提供できるよりも多くの電流を必要とするデバイスを制御できます。このチュートリアルの終わりまでには、プログラムでオンおよびオフできる動作する水ポンプを持つことができるでしょう。

ESP32は強力なマイクロコントローラーで、内蔵のWi-FiやBluetooth機能を備えており、IoTアプリケーションに適しています。L293Dモータードライバーは、モーターを動作させるために必要な高い電流を管理することで、水ポンプを制御するために使用されます。この構成により、電流の過剰引きを防ぎつつ、ポンプの起動と停止が可能になります。

ハードウェアの説明

このプロジェクトでは、汎用性と接続オプションで知られるESP32マイクロコントローラーを利用します。これはArduinoのように機能しながら、Wi-FiやBluetoothなどの追加機能を提供します。L293Dモータードライバーは、ESP32と水ポンプとのインターフェースとして機能し、マイクロコントローラーが過負荷にならないようにポンプの動作を制御できます。

L293Dは2つのHブリッジを備えており、モーターの方向と速度を制御することができます。各Hブリッジはモーターをどちらの方向にも駆動することができるため、モーター制御が必要なアプリケーションに適しています。この場合、ポンプを一方向で動作させるために有効にするだけで十分です。

データシートの詳細

メーカーテキサス・インスツルメンツ
部品番号L293D
論理/入出力電圧4.5 - 36 V
供給電圧4.5 - 36 V
出力電流(チャネルごと)600 mA
ピーク電流(チャネルごと)1.2 A
PWM周波数ガイダンス1 kHz - 10 kHz
入力論理閾値2 V(高)、0.8 V(低)
電圧降下 / RDS(on)/飽和1.5 V (最大)
熱的制限+150 °C(最大)
パッケージDIP-16
ノート / バリアント誘導負荷保護のための内蔵ダイオードを含みます

  • 連続運転のために適切な熱放散を確保してください。
  • 安定した電源のためにデカップリングキャパシタを使用してください。
  • 入力電圧に注意して、損傷を防いでください。
  • 必要に応じて速度制御のためにPWMを実装してください。
  • 短絡を避けるために配線を確認し、特に誘導負荷に注意してください。

配線指示

ESP32-16-motor-pump_wiring

ESP32とL293Dモータードライバーを水ポンプと接続するには、以下の手順を注意深く行ってください。まず、電源をL293Dに接続します。ピン1(モーターAのイネーブルピン)とピン8(Vcc2)を正の電圧源(5V)に接続します。ピン4(グランド)を回路のグランドに接続します。

次に、ESP32をL293Dに配線します。ESP32のGPIOピン13をL293Dのピン2(入力1)に接続し、GPIOピン14をピン7(入力2)に接続します。最後に、水ポンプをL293Dのピン3(出力1)とピン6(出力2)に接続します。すべてのグランド接続が適切に動作するために結合されていることを確認してください。これらの指示に従えば、配線は簡単で機能するはずです。

コード例とウォークスルー

コード内で、モーター制御のためのピン接続を定義します。識別子motor1Amotor2AESP32のGPIOピン13および14にそれぞれ対応しています。これらのピンは、L293Dドライバーを介して水ポンプを制御します。

#define motor1A 13
#define motor2A 14

void setup() {
  pinMode(motor1A, OUTPUT);
  pinMode(motor2A, OUTPUT);  
}

中でsetup()関数では、モーター制御ピンを出力として初期化します。これにより、ポンプを制御するためにL293Dドライバーに信号を送信できるようになります。loop()ポンプの操作を制御するのが関数です。

void loop() {
  digitalWrite(motor1A, HIGH);     
  digitalWrite(motor2A, LOW);   
  delay(5);
  
  digitalWrite(motor1A, LOW);     
  digitalWrite(motor2A, LOW);    
  delay(2000); // wait for a second
}

申し訳ありませんが、その内容は翻訳できません。loop()機能、私たちは設定しますmotor1A高いとmotor2Aポンプを開始するには低すぎます。短い遅延の後、両方のピンをLOWに設定することでポンプを停止します。このサイクルは無限に繰り返され、ポンプが短時間動作し、その後停止します。

デモンストレーション / 期待すること

配線が完了し、コードをアップロードしたら、水ポンプがサイクルで作動と停止を繰り返すのを確認できるはずです。ポンプは短時間作動した後、停止し、オン・オフのパターンを作ります。問題を避けるために、ポンプの要求に対して電源が十分であることを確認してください(ビデオの09:30に)。

動画のタイムスタンプ

  • 00:00 スタート
  • 1:50 プロジェクト紹介
  • 3:17 なぜArduinoにL293Dが必要なのか?
  • 水ポンプの配線を説明します 5:47
  • 10:01 Arduinoコードの説明
  • 12:21 Arduino IDEでESp32のCOMポートを選択中
  • 14:03 ポンプの運転デモンストレーション
  • 15:25 水を使ったデモンストレーション

画像

ESP32-15_L293D_motor_schematic
ESP32-15_L293D_motor_schematic
ESP32-16-motor-pump_wiring
ESP32-16-motor-pump_wiring
5V DC water pump
5V DC water pump
815-ESP32 Tutorial 16/55 - Arduino code to control DC water pump
言語: C++
#define motor1A 13
#define motor2A 14

// the setup function runs once when you press reset or power the board
void setup() {
  // initialize digital pin as an output.
  pinMode(motor1A, OUTPUT);
  pinMode(motor2A, OUTPUT);  
}

// the loop function runs over and over again forever
void loop() {

  // Rotate
  digitalWrite(motor1A, HIGH);     
  digitalWrite(motor2A, LOW);   
  delay(5);

  // Stop
  digitalWrite(motor1A, LOW);     
  digitalWrite(motor2A, LOW);    
  delay(2000); // wait for a second
}

リソースと参考文献

ファイル📁

データシート(pdf)