360度連續旋轉伺服馬達(MG 996R)教學
之前在這篇 伺服馬達(Tower Pro SG90) 教學 https://tcweng.blogspot.com/2019/08/tower-pro-sg90-tcweng.html 中,就有提到如何四步驟記清楚控制伺服馬達控制的技巧,不論是哪一種伺服馬達基本上都是一樣,這次可360度旋轉的伺服馬達也不例外
那為何還要寫這篇文章呢??
因為要進一步地跟大家說明"連續旋轉的伺服機"和"一般限制180度的伺服機"控制上有和些微的不同,如果有自己先用上一篇文章的程式實驗過的讀者就知道,連續旋轉的伺服機會一直旋轉停不下來的問題,甚至某些時候還會反過來轉,那為何會這樣呢?
在同一個程式裡,面對兩種的伺服機,myservo.write(i); 這句話代表著兩種不同的含意,在180度限制的伺服機裡,這句話直接告訴伺服機要轉到哪裡,也就是說你叫他轉到90度,他就轉到90度,而連續旋轉的伺服機就不一樣了,myservo.write(i); 這句話是命令他的速度,所以你在程式裡面要讓他轉到某一個位置時,就不能直接命令他要到哪個角度,而是要給他一個速度和時間,讓他轉到你要的位置
舉個例子:
#include <Servo.h>
Servo myservo; // 建立Servo物件
void setup()
{
myservo.attach(9); // 伺服馬達的訊號線
}
void loop() {
myservo.write(60);
delay(600);
Servo myservo; // 建立Servo物件
void setup()
{
myservo.attach(9); // 伺服馬達的訊號線
}
void loop() {
myservo.write(60);
delay(600);
myservo.write(90);
}
}
前面的語法跟普通伺服馬達一模一樣,不一樣的是在loop迴圈裡面,命令他以"60"的速度旋轉0.6秒後停下來的意思
在速度的部分
正轉是0~89之間
反轉是91~180之間
而要讓馬達停下來就是90
當然每個馬達都可以能有誤差
下圖兩種馬達長的一模一樣,但有一顆是360度旋轉的,有一顆是180度限制旋轉的,所以在購買的時候要看清楚,才不會買到自己不需要的形式
沒有留言:
張貼留言