實驗說明:
本篇將製作一個簡單的ESP32智能風扇,風扇模組可通過馬達驅動模組對扇葉的轉速進行調節。在本篇實驗中將會使用L9110馬達驅動模組,此模組的尺寸非常小,接線簡單非常簡單,功能也不輸L298N,程式也非常的好寫。L9110馬達驅動模組,可連接兩顆直流馬達,每顆馬達可由兩條訊號線來控制,並控制兩條線的高低電位來處理馬達正轉或反轉,當然也可以透過PWM的輸出訊號來控制調節馬達轉速。非常適合製作自走車與電風扇等需要動力的專題。
材料:
- ESP32-E DevKit
- USB 傳輸線
- L9110馬達驅動模組
- 風扇模組
- 麵包板
- 杜邦線
▼ 購買IoT物聯網學習教材:
程式範例一(數位輸出控制):
int A_1A=16; //L9110S馬達驅動板 A_1A腳 連接到ESP32的 GPIO16
int A_1B=17; //L9110S馬達驅動板 A_1B腳 連接到ESP32的 GPIO17
void setup() {
pinMode(A_1A,OUTPUT);
pinMode(A_1B,OUTPUT);
}
void loop() {
//風扇正轉
digitalWrite(A_1B,HIGH);
digitalWrite(A_1A,LOW);
delay(5000);
//風扇反轉
digitalWrite(A_1B,LOW);
digitalWrite(A_1A,HIGH);
delay(5000);
//停止風扇轉動
digitalWrite(A_1B,LOW);
digitalWrite(A_1A,LOW);
delay(5000);
}
程式範例二(PWM訊號輸出控制):
須先安裝 ESP32 AnalogWrite 程式庫,安裝方式可參考第八篇:PWM呼吸燈 調控燈光亮度。
注意:由於電壓太低是無法推動馬達,所以建議是75~255值。
▼注意:假如使用下列程式碼發生編譯錯誤,則表示您目前安裝的ESP32函式庫較為新版,請務必將「#include <analogWrite.h>」這一行移除並重新編譯,則可編譯成功並正常運行。
#include <analogWrite.h>
int A_1A=16; //L9110S馬達驅動板 A_1A腳 連接到ESP32的 GPIO16
int A_1B=17; //L9110S馬達驅動板 A_1B腳 連接到ESP32的 GPIO17
void setup() {
pinMode(A_1A,OUTPUT);
pinMode(A_1B,OUTPUT);
}
void loop() {
//風扇正轉,馬達的轉速由75逐漸上升
for (int i = 75; i < 255; i++) {
analogWrite(A_1B,i);
analogWrite(A_1A,LOW);
delay(100);
}
//風扇反轉,馬達的轉速由75逐漸上升
for (int i = 75; i < 255; i++) {
analogWrite(A_1B,LOW);
analogWrite(A_1A,i);
delay(100);
}
//停止風扇轉動
analogWrite(A_1B,LOW);
analogWrite(A_1A,LOW);
delay(3000);
}