2019年8月7日 星期三

伺服馬達(Tower Pro SG90) 教學_TCweng


伺服馬達 (Tower Pro SG90) 教學


伺服馬達也可以叫做伺服機,常常用來製作舵機....等等



而關於轉速,扭矩,角度範圍,就得依據不同廠商的商品而定,並不是每一家廠商的伺服機都一模一樣,但大部分的伺服機都似在0~180度的範圍,甚至還有360度旋轉的伺服機


至於怎麼控制伺服機這件事情,就比選擇伺服機還要來的簡單,因為不管是一般180度限制範圍旋轉的伺服機或是可以360度不同旋轉的伺服機,用的語法幾乎一模一樣只有用的時間點的不同


360度旋轉的伺服機可以到這個網址參考:
https://tcweng.blogspot.com/2019/08/360tcweng.html



底下直接給一個程式當作例子:


#include <Servo.h>

Servo myservo; // 建立Servo物件

void setup()
{
myservo.attach(9); // 伺服馬達的訊號線接腳
}

void loop()
{
for(int i = 0; i <= 180; i+=1){
myservo.write(i); // 使用write,告訴伺服機角度,從0度轉到180度
delay(20);
}
for(int i = 180; i >= 0; i-=1){
myservo.write(i);// 使用write,告訴伺服機角度,從180度轉到0度
delay(20);
}
}




上面這個程式是較伺服機從0轉到180度,再從180度反轉回來,如此反覆,而從這個程式裡面我們可以分解出四大部分,每次只要記住這四個步驟,操控伺服機就沒什麼問題了


第一步就是呼叫我們的 函示庫
#include <Servo.h>


第二步是建立一個伺服機物件
Servo myservo;



以上這兩句都必須要在void setup() 之前


第三步定義伺服機接腳,表示伺服機訊號線接到9號的意思
myservo.attach(9);


最後一步就是告訴伺服機要轉到哪裡啦~~
所以這句話放在哪裡都可以,只要在myservo.attach(9);這句話之後就沒問題了


接線的部分



















棕色(黑色)接到arduino的GND
紅色就是arduino的5V(大部分)
而橘色或是其他顏色的線就是我們的訊號線
範例裡面我們接到9號的位置



最後再舉個例子複習一下:

#include <Servo.h>

Servo myservo; // 建立Servo物件

void setup()
{
myservo.attach(9); // 伺服馬達的訊號線接腳
myservo.write(180);// 使用write,告訴伺服機轉到180度
}

void loop() {
delay(2000);//延遲兩秒
myservo.write(0); // 使用write,告訴伺服機轉到0度
}




補充伺服機控制的小知識:

一般伺服機透過訊號線傳送PWM脈波來控制旋轉角度,而這個訊號必須每秒重複50次(50Hz),而訊號持續的長短便代表了伺服機該轉動到什麼位置,假設範圍從1.0ms到2.0ms(millisecond,毫秒,千分之一秒),則中間值是1.5ms;那1.0ms就是角度0度,1.5ms就是90度,2.0ms則是轉到底180度。

使用前也必須先了解伺服機電壓,以及最大旋轉角度...等等,如果超出了範圍,可能導致伺服機的損壞

沒有留言:

張貼留言