課程目標
- 舵機的組成與工作原理
- 舵機的控制方式與應用
相關知識
**舵機:**是一種位置(角度)伺服的驅動器,適用于那些需要角度不斷變化并可以保持的控制系統。
**舵機的結構組成:**一般來講舵機主要由以下幾個部分組成,舵盤、減速齒輪組、位置反饋電位計、直流電機、控制電路等。
**舵機工作原理:**舵機安裝了一個電位器(或其它角度傳感器)檢測輸出軸轉動角度,控制板根據電位器的信息能比較精確的控制和保持輸出軸的角度。這樣的直流電機控制方式叫閉環控制,所以舵機更準確的說是伺服馬達。
舵機角度控制: 舵機轉動的角度是通過調節PWM(脈沖寬度調制)信號的占空比來實現的。標準的PWM信號的周期固定為20ms,理論上脈寬分布應該在1ms到2ms之間,實際上可由0.5ms到2.5ms之間,脈寬與轉角0°—180°相對應。不同廠家不同型號的舵機也會有所差異。
電路搭建
所需材料:
ArduinoUNO * 1
SG90舵機 *1
杜邦線若干
電路連接:
舵機一般都外接三根線,分別用棕、紅、橙三種顏色進行區分,由于品牌不同,顏色也會有所差異,棕色為接地線,紅色為電源正極線,橙色為信號線。Arduino如果需要控制多個舵機,需要外接電源以及使用專用的舵機控制板。
程序編寫
練習一:舵機往返運動
編寫控制程序,實現舵機在0°和180°間不間斷轉動。
圖形化方式:
代碼方式:
/* 項目名稱:舵機0~180°往返運動
* 項目時間:2022.03.22
* 項目作者:MRX
*/
#include < Servo.h >
Servo myservo; // 定義Servo對象來控制
int pos = 0; // 角度存儲變量
void setup() {
myservo.attach(6); // 控制線連接數字6
}
void loop() {
for (pos = 0; pos <= 180; pos ++) { // 0°到180°
myservo.write(pos); // 舵機角度寫入
delay(5); // 等待轉動到指定角度
}
for (pos = 180; pos >= 0; pos --) { // 從180°到0°
myservo.write(pos); // 舵機角度寫入
delay(5); // 等待轉動到指定角度
}
}
練習二:可控的舵機
通過旋轉電位器來控制舵機的轉動角度。
電路連接:
舵機連接到UNO的6號腳,電位器連接UNO的A0。
圖形化方式:
代碼方式:
/* 項目名稱:電位器控制舵機運動
* 項目時間:2022.03.22
* 項目作者:MRX
*/
#include < Servo.h >
Servo myservo; // 定義Servo對象來控制
int pos = 0;
void setup() {
myservo.attach(6); // 控制線連接數字6
pinMode(A0,INPUT);
}
void loop() {
pos = map(analogRead(A0),0,1024,0,180);//將電位器讀取的值映射為舵機選擇角度
myservo.write(pos); // 舵機角度寫入
delay(5); // 等待轉動到指定角度
}
程序分析:
用Arduino控制舵機一般有兩種方法:
- 通過Arduino的普通數字引腳產生占空比不同的方波,模擬產生PWM信號進行舵機控制。
- 直接利用Arduino自帶的Servo庫進行控制。
Servo庫常用函數:
- Attach(接口)—設定舵機接口。
- Write(角度)—用于設定舵機旋轉的角度,可設定范圍0°—180°。
- Read()—用于讀取舵機角度的語句,可理解為讀取最后一條write()命令中的值。
-
電位器
+關注
關注
14文章
964瀏覽量
66047 -
控制電路
+關注
關注
81文章
1609瀏覽量
134935 -
舵機
+關注
關注
17文章
239瀏覽量
40397 -
伺服驅動器
+關注
關注
21文章
389瀏覽量
30535 -
Arduino
+關注
關注
184文章
6428瀏覽量
184858
發布評論請先 登錄
相關推薦
評論