2025年7月1日 星期二

再談 L9110S 馬達驅動模組

 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 以下了。








沒有留言:

張貼留言