L9110S 馬達驅動模組實為一個物美價廉又好用的馬達驅動模組,但因為價廉所以會犧牲不少保護功能,所以在實務應用上玩家常常會一不小心就讓 L9110S 馬達驅動模組燒毀。本文目的就在說明使用 L9110S 馬達驅動模組時該注意的細節。
Datasheet
在使用各類電子零組件前,建議務必先仔細研究一下它的 Datasheet。
以 L9110S 來說它的供應電壓範圍是 2.2~6.5V,所以不建議使用 2顆鋰電池 (7.4V) 作為它的輸入電壓,以免讓 L9110S 模組燒毀。
另外,在供應電壓為 5V 時,它的工作電流是 200mA,這樣的電流大概也只能勉強驅動 2 只 TT馬達。如果使用 L9110S 模組來驅動 370 以上的馬達,則是會有無法驅動馬達或是讓模組燒毀的可能。
馬達
馬達是感性元件,它裡面的線圈會匯聚能量,運轉時突然停止或反向轉動,線圈裡的能量會產生極大的變化(類似水錘效應),專業術語稱之為反電動勢,它的電壓會比輸入的電壓高出數倍之多,這樣的能量會從馬達回到模組身上,把模組燒毀。
要如何避免反電動勢燒毀模組,除了可以使用驅動模組的硬體設計來解決之外,在馬達跟程式方面也可以配合做一些改善。
例如,在 TT 馬達的銅片兩端焊上 1 只 104 電容,可以讓馬達在需要更多電流時,或是電流反轉時,運轉得更穩順。
程式
我們的目的是執行程式透過模組來驅動馬達,因此馬達、驅動模組、程式這三者之間需要妥善配合。也就是說,您需要知道下列幾件事情:
1. 馬達的特性,諸如它的電壓輸入範圍、轉速、扭力、工作電流和堵轉電流...等等。
2. 驅動模組的特性,諸如它的電壓輸入範圍、輸出電流多寡、工作頻率...等等。
3. 程式該怎麼寫,需要配合馬達特性與驅動模組特性,才能完美運作。
程式碼:
// L9110S_Test.ino 使用 L9110S 模組測試馬達轉動
void setup() {
pinMode(5, OUTPUT);
pinMode(6, OUTPUT);
pinMode(9, OUTPUT);
pinMode(10, OUTPUT);
mStop();
}
void loop() {
mForward(); // 馬達正轉 2 秒
delay(2000);
mStop(); // 馬達停止
mBackword(); / 馬達反轉 2 秒
delay(2000);
mStop(); / 馬達停止
}
void mStop() {
digitalWrite(5, LOW);
digitalWrite(6, LOW);
digitalWrite(9, LOW);
digitalWrite(10, LOW);
delay(100);
}
void mForward() {
digitalWrite(5, HIGH);
digitalWrite(6, LOW);
digitalWrite(9, HIGH);
digitalWrite(10, LOW);
}
void mBackword() {
digitalWrite(5, LOW);
digitalWrite(6, HIGH);
digitalWrite(9, LOW);
digitalWrite(10, HIGH);
}
這個程式需要注意的地方,就是在讓馬達反轉時先停止一下,建議的時間是 delay 50 以上,詳 mStop()。
PWM
欲控制馬達轉速可以使用 PWM。
需要注意的地方是,如果 L9110S 模組的輸入電壓是 5V ,那麼 PWM 值如果小於 100,將無法讓 TT 馬達轉動,因為此時的輸出電壓已經在 2.5V 以下了。