使用 PWM 通過串列埠控制直流電機

在這個例子中,我們的目標是完成一個最常見的任務: *我有一個小型直流電機,我如何使用我的 Arduino 來控制它?*使用 analogWrite()Serial 庫,可輕鬆實現 PWM 和序列通訊。

基礎

脈衝寬度調製或簡稱 PWM 是一種使用數字輸出模擬模擬訊號的技術。這是如何運作的?使用脈衝序列,可以修改每個週期中高電平時間(數字 1,通常為 5V)與低電平時間(數字 0,0V)之間的關係 D(佔空比),以產生這兩個電平之間的平均電壓:

StackOverflow 文件

通過使用 Arduino 的 analogWrite(pin,value) 函式,我們可以改變 pin 輸出的佔空比的 value。注意,pin 必須進入輸出模式,value 必須在 0(0V) 和 255(5V) 之間。介於兩者之間的任何值都將模擬比例中間模擬輸出。

然而,模擬訊號的目的通常與機械系統的控制有關,該機械系統需要比單獨的 Arduino 板更多的電壓和電流。在本例中,我們將學習如何放大 Arduino 的 PWM 功能。

為此,使用 MOSFET 二極體。本質上,該二極體用作開關。它允許或中斷其源極漏極端子之間的電流。但它不是機械開關,而是具有稱為的第三個端子。一個非常小的電流(<1mA)將開啟該門並允許電流流動。這非常方便,因為我們可以將 Arduino 的 PWM 輸出傳送到此門,從而建立另一個 PWM 脈衝序列,其具有相同的佔空比通過 MOSFET,這允許電壓和電流破壞 Arduino。

物料清單:你需要構建此示例

  • MOSFET 二極體:例如,流行的 BUZ11
  • 電機保護二極體: 肖特基 SB320
  • 電阻:任何 10K~1M 歐姆
  • 電機:典型的小型電機(典型的可以是 12V)
  • 與你選擇的電機相容的電源
  • 麵包板
  • 彩色電纜!
  • 一個 Arduino,但你已經知道了。

構建

把所有東西放在一為麵包板的導軌供電並將 MOSFET 二極體放入其中。將電機連線在正軌和 MOSFET 漏極之間。以相同方式連線保護二極體:MOSFET 漏極和正極軌之間。將 MOSFET 的源極連線到公共接地軌。最後,將 PWM 引腳(我們在本例中使用引腳 10)連線到 MOSFET 的柵極,並通過電阻連線到公共地(我們需要非常低的電流!)。

以下是此構建的外觀示例。如果你喜歡這裡的計劃。

StackOverflow 文件

程式碼

現在我們可以通過序列通訊傳送值,將 Arduino 連線到計算機,上傳程式碼並控制電機。回想一下,這些值應該是 0 到 255 之間的整數。這個例子的實際程式碼非常簡單。每行都有解釋。

int in = 0;                   // Variable to store the desired value
byte pinOut = 10;             // PWM output pin

void setup() {                // This executes once
  Serial.begin(9600);             // Initialize serial port
  pinMode(pinOut, OUTPUT);        // Prepare output pin
}

void loop() {                 // This loops continuously
  if(Serial.available()){         // Check if there's data
    in = Serial.read();           // Read said data into the variable "in"
    analogWrite(pinOut, in);      // Pass the value of "in" to the pin
  }
}

就是這樣! 現在,你可以使用 Arduino 的 PWM 功能來控制需要模擬訊號的應用,即使功率要求超過了電路板的限制。