18luck网站

18luck网站電子設計 | 18luck网站Rss 2.0 會員中心 會員注冊
搜索: 您現在的位置: 18luck网站 >> 基礎入門 >> 伺服電機與控製 >> 正文

使用servo.h控製SG90舵機,伺服電機控製編程

作者:佚名    文章來源:本站原創    點擊數:    更新時間:2019-05-30

本文將繼續圍繞舵機的控製進行,我們(men) 將以Tower Pro (輝盛)SG90舵機的控製為(wei) 例,因為(wei) SG90是市麵上價(jia) 格較便宜,也是實驗中用得最多的產(chan) 品之一。

舵機

使用servo.h控製SG90舵機 

舵機(servo motor),常用於(yu) 遙控模型飛機,所以又常稱為(wei) RC伺服電機(RC Servo,Radio Control Servo,Remote Control Servo)。詳見:什麽(me) 是舵機?

舵機裏含有直流馬達、齒輪箱、軸柄、以及控製電路,我們(men) 可透過信號控製軸柄的轉動角度,大概都是0到180度,但不同廠牌型號會(hui) 有不同的範圍;經由齒輪箱降速後,變成適當可用的轉速,並且提供更高的轉矩(扭力)。詳見:舵機的工作原理

不過每個(ge) 廠牌型號的舵機可允許旋轉的角度各不相同,也就是說可接受的信號脈衝(chong) 範圍也不相同,必須查閱產(chan) 品資料規格書(shu) ,若超出範圍可能會(hui) 損害舵機。下麵是Tower Pro SG90的規格:

111

重量:9g

尺寸:23*12.2*29mm

工作電壓:4.8V轉矩:1.8kg-cm,當工作電壓為(wei) 4.8V時

運轉速度:0.1秒 ∕ 60度 ,當工作電壓為(wei) 4.8V時

脈衝(chong) 寬度範圍:500~2400µs

死頻帶寬度(dead band width):10µs

從(cong) 中我們(men) 可知,可允許的脈衝(chong) 範圍是500~2400µs,也就是0.5~2.4ms,比剛剛說的一般範圍還要寬,也就代表這個(ge) 舵機能旋轉的角度更大。另外有項值得一提的數據是死頻帶寬度,意思是說,因為(wei) 信號可能不穩定而上下起伏,當這一次脈衝(chong) 寬度與(yu) 上一次相差不超過死頻帶寬度時,舵機便不會(hui) 動作。

servo.h控製舵機

本次試驗,我們(men) 直接用Arduino的5V腳為(wei) 舵機供電。若使用超過兩(liang) 個(ge) 舵機,則應該使用獨立的電源為(wei) 舵機供電,記得共地。信號腳使用Arduino的D9。 Arduino內(nei) 建操控舵機的標準庫,使用方法非常簡單。在如何使用Arduino舵機庫servo.h一文中,我們(men) 也進行了相關(guan) 函數的介紹。下麵以操控舵機的旋轉角度為(wei) 例,來看看servo.h如何控製舵機。本實驗使用此servo.h代碼庫時,D9與(yu) D10無法輸出PWM信號,於(yu) 是我們(men) 將舵機的信號線接在數位腳位9或10。 代碼如下:

#include <Servo.h> Servo myservo; // 建立Servo實例,控製舵機 void setup() { myservo.attach(9); // 連接D9,舵機的信號線 } void loop() { for(int i = 0; i <= 180; i+=1){ myservo.write(i); // 使用write,傳(chuan) 入角度值,從(cong) 0度轉到180度 delay(20); } for(int i = 180; i >= 0; i-=1){ myservo.write(i);// 使用write,傳(chuan) 入角度值,從(cong) 180度轉到0度 delay(20); } }

不過Servo.h預設的脈衝(chong) 寬度範圍是544到2400µs,跟SG90舵機的500到2400差了一些些,我們(men) 可修正此點。

#include <Servo.h> Servo myservo; void setup() { myservo.attach(9, 500, 2400); // 修正脈衝(chong) 寬度範圍 myservo.write(90); // 開始先置中90度 delay(3000); } void loop() { for(int i = 500; i <= 2400; i+=100){ myservo.writeMicroseconds(i); // 直接以脈衝(chong) 寬度控製 delay(300); } for(int i = 2400; i >= 500; i-=100){ myservo.writeMicroseconds(i); delay(300); } }

這裏需要注意的,使用舵機前必須查詢舵機的規格參數表,查到正確的脈衝(chong) 寬度範圍,如果與(yu) servo.h的預設範圍有偏差,需要采用“myservo.attach(9, 500, 2400)”的方式進行修正。使用writeMicroseconds函數時也要注意,不能傳(chuan) 入超出範圍的值,否則可能會(hui) 損壞舵機。

Tags:舵機,伺服電機  
責任編輯:admin
請文明參與討論,禁止漫罵攻擊,不要惡意評論、違禁詞語。 昵稱:
1分 2分 3分 4分 5分

還可以輸入 200 個字
[ 查看全部 ] 網友評論
關於我們 - 聯係我們 - 廣告服務 - 友情鏈接 - 網站地圖 - 版權聲明 - 在線幫助 - 文章列表
返回頂部
刷新頁麵
下到頁底
晶體管查詢