使用Arduino控制直流電機


直流電機是最簡單的電機型別。它有兩個端子或引線。連線電池後,電機將旋轉;如果反轉連線,電機將反向旋轉。如果端子上的電壓降低,電機的轉速也會相應降低。

在本文中,我們將瞭解如何將直流電機與Arduino介面並控制其速度。我們不會討論反轉電機方向,因為這需要額外的IC(H橋)。在本文結尾,我將提供一些教程連結,這些教程解釋了直流電機的反向旋轉。

好了,讓我們從電路圖開始。

電路圖

簡化的電路圖如下所示:

如您所見,電機的其中一個端子直接連線到+5V,另一個端子連線到PN2222電晶體的集電極。該電晶體的基極透過電阻連線到Arduino的11號引腳,而發射極連線到GND。我們使用電晶體是因為電機可能需要的電流遠大於Arduino數字引腳所能承受的電流。使用Arduino引腳控制電晶體的基極可以確保Arduino數字引腳的小電流可以控制電機的大電流。請注意,如果您的電機消耗的電流遠大於USB所能提供的電流,您可能需要使用電源介面卡而不是USB為Arduino供電。

電晶體充當開關。當11號引腳電壓達到最大值時,開關將完全閉合,電機在其端子(Vcc和GND)之間將承受最大電壓差,並以全速旋轉。當11號引腳的PWM佔空比降低時,開關將部分閉合(即,根據佔空比,有時斷開,有時閉合),從而在電機端子之間產生較小的表觀電壓差,從而降低其速度。PWM佔空比越高,電機速度越高。

電機兩個端子之間有一個反向保護二極體,銀色(負極)端連線到+5V線路。該二極體可保護Arduino和電晶體免受電機斷電時可能出現的任何負尖峰電壓和相應電流的影響。

另一個版本的電路圖來自另一個TutorialsPoint教程,如下所示:

唯一的區別是,在上圖電路中,電晶體的基極連線到Arduino的9號引腳,而不是11號引腳。請確保在程式碼中正確說明您連線基極的引腳。

示例

程式碼如下所示:

#define basePin 11

void setup() {
   pinMode(basePin, OUTPUT);
   Serial.begin(9600);
}

void loop() {
   if (Serial.available()) {
      int user_input_speed = Serial.parseInt();
      if (user_input_speed >= 0 && user_input_speed <= 255) {
         analogWrite(basePin, user_input_speed);
      }
   }
}

如您所見,我們將連線到電晶體基極的引腳定義為11號引腳。

在setup函式中,我們將引腳定義為OUTPUT並初始化Serial。

在loop函式中,我們從使用者那裡獲取一個整數,如果該整數在0到255之間,我們將相應地設定基極引腳的PWM佔空比。因此,電機的旋轉速度將與使用者輸入成正比。

如果您有興趣使用H橋改變電機旋轉方向,以下是一些相關的教程:

更新於:2021年5月31日

472 次瀏覽

開啟你的職業生涯

完成課程獲得認證

開始學習
廣告
© . All rights reserved.