創(chuàng)客領域中,,舵機是最常用的執(zhí)行器之一。舵機(英文:Servo)是一種伺服電機,,能夠旋轉(zhuǎn)固定的角度,,固定的位置。它是由直流電機,、減速齒輪組,、傳感器和控制電路組成的一套自動控制系統(tǒng)。通過發(fā)送信號,,指定輸出軸旋轉(zhuǎn)角度,。舵機一般只能旋轉(zhuǎn)180度,當然也有360度,,與普通直流電機的區(qū)別主要在于,,直流電機是一圈圈轉(zhuǎn)動的,舵機只能在一定角度內(nèi)轉(zhuǎn)動,,不能一圈圈連續(xù)轉(zhuǎn),。普通直流電機無法反饋轉(zhuǎn)動的角度信息,而舵機可以,。因此,,舵機適用于那些需要角度不斷變化并可以保持穩(wěn)定的控制系統(tǒng),比如人形機器人的手臂和腿,,車模和航模的方向控制,。舵機的控制信號實際上是一個脈沖寬度調(diào)制信號( PWM信號),該信號可由FP-GA器件,、模擬電路或單片機產(chǎn)生,。 舵機和機械手臂 舵機的結(jié)構(gòu)和原理:舵機主要由以下幾個部分組成:舵盤,、減速齒輪組,、位置反饋電位計、直流電機,、控制電路等,。 舵機中有一個電位計(角度傳感器)可以檢測輸出軸轉(zhuǎn)動角度??刂齐娐钒褰邮軄碜孕盘柧€的控制信號,,控制電機轉(zhuǎn)動,電機帶動一系列齒輪組,,減速后傳動至輸出舵盤,。舵機的輸出軸和位置反饋電位計是相連的,舵盤轉(zhuǎn)動的同時,,帶動位置反饋電位計,,電位計將輸出一個電壓信號到控制電路板,進行反饋,,然后控制電路板根據(jù)所在位置決定電機轉(zhuǎn)動的方向和速度,,從而達到目標停止。 工作流程為: 控制信號→控制電路板→電機轉(zhuǎn)動→齒輪組減速→舵盤轉(zhuǎn)動→位置反饋電位計→控制電路板反饋,。 舵機的接線舵機采用上線接線法,。電源線(+5V,紅色),,地線(GND棕色)和PWM控制線(黃色),。 舵機的控制舵機的控制一般需要一個20ms左右的時基脈沖,,該脈沖的高電平部分一般為0.5ms-2.5ms范圍,,總間隔為2ms。脈沖的寬度將決定馬達轉(zhuǎn)動的距離,。例如:1.5毫秒的脈沖,,電機將轉(zhuǎn)向90度的位置(通常稱為中立位置,對于180°舵機來說,,就是90°位置),。如果脈沖寬度小于1.5毫秒,那么電機軸向朝向0度方向,。如果脈沖寬度大于1.5毫秒,,軸向就朝向180度方向。以180度舵機為例,,對應的控制關系是這樣的:
Arduino驅(qū)動舵機實驗下面我們就用Arduino UNO驅(qū)動一個舵機,,每隔一段時間旋轉(zhuǎn)固定角度,。 硬件設備:
接線: 舵機電流較大,建議單獨5V供電,,信號線接Arduino UNO 數(shù)字3引腳,,舵機和單片機共地,。 程序: Arduino有專門驅(qū)動舵機的庫Servo.h,,導入后就可以輕松驅(qū)動舵機了。 #include <Servo.h>Servo myservo; // 創(chuàng)建舵機int deg = 30; //設定角度值void setup(){ myservo.attach(3); // 舵機1接口3 myservo.write(deg); // 初始角度}void loop() { deg = 50; myservo.write(deg); // 旋轉(zhuǎn)到50度 delay(1000); // 延遲i秒 deg = 110; myservo.write(deg); // 旋轉(zhuǎn)到110度 delay(1000); // 延遲i秒 } 舵機的選擇數(shù)字舵機和模擬舵機: 兩者在基本機械結(jié)構(gòu)方面是完全一樣的,,主要由馬達,、減速齒輪、控制電路等組成,,而數(shù)字舵機和模擬舵機的最大區(qū)別則體現(xiàn)在控制電路上: 數(shù)字舵機的控制電路比模擬舵機多了微處理器和晶振,。不要小看這一點改變,它對提高舵機的性能有著決定性的影響,。數(shù)字舵機與模擬舵機的不同主要體現(xiàn)在以下兩個方面: 1.處理接收機的輸入信號的方式,,數(shù)字舵機只需發(fā)送1次PWM信號就能保持在規(guī)定的某個位置,而模擬舵機是需要多次發(fā)送PWM信號才能夠保持在規(guī)定的位置上,,實現(xiàn)對舵機的控制,,按照規(guī)定的要求進行的速度進行轉(zhuǎn)動。 2.控制舵機馬達初始電流的方式,,數(shù)字舵機減少無反應區(qū)(對小量信號無反應的控制區(qū)域),,增加分辨率以及產(chǎn)生更大的固定力量。 模擬舵機的1個“缺點” 假設一個短促的動力脈沖,,緊接著很長的停頓,,并不能給馬達施加多少激勵,使其轉(zhuǎn)動,。這意味著如果有一個比較小的控制動作,,舵機就會發(fā)送很小的初始脈沖到馬達,這是非常低效率的,。這也是為什么模擬舵機有“無反應區(qū)”的存在,。比如說,舵機對于發(fā)射機的細小動作,,反應非常遲鈍,,或者根本就沒有反應。 數(shù)字舵機的2個“優(yōu)勢” 1,、數(shù)字舵機是新型時代出現(xiàn)的舵機,,因此數(shù)字在反應速度方面與模擬舵機相比是有優(yōu)勢的。因為微處理器的關系,,數(shù)字舵機可以在將動力脈沖發(fā)送到舵機馬達之前,,對輸入的信號根據(jù)設定的參數(shù)進行處理,。這意味著動力脈沖的寬度,就是說激勵馬達的動力,,可以根據(jù)微處理器的程序運算而調(diào)整,,以適應不同的功能要求,并優(yōu)化舵機的性能,。 2,、數(shù)字舵機以高得多的頻率向馬達發(fā)送動力脈沖。就是說,,相對于傳統(tǒng)的50脈沖/秒,,現(xiàn)在是300脈沖/秒。雖然,,因為頻率高的關系,,每個動力脈沖的寬度被減小了,但馬達在同一時間里收到更多的激勵信號,,并轉(zhuǎn)動得更快,。這也意味著不僅僅舵機馬達以更高的頻率響應發(fā)射機的信號,而且“無反應區(qū)”變??;反應變得更快;加速和減速時也更迅速,、更柔和,;數(shù)字舵機能提供更高的精度和更好的固定力量。 常用的舵機: SG90 9g舵機: SG90
MG90 14g舵機: MG90S
MG995 55g舵機: MG995
Dynamixel AX-12A舵機:(這個有點貴哦) Dynamixel AX-12A
|
|
來自: chzhmichzhmi > 《電氣》