本實作要使用一個可變電阻,控制伺服馬達的轉向。伺服馬達(Servo Motor)是可以提供動力的一種裝置,可藉由程式來控制速度和方向,伺服馬達內部包括了一個小型直流馬達伺服馬達、一組變速齒輪組、一個反饋可調電位器及一塊電子控制板。標準的微型伺服馬達有三條控制線,通常為紅色(+5V電源)、黑色(接地)及黃色或橘色(控制用, 連接至Arduino pin9)。由於我是在網站買實習的相容套件,這個伺服馬達的三條線顏色不太一樣,不過沒關係,總是離不開電源和控制兩類。本實作接上一個可變電阻,控制伺服馬達的轉向。
[安裝Library]
執行程式前,需要用到伺服器的函數庫Servo:程式庫(Library)安裝方法請參考另一篇文章: Arduino筆記:安裝 Arduino IDE 程式庫(Library)。
如要了解 Servo 函數庫的用法,可以參考 Arduino.cc:Servo。[材料]
- 麵包板 x 1
- Arduino Uno x 1
- 伺服馬達 (Servo Motor) x 1
- 10k 可變電阻 x 1
- 連接線 x N條
[接線]
伺服馬達有三條線,紅線接電源+5V、黑線接GND,訊號線接Pin 9,可變電阻的中間接腳接到A0,作為類比數值讀取。
[程式]
// 引用 Servo Library #include <Servo.h> //建立一個伺服馬達控制物件 Servo myservo; int potpin = 0; //該變數用於存儲用電位器讀出的模擬值 int val; // 該變數用於儲存伺服馬達角度位置 void setup() { myservo.attach(9); // 由Pin 9控制伺服馬達 } void loop() { val = analogRead(potpin); //讀取電位器控制的模擬值 (範圍在0-1023) val = map(val, 0, 1023, 0, 179); // 把0-1023的數值按比例縮放為0-180的數值 myservo.write(val); // 指定伺服馬達轉向的角度 delay(15); // 等待15ms讓伺服馬達到達指定位置 }
[結果]
實作的結果在轉動電阻時,會有吱吱的雜音,主要是接電阻控制是類比訊號,容易有雜訊干擾的情況發生。[參考資料]
- Arduino Learning:Examples > Servo Library
請問伺服馬達有四條線要怎接?
回覆刪除張貼留言