使用 PWM 通過串列埠控制直流電機
在這個例子中,我們的目標是完成一個最常見的任務: *我有一個小型直流電機,我如何使用我的 Arduino 來控制它?*使用 analogWrite()
和 Serial
庫,可輕鬆實現 PWM 和序列通訊。
基礎
脈衝寬度調製或簡稱 PWM 是一種使用數字輸出模擬模擬訊號的技術。這是如何運作的?使用脈衝序列,可以修改每個週期中高電平時間(數字 1,通常為 5V)與低電平時間(數字 0,0V)之間的關係 D(佔空比),以產生這兩個電平之間的平均電壓:
通過使用 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 的柵極,並通過電阻連線到公共地(我們需要非常低的電流!)。
以下是此構建的外觀示例。如果你喜歡這裡的計劃。
程式碼
現在我們可以通過序列通訊傳送值,將 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 功能來控制需要模擬訊號的應用,即使功率要求超過了電路板的限制。