搜尋程式碼

ESP32 教學 15/55 - 用 ESP32 L293D 控制直流馬達速度 | SunFounder 嘅 ESP32 IoT 學習套件

ESP32 教學 15/55 - 用 ESP32 L293D 控制直流馬達速度 | SunFounder 嘅 ESP32 IoT 學習套件

ESP32 教學 15/55 - 用 ESP32 L293D 控制直流馬達速度 | SunFounder 嘅 ESP32 IoT 學習套件

用 ESP32 控制直流馬達睇落好似好難,但只要有啱嘅零件同理解,其實係好易處理。喺呢個教學入面,我哋會整一個項目,用 L293D 馬達驅動器嚟控制直流馬達嘅速度同方向。到最後,你會有一個可以令馬達向前向後轉,同時調整速度嘅完整裝置。如果想睇視覺參考,記得睇吓條片(喺片入面 00:00)。

ESP32-15_L293D_motor_schematic

硬件講解

呢個項目嘅主要零件包括 ESP32 微控制器同 L293D 馬達驅動器。ESP32 係一個功能強大嘅微控制器,內置 Wi-Fi 同藍牙功能,好適合用喺 IoT 應用。佢可以透過 GPIO 引腳控制各種硬件零件,包括馬達。L293D 係一個雙 H 橋馬達驅動器,可以控制兩個直流馬達嘅方向同速度。每個 H 橋都可以透過反轉施加喺馬達端子嘅電壓極性,令馬達向任何一個方向轉。另外,L293D 每個通道可以處理高達 600 mA 嘅電流,好適合細型到中型嘅馬達。

L293D-Motor-Driver-IC

數據手冊細節

製造商 德州儀器
零件編號 L293D
邏輯/IO 電壓 2.5 – 7 V
供電電壓 4.5 – 36 V
輸出電流(每通道) 600 mA(典型值)
峰值電流(每通道) 1.2 A(最大值)
PWM 頻率指引 20 kHz(典型值)
輸入邏輯閾值 0.8 V(高),2.0 V(低)
電壓降 / RDS(on) / 飽和 1.5 V(最大值)
熱限制 150 °C(最大值)
封裝 16-DIP
備註 / 變體 四重半 H 驅動器

 

  • 喺高電流應用時,確保有適當嘅散熱。
  • 用電容去耦電源,防止電壓尖峰。
  • 接線時要小心,防止極性接反。
  • 用 PWM 做速度控制,避免過熱。
  • 檢查馬達嘅額定電壓,防止損壞。

接線指示

ESP32-15_L293D_motor_wiring

要接駁 ESP32 同 L293D 馬達驅動器,首先連接電源。將 L293D 嘅第 16 腳連接到電源嘅正極端子,第 4 腳連接到地。跟住連接馬達:一個端子接到 L293D 嘅第 3 腳,另一個接到第 6 腳。至於控制訊號,將 ESP32 嘅 GPIO 第 13 腳連接到 L293D 嘅第 2 腳,GPIO 第 14 腳連接到第 7 腳。最後,確保將 ESP32 嘅接地連接到 L293D 嘅接地,以確保有共同參考點。如果條片提到其他接線方法(喺片入面 05:00),記得跟住顯示嘅特定改動。

程式碼範例同講解

控制馬達嘅程式碼包括定義馬達嘅引腳同設定佢哋嘅模式。以下係 setup 函數嘅節錄:

#define motor1A 13
#define motor2A 14

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

喺呢段程式碼入面,我哋將馬達控制引腳定義為常數,並喺 setup 函數入面將佢哋設定為輸出。呢個好重要,因為佢準備好啲引腳嚟控制馬達。loop 函數就係控制馬達行為嘅地方。以下係 loop 嘅一個關鍵部分:

void loop() {
  digitalWrite(motor1A, HIGH);     
  digitalWrite(motor2A, LOW);   
  delay(2000); 

  digitalWrite(motor1A, LOW);     
  digitalWrite(motor2A, HIGH);    
  delay(2000); 

  digitalWrite(motor1A, LOW);     
  digitalWrite(motor2A, LOW);    
  delay(3000);
}

呢段程式碼令馬達向一個方向轉 2 秒,然後反轉方向再轉 2 秒,最後停低 3 秒。呢個 loop 會無限重複,令你可以持續控制。如果想睇更詳細嘅見解同完整程式碼,請參考文章下面載入嘅完整程式。

示範 / 預期效果

成功接線同上載程式碼之後,你應該會見到馬達向一個方向轉 2 秒,然後轉方向再轉 2 秒,最後停低 3 秒。如果馬達冇好似預期咁反應,檢查吓常見問題,例如極性接反或者引腳連接錯誤(喺片入面 08:00)。呢個設定提供咗一個直接嘅方法,用 ESP32 同 L293D 控制直流馬達嘅速度同方向。

影片時間戳

  • 00:00 開始
  • 2:01 直流摩打介紹
  • 6:14 L293D 摩打驅動器
  • 9:17 項目文件
  • 11:04 接線講解
  • 14:41 用ESP32控制Arduino摩打
  • 17:10 為ESP32板選擇Arduino端口
  • 18:52 項目示範
  • 22:08 用ESP32控制摩打速度
  • 26:22 速度控制示範
  • 28:01 速度和方向控制Arduino代碼
  • 29:05 速度和方向示範

圖片

L293D-Motor-Driver-IC
L293D-Motor-Driver-IC
ESP32-15_L293D_motor_schematic
ESP32-15_L293D_motor_schematic
ESP32-15_L293D_motor_wiring
ESP32-15_L293D_motor_wiring
814-ESP32 Tutorial 15/55- Arduino code for L293D motor control
語言: 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(2000); 

  // Rotate in the opposite direction
  digitalWrite(motor1A, LOW);     
  digitalWrite(motor2A, HIGH);    
  delay(2000); 

  // Stop
  digitalWrite(motor1A, LOW);     
  digitalWrite(motor2A, LOW);    
  delay(3000);
}

你可能需要嘅嘢

資源與參考資料

文件📁

数据表 (pdf)