搜尋程式碼

ESP32 教學 16/55 - 使用 ESP32 同 L293D 嘅迷你水泵 | SunFounder 嘅 ESP32 IoT 學習套件

ESP32 教學 16/55 - 使用 ESP32 同 L293D 嘅迷你水泵 | SunFounder 嘅 ESP32 IoT 學習套件

喺呢個教學入面,我哋會學吓點樣用ESP32微控制器同L293D摩打驅動器嚟控制一個5V水泵。呢個項目係一個好好嘅入門,教你點樣用摩打驅動器配合微控制器,令你可以控制一啲需要比微控制器直接提供更大電流嘅裝置。完成呢個教學之後,你就會有一個可以程式化啟動同停止嘅水泵。

ESP32係一個功能強大嘅微控制器,內置Wi-Fi同藍牙功能,好適合用喺物聯網應用。L293D摩打驅動器用嚟控制水泵,因為佢可以管理操作摩打所需嘅較高電流。呢個設定令我哋可以啟動同停止水泵,同時確保ESP32唔會因為電流過大而受損。

硬件解說

喺呢個項目入面,我哋用咗ESP32微控制器,佢以多功能同連接選項聞名。佢可以好似Arduino咁運作,同時提供Wi-Fi同藍牙等額外功能。L293D摩打驅動器作為ESP32同水泵之間嘅介面,令你可以控制水泵嘅操作,而唔會令微控制器超載。

L293D有兩個H橋,令佢可以控制摩打嘅方向同速度。每個H橋都可以令摩打向任何一個方向轉動,好適合需要摩打控制嘅應用。喺呢個情況,我哋只需要令水泵向一個方向運行。

數據手冊詳情

製造商德州儀器
零件編號L293D
邏輯/IO電壓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)。確保所有接地連接都連埋一齊,先可以正常運作。如果你跟住呢啲指示,接線應該會好直接同有效。

代碼示例同解說

喺代碼入面,我哋定義咗摩打控制嘅引腳連接。識別碼motor1Amotor2A分別對應ESP32上嘅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); // 等一秒
}

loop()函數入面,我哋將motor1A設為HIGH,motor2A設為LOW嚟啟動水泵。喺短暫延遲之後,我哋將兩個引腳都設為LOW嚟停止水泵。呢個循環會無限重複,令水泵運行一段短時間然後停止。

示範 / 預期效果

當你完成接線並上載代碼之後,你應該會見到水泵以循環方式啟動同停止。水泵會運行一段短時間,然後停止,形成開關模式。確保你嘅電源足以應付水泵嘅需求,以免出現問題(喺影片09:30位置)。

影片時間戳

  • 00:00 開始
  • 1:50 項目介紹
  • 3:17 點解要用L293D配Arduino?
  • 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)