【雕爺學編程】Arduino動手做(83)---模擬SG90舵機模塊


37款傳感器與執行器的提法,在網絡上廣泛流傳,其實Arduino能夠兼容的傳感器模塊肯定是不止這37種的。鑒於本人手頭積累了一些傳感器和執行器模塊,依照實踐出真知(一定要動手做)的理念,以學習和交流為目的,這里准備逐一動手嘗試系列實驗,不管成功(程序走通)與否,都會記錄下來---小小的進步或是搞不掂的問題,希望能夠拋磚引玉。

【Arduino】168種傳感器模塊系列實驗(資料代碼+仿真編程+圖形編程)

實驗八十三:180度SG90舵機模塊(模擬9G)

舵機
是一種位置伺服的驅動器,主要是由外殼、電路板、無核心馬達、齒輪與位置檢測器所構成。其工作原理是由接收機或者單片機發出信號給舵機,其內部有一個基准電路,產生周期為20ms,寬度為1.5ms 的基准信號,將獲得的直流偏置電壓與電位器的電壓比較,獲得電壓差輸出。經由電路板上的IC 判斷轉動方向,再驅動無核心馬達開始轉動,透過減速齒輪將動力傳至擺臂,同時由位置檢測器送回信號,判斷是否已經到達定位。適用於那些需要角度不斷變化並可以保持的控制系統。當電機轉速一定時,通過級聯減速齒輪帶動電位器旋轉,使得電壓差為0,電機停止轉動。一般舵機旋轉的角度范圍是0 度到180 度。

SG90舵機
9克小舵機是一種位置(角度)伺服的驅動器,適用於那些需要角度不斷變化並可以保持的控制系統。常見於航模,飛機模型,遙控機器人及機械部件當中。在使用中,舵機的配件通常包含一個能把舵機固定到基座上的支架以及可以套在驅動軸上的舵盤,通過舵盤上的孔可以連接其它物體構成傳動模型。小舵機自帶的3線接口可以通過RJ25適配器與主板相連。

SG90舵機技術規格

工作電壓:4.8V到6V DC

工作電流:80到100mA

待機電流:5mA

極限角度: 210°±5%

扭力: 1.3到1.7kg/cm

工作溫度:-10℃到60℃

濕度范圍:60%±10%

轉速: 0.09到0.10 sec/60°(4.8V)

信號周期:20 ms

信號高電平時間范圍:1000到2000 us/周期

尺寸: 32.3 x 12.3 x 30.6 mm (長x寬x高)

舵機工作原理

舵機安裝了一個電位器(或其它角度傳感器)檢測輸出軸轉動角度,控制板根據電位器的信息能比較精確的控制和保持輸出軸的角度。這樣的直流電機控制方式叫閉環控制,所以舵機更准確的說是伺服馬達,英文 servo.舵機組成: 舵盤、 減速齒輪、 位置反饋電位計、直流電機、 控制電路板等。控制電路板接受來自信號線的控制信號,控制電機轉動,電機帶動一系列齒輪組,減速后傳動至輸出舵盤。舵機的輸出軸和位置反饋電位計是相連的,舵盤 轉動的同時,帶動位置反饋電位計,電位計將輸出一個電壓信號到控制電路板,進行反饋,然后控制電路板根據所在位置決定電機轉動的方向和速度,從而達到目標停止。其工作流程為:控制信號→控制電路板→電機轉動→齒輪組減速→舵盤轉動→位置反饋電位計→控制電路板反饋。

舵機的閉環檢測機制
關於舵機的精准位置控制,存在以下如下圖的閉環控制機制。即:位置檢測器(角度傳感器)是它的輸入傳感器,舵機轉動的位置變化,位置檢測器的電阻值就會跟着變化。通過控制電路讀取該電阻值的大小,就能根據阻值適當調整電機的速度和方向,使電機向指定角度旋轉。從而實現了舵機的精確轉動的控制。

舵機的控制信號
為周期是20ms的脈寬調制(PWM)信號,其中脈沖寬度從0.5ms-2.5ms,相對應舵盤的位置為0-180度,呈線性變化。也就是說,給它提供一定的脈寬,它的輸出軸就會保持在一個相對應的角度上,無論外界轉矩怎樣改變,直到給它提供一個另外寬度的脈沖信號,它才會改變輸出角度到新的對應的位置上。舵機內部有一個基准電路,產生周期20ms,寬度1.5ms的基准信號,有一個比較器,將外加信號與基准信號相比較,判斷出方向和大小,從而產生電機的轉動信號。由此可見,舵機是一種位置伺服的驅動器,轉動范圍不能超過180度,適用於那些需要角度不斷變化並可以保持的驅動當中。比方說機器人的關節、飛機的舵面等。

PWM信號和舵機轉動角度的關系
說到舵機的控制信號,一般是脈寬調制(PWM)信號,如下圖,直觀反映了PWM信號和舵機轉動角度的關系,你也可以簡單的理解為,通過給舵機通電的時間控制,結合角度傳感器的反饋信號檢測和控制,實現了舵機的精確角度控制。舵機的控制信號周期為20MS的脈寬調制信號(PWM),其中脈寬從0.5ms-2.5ms,相應的舵盤位置從0-180度,呈線型變化。也就是說,給舵機提供一定的脈寬,他的輸出軸就會保持一定的對應角度,無論外接轉矩怎么改變,知道給他提供另外一個脈沖信號,他才會改變輸出角度到新的對應的位置上。舵機內部有一個基准電路,產生周期為20MS,寬度為1.5MS的脈沖信號,有一個比較器,將外加信號與基准信號相比較,判斷出方向和大小,從而產生電機的轉動信號。舵機是一種位置伺服驅動器,轉動范圍不能超過180度,適用於那些需要不斷變化並可以保持的驅動器中,比喻說機器人的關節、飛機的多面等。

舵機的功能特性

體積小,重量輕;

采用防反插接口;

具有反接保護,電源反接不會損壞IC;

支持Arduino IDE編程, 並且提供運行庫來簡化編程;

支持圖形可視化與仿真編程,適合全年齡用戶。

 

引腳定義

舵機接線方法(三線接線法)

(1)黑線(地線)

紅線(電源線)兩個標准:4.8V和6V藍線/黃線(信號線)

(2)棕線(地線)

紅線(電源線)兩個標准:4.8V和黃線(信號線)

 

舵機的應用場合:

      1. 高檔遙控仿真車,至少得包括左轉和右轉功能,高精度的角度控制,必然給你最真實的駕車體驗

      2. 多自由度機器人設計,為什么日本人設計的機器人可以上萬RMB的出售,而國內設計的一些兩三千塊也賣不出去呢,還是一個品質的問題

      3. 多路伺服航模控制,電動遙控飛機,油動遙控飛機,航海模型等

 

實驗開源代碼

 

/*

【Arduino】168種傳感器模塊系列實驗(資料代碼+仿真編程+圖形編程)

 實驗八十三: 180度SG90舵機模塊(模擬9G)

 安裝庫:IDE—工具—管理庫—搜索“servo”—安裝

 測試舵機,0-180度之間循環轉動

*/



#include <Servo.h>

Servo myservo; // 創建舵機對象來控制舵機

int pos = 0;  // 用來存儲舵機位置的變量



void setup(){

myservo.attach(9); // 把連接在引腳9上的舵機賦予舵機對象

}



void loop(){

for(pos = 0; pos <= 180; pos += 1) // 從0度到180度

{                 // 步長為1度

myservo.write(pos);       // 告訴舵機到達位置變量‘pos’

delay(15);            // 舵機命令之間等待15ms

}

for(pos = 180; pos>=0; pos-=1)   // 從180度到0度

{

myservo.write(pos);       // 在相反的方向上移動舵機

delay(15);            // 舵機命令之間等待15ms

}

}

  實驗接線示意圖

實驗開源仿真編程(Linkboy V4.2)

實驗仿真編程(Linkboy V4.2)之二

實驗開源圖形編程(Mixly、Mind+、編玩邊學)

實驗開源圖形編程(Mixly、Mind+、編玩邊學)之二

實驗仿真編程(Linkboy V4.2)之三

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM