Arduino筆記(5):使用可變電阻控制伺服馬達

本實作要使用一個可變電阻,控制伺服馬達的轉向。伺服馬達(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讓伺服馬達到達指定位置 
}

[結果]

實作的結果在轉動電阻時,會有吱吱的雜音,主要是接電阻控制是類比訊號,容易有雜訊干擾的情況發生。

[參考資料]

1 留言

張貼留言

較新的 較舊