ESP32 MCPWM 使用指南與範例
引言
ESP32 是一款功能強大的微 控制器,其中 MCPWM (Motor Control Pulse Width Modulation) 模組是一個非常實用的功能,特別適合用於電機控制等應用。本文將詳細介紹 ESP32 的 MCPWM 功能,並提供具體的程式碼範例,包括基本的 PWM 輸出和步進電機控制。
ESP32 引腳功能推薦
在開始使用 MCPWM 之前,我們先來了解一下 ESP32 的引腳功能。合理選擇引腳可以讓您的項目更加穩定高效。
通用 GPIO (輸入/輸出)
以下引腳沒有特殊功能限制,可以安全地用於大多數項目:
- GPIO 13, 14, 16, 17, 18, 19, 21, 22, 23, 25, 26, 27, 32, 33
這些引腳適合用於一般的數位輸入/輸出操作,如控制 LED、讀取按鈕狀態等。
ADC (類比數位轉換)
ESP32 提供兩組 ADC,推薦使用以下引腳:
- ADC1: GPIO 36, 39, 32, 33, 34, 35
- ADC2 (僅在 Wi-Fi 未啟用時可用): GPIO 4, 0, 2, 15, 13, 12, 14, 27, 25, 26
ADC 用於讀取類比信號,如感測器輸出、電池電壓等。注意 ADC2 在使用 Wi-Fi 時可能不可用。
DAC (數位類比轉換)
ESP32 有兩個 DAC 通道,僅限以下引腳:
- GPIO 25, 26
DAC 可以輸出類比電壓,適用於音頻輸出或控制類比設備。
PWM (脈衝寬度調變)
除了 GPIO 34-39 和 SPI flash 引腳 (6-11) 外,所有輸出引腳都可用於 PWM。推薦使用:
- GPIO 13, 14, 16, 17, 18, 19, 21, 22, 23, 25, 26, 27, 32, 33
PWM 可用於 LED 亮度控制、馬達速度控制等應用。
MCPWM (高級 PWM)
ESP32 有兩個 MCPWM 單元(MCPWM0 和 MCPWM1),每個單元有 3 個定時器和 6 個輸出。
- MCPWM0 和 MCPWM1 可用引腳:GPIO 0, 2, 4, 5, 12, 13, 14, 15, 18, 19, 21, 22, 23, 25, 26, 27, 32, 33
- 推薦使用:GPIO 13, 14, 16, 17, 18, 19, 21, 22, 23, 25, 26, 27, 32, 33
MCPWM 特別適合用於複雜的電機控制應用,如無刷直流電機、步進電機等。