了解舵機(jī)以及MG996R的控制方法
1.舵機(jī)基礎(chǔ)知識(shí):
舵機(jī)是遙控航空、航天模型控制動(dòng)作,改變方向的重要組成部件,舵機(jī)是一種位置(角度)伺服的驅(qū)動(dòng)器。
舵機(jī)主要適用于那些需要角度不斷變化并可以保持的控制系統(tǒng),比如人形機(jī)器人的手臂和腿,車模和航模的方向控制。舵機(jī)的控制信號(hào)實(shí)際上是一個(gè)
?2.舵機(jī)的構(gòu)造:
舵機(jī)主要是由外殼、
引腳接線說明:
紅色:供電;
粽色:地線;必須與控制器, 如SMT32芯片共地;
橙色:PWM信號(hào)線;
?3.工作原理:
由接收機(jī)發(fā)出訊號(hào)給舵機(jī),經(jīng)由電路板上的 IC驅(qū)動(dòng)無核心馬達(dá)開始轉(zhuǎn)動(dòng),透過減速齒輪將動(dòng)力傳至擺臂,同時(shí)由位置檢測(cè)器送回訊號(hào),判斷是否已經(jīng)到達(dá)定位。位置檢測(cè)器其實(shí)就是可變電阻,當(dāng)舵機(jī)轉(zhuǎn)動(dòng)時(shí)電阻值也會(huì)隨之改變,藉由檢測(cè)電阻值便可知轉(zhuǎn)動(dòng)的角度。
大多數(shù)舵機(jī)PWM控制協(xié)議,都已經(jīng)標(biāo)準(zhǔn)化。舵機(jī)一般有三根引線,分別為電源線、地線、信號(hào)線。通過PWM來控制舵機(jī)輸出軸的旋轉(zhuǎn)角度,下圖是MG996R舵機(jī)PWM控制波形。

?
PWM信號(hào)周期: 20000 us
0度時(shí),高電平時(shí)長(zhǎng): 500 us
180度時(shí), 高電平時(shí)長(zhǎng):2500 us
每增加1 °,需增加高電平時(shí)長(zhǎng):(2500-500)÷180 = 11.1 us
?(ps: 脈沖寬度(W),簡(jiǎn)稱“脈寬”,是脈沖高電平持續(xù)的時(shí)間。占空比(D),脈寬除以脈沖周期的值。)
某角度值A(chǔ),需要的總高電平時(shí)長(zhǎng):(A x 11.1 +500)us
注意:
①PWM波其實(shí)就是一種脈寬可連續(xù)調(diào)節(jié)的矩形脈沖波。
②占空比其實(shí)就是描述脈寬與脈沖周期的比值,是量化值。
③占空比調(diào)節(jié)就是脈寬調(diào)節(jié),表達(dá)不一樣,但本質(zhì)是一樣的。
?4.舵機(jī)類型:

?
?
?
?5.舵機(jī)的使用:
使用Arduino編譯平臺(tái)中的servo.h舵機(jī)庫(kù)進(jìn)行對(duì)舵機(jī)的控制

?
?
將舵機(jī)從0°~90°再回轉(zhuǎn)的控制代碼如下:
#include <Servo.h>Servo myservo; ?// 定義Servo對(duì)象來控制int pos = 0; ? ?// 角度存儲(chǔ)變量posvoid setup() { ?myservo.attach(9); ?// 控制線(橙色)連接數(shù)字引腳9接受PWM信號(hào)}void loop() { ?for (pos = 0; pos <= 90; pos ++) { // 角度pos從0°到90° ? ?// in steps of 1 degree ? ?myservo.write(pos); ? ? ? ? ? ? ?// 舵機(jī)角度寫入 ? ?delay(10); ? ? ? ? ? ? ? ? ? ? ? // 等待10ms轉(zhuǎn)動(dòng)到指定角度 ?} ?for (pos = 90; pos >= 0; pos --) { // 從90°到0° ? ?myservo.write(pos); ? ? ? ? ? ? ?// 舵機(jī)角度寫入 ? ?delay(10); ? ? ? ? ? ? ? ? ? ? ? // 等待10ms轉(zhuǎn)動(dòng)到指定角度 ?} }