舵機控制方法
舵機的伺服系統(tǒng)由可變寬度的脈沖來進行控制,控制線是用來傳送脈沖的。脈沖的參數(shù)有最小值,最大值,和頻率。一般而言,舵機的基準信號都是周期為20ms,寬度為1.5ms。這個基準信號定義的位置為中間位置。舵機有最大轉(zhuǎn)動角度,中間位置的定義就是從這個位置到最大角度與最小角度的量完全一樣。最重要的一點是,不同舵機的最大轉(zhuǎn)動角度可能不相同,但是其中間位置的脈沖寬度是一定的,那就是1.5ms。如下圖:
角度是由來自控制線的持續(xù)的脈沖所產(chǎn)生。這種控制方法叫做脈沖調(diào)制。脈沖的長短決定舵機轉(zhuǎn)動多大角度。例如:1.5毫秒脈沖會到轉(zhuǎn)動到中間位置(對于180°舵機來說,就是90°位置)。當控制系統(tǒng)發(fā)出指令,讓舵機移動到某一位置,并讓他保持這個角度,這時外力的影響不會讓他角度產(chǎn)生變化,但是這個是由上限的,上限就是他的最大扭力。除非控制系統(tǒng)不停的發(fā)出脈沖穩(wěn)定舵機的角度,舵機的角度不會一直不變。
當舵機接收到一個小于1.5ms的脈沖,輸出軸會以中間位置為標準,逆時針旋轉(zhuǎn)一定角度。接收到的脈沖大于1.5ms情況相反。不同品牌,甚至同一品牌的不同舵機,都會有不同的最大值和最小值。一般而言,最小脈沖為1ms,最大脈沖為2ms。如下圖:
Arduino控制舵機的兩種方法
1、第一種是通過Arduino的普通數(shù)字傳感器接口產(chǎn)生占空比不同的方波,模擬產(chǎn)生PWM信號進行舵機定位。
2、第二種是直接利用Arduino自帶的Servo函數(shù)進行舵機的控制,這種控制方法的優(yōu)點在于程序編寫,缺點是只能控制2路舵機,因為Arduino自帶函數(shù)只能利用數(shù)字9、10接口。Arduino的驅(qū)動能力有限,所以當需要控制1個以上的舵機時需要外接電源。
arduino如何控制舵機及詳細步驟
工具/原料:
Arduino 實驗套件(Arduino UNO控制器,面包板,跳線,USB數(shù)據(jù)線)
80度旋轉(zhuǎn)舵機 * 1 個
雙頭等長標準 2.54mm 排針 * 若干
方法/步驟:
1、準備實驗需要用到的硬件,如圖所示:
2、如下圖所示進行硬件的連接,此步我們先不連接任何其他元件,只需將Arduino UNO控制器連接到電腦
3、如下圖所示,我們先不使用電位計控制,只是使用程序來控制一個舵機,將下列程序復制到Arduino IDE中或者可以直接在最后一步中提供的百度網(wǎng)盤地址中直接下載代碼和 Fritzing 電路圖
#include 《Servo.h》
Servo myservo;
int pos = 0;
void setup()
{
myservo.attach(9);
}
void loop()
{
for(pos = 0; pos 《= 180; pos += 1)
{
myservo.write(pos);
delay(15);
}
for(pos = 180; pos》=0; pos-=1)
{
myservo.write(pos);
delay(15);
}
}
4、如圖所示,選擇正確的板卡型號和端口,將程序上傳到控制器中。
5、如圖所示,程序上傳無誤的情況下 Arduino IDE 軟件會顯示如下結(jié)果,在上傳過程中,Arduino 控制器板載的 TX RX 燈會頻閃
6、如下圖所示,使用舵盤連接螺絲,連接舵盤和舵機
7、按照下圖中的電路,進行實驗硬件的連接
注意:舵機線一種是:紅、黑、黃(紅色連接 Vcc、黑色連接 GND、黃色連接信號 S)
還有較為常見的一種是:棕、紅、橙(棕色連接 GND、紅色連接 Vcc、橙色連接信號 S)
8、實驗效果如圖所示,舵機會自動從 -90 度轉(zhuǎn)動到 90 度,再從 90 度轉(zhuǎn)動到 -90 度。注意當 Arduino UNO 控制器連接到電腦供電時,舵機會自動歸回中間位置
9、代碼回顧:
(1)#include《Servo.h》 載入 Servo.h 庫文件
(2)Servo myservo; 建立一個舵機對象,名稱為 myservo
(3)myservo.attach(9); 將引腳 9 上的舵機與舵機對象連接起來
attach 函數(shù)連接一個舵機對象到指定的引腳上,attch 函數(shù)可以有 1 或 3 個參數(shù)。如果使用 3 個函數(shù),第一個參數(shù)表示引腳,第二個參數(shù)表示最小角度(0度)的脈沖寬度,單位是微秒(默認是 544),第三個參數(shù)表示最大角度(180度)的脈沖寬度,單位是微秒(默認是2400)。通常情況下,只需要設置舵機引腳,忽略第二和第三個參數(shù)。
(4)myservo.write(pos); 寫角度到舵機
代碼位置如下圖所示:
10、硬件回顧:
舵機:包括一個直流點擊,一套裝在電機和輸出軸之間的齒輪系統(tǒng),一個位置傳感結(jié)構(gòu)和一個控制電路。位置傳感機構(gòu)檢測舵機的位置并提供給控制系統(tǒng),控制系統(tǒng)使用電機控制舵機臂運動到指定位置。有很多不同尺寸、速度、精度的舵機,功率越大、精度越高的舵機相對價位也比較高。使用汽車、機器人、飛機時,舵機是很常用的一種方式。通過PWM信號實現(xiàn)舵機位置的控制,一般來說脈寬在 500 微秒到 2500 微秒之間,舵機從 -90 到 90 度。下圖所示為舵機的內(nèi)部結(jié)構(gòu)圖
11、下圖分別為(1)舵機控制原理(2)舵機扭矩計算方法(3)輸入脈沖寬度與舵機角度對應關(guān)系圖,供大家參考
-
舵機
+關(guān)注
關(guān)注
17文章
255瀏覽量
40769 -
Arduino
+關(guān)注
關(guān)注
186文章
6453瀏覽量
185902
發(fā)布評論請先 登錄
相關(guān)推薦
評論