2013年12月4日 星期三

[Arduino] 伺服馬達的控制 Controlling Servo Motor

Servo Motor
這裡說的伺服馬達其實是模型伺服馬達或是玩具伺服馬達,這種馬達和一般的馬達有甚麼不同呢?基本上的差異就是,一般的馬達是接上的電源就拚了命轉,不管是順時針還是逆時針:慢慢轉或是快快轉,除非斷電它是不會停的。伺服馬達呢?帥就帥在他可以控制轉幾度!要轉 1 度就是 1 度,轉到 1 度就定格,要轉 180 度就是 180 度,絕對不會多轉,精準的很!因為這種特性,它的應用也有別於一般拼命轉的馬達。

利用 Arduino 控制這類馬達,其實比想像中的簡單,在 Arduino 其實已經有內建一個 class ,專門控制玩具伺服馬達。


首先先來認識一下模型伺服馬達的接線:

Servo Motor-2

可以看到紅、黑、白三色接線,紅線是電源線(正極)、黑色是地線(負極)、白線就是我們這次的重點拉---控制線

要讓馬達可以簡單的表演一下,首先簡單的完成以下的接線就可以拉!

sweep motor layout

接著打開 Arduino IDE,File > Examples > Servo > Sweep,選取 example 程式碼上傳就可以看到伺服器馬達的控制效果了。

image

程式碼小解說:
 #include  < Servo.h > // 匯入 Servo 這個 class,我們可以利用這個 class 內建的很多功能

Servo myservo;          // 建立 myservo 這個 Servo 物件 
int pos = 0;                // 儲存伺服馬達旋轉角度

void setup()
{
  myservo.attach(9);  // 指定伺服馬達的 control line 為 Arduino Uno 的 pin 9
 } 

void loop()
{
  for(pos = 0; pos < 180; pos += 1)   // 一度一度由 0 度旋轉到 180 度
  {                                 
    myservo.write(pos);             
    delay(15);                      
  }
  for(pos = 180; pos>=1; pos-=1)     // 一度一度由 180 度旋轉到 0 度
  {                               
    myservo.write(pos);             
    delay(15);                      
  }
}
成品大概會像這樣動!






4 則留言:

  1. 想詢問如做讓兩顆伺服馬達不同步運轉 就是一顆動到定點後,再動另一顆

    回覆刪除
    回覆
    1. Hi 你好,如果是使用 arduino 的話,只要將兩顆馬達接到不同 PWM 輸出 pin ,然後在 code 的部分依序寫就可以了

      刪除

Anything That's Worth Chatting

Related Posts Plugin for WordPress, Blogger...