標題: Arduino舵機控制實驗詳解 含源程序 [打印本頁]
作者: 一加一 時間: 2018-9-11 11:12
標題: Arduino舵機控制實驗詳解 含源程序
舵機控制實驗
舵機是一種位置伺服的驅(qū)動器,主要是由外殼、電路板、無核心馬達、齒輪與位置檢測器所構(gòu)成。其工作原理是由接收機或者單片機發(fā)出信號給舵機,其內(nèi)部有一個基準電路,產(chǎn)生周期為20ms,寬度為1.5ms 的基準信號,將獲得的直流偏置電壓與電位器的電壓比較,獲得電壓差輸出。經(jīng)由電路板上的IC 判斷轉(zhuǎn)動方向,再驅(qū)動無核心馬達開始轉(zhuǎn)動,透過減速齒輪將動力傳至擺臂,同時由位置檢測器送回信號,判斷是否已經(jīng)到達定位。適用于那些需要角度不斷變化并可以保持的控制系統(tǒng)。當電機轉(zhuǎn)速一定時,通過級聯(lián)減速齒輪帶動電位器旋轉(zhuǎn),使得電壓差為0,電機停止轉(zhuǎn)動。一般舵機旋轉(zhuǎn)的角度范圍是0 度到180 度。
圖片2.png (248.58 KB, 下載次數(shù): 65)
下載附件
2018-9-11 11:08 上傳
舵機有很多規(guī)格,但所有的舵機都有外接三根線,分別用棕、紅、橙三種顏色進行區(qū)分,由于舵機品牌不同,顏色也會有所差異,棕色為接地線,紅色為電源正極線,橙色為信號線。
圖片3.png (133.66 KB, 下載次數(shù): 62)
下載附件
2018-9-11 11:09 上傳
舵機的轉(zhuǎn)動的角度是通過調(diào)節(jié)PWM(脈沖寬度調(diào)制)信號的占空比來實現(xiàn)的,標準PWM(脈沖寬度調(diào)制)信號的周期固定為20ms(50Hz),理論上脈寬分布應在1ms到2ms 之間,但是,事實上脈寬可由0.5ms 到2.5ms 之間,脈寬和舵機的轉(zhuǎn)角0°~180°相對應。有一點值得注意的地方,由于舵機牌子不同,對于同一信號,不同牌子的舵機旋轉(zhuǎn)的角度也會有所不同。
圖片4.png (166.63 KB, 下載次數(shù): 74)
下載附件
2018-9-11 11:09 上傳
了解了基礎知識以后我們就可以來學習控制一個舵機了,本實驗所需要的元器件很少只需要舵機一個、跳線一扎就可以了。
SG90 舵機*1
面包板跳線*1 扎
用Arduino 控制舵機的方法有兩種,一種是通過Arduino 的普通數(shù)字傳感器接口產(chǎn)生占空比不同的方波,模擬產(chǎn)生PWM 信號進行舵機定位,第二種是直接利用Arduino 自帶的Servo 函數(shù)進行舵機的控制,這種控制方法的優(yōu)點在于程序編寫,缺點是只能控制2 路舵機,因為Arduino 自帶函數(shù)只能利用數(shù)字9、10 接口。Arduino 的驅(qū)動能力有限,所以當需要控制1 個以上的舵機時需要外接電源。
圖片5.png (124.72 KB, 下載次數(shù): 80)
下載附件
2018-9-11 11:12 上傳
將舵機接數(shù)字 9 接口上。
編寫一個程序讓舵機轉(zhuǎn)動到用戶輸入數(shù)字所對應的角度數(shù)的位置,并將角度打印顯示到屏幕上。
參考源程序
- #include <Servo.h>
- Servo myservo; // 定義舵機對象,最多八個
- int pos = 0; // 定義舵機轉(zhuǎn)動位置
- void setup()
- {
- myservo.attach(9); // 設置舵機控制針腳
- }
- void loop()
- {
- // 0到180旋轉(zhuǎn)舵機,每次延時15毫秒
- for(pos = 0; pos < 180; pos += 1)
- {
- myservo.write(pos);
- delay(15);
- }
- // 180到0旋轉(zhuǎn)舵機,每次延時15毫秒
- for(pos = 180; pos>=1; pos-=1)
- {
- myservo.write(pos);
- delay(15);
- }
- }
復制代碼
作者: qwercxf 時間: 2018-9-14 16:32
謝謝樓主了額啊
作者: zhcdb2671 時間: 2018-9-27 23:19


樓主霸道
歡迎光臨 (http://www.torrancerestoration.com/bbs/) |
Powered by Discuz! X3.1 |