舵機(jī)(英文Servo)最早出現(xiàn)于航模運(yùn)動(dòng),它是遙控模型用于控制動(dòng)作的動(dòng)力源,玩過(guò)遙控模型的朋友都知道舵機(jī)長(zhǎng)什么模樣,為了適用于各種模型的需求,舵機(jī)發(fā)展出各種類(lèi)型和大小的型號(hào)。舵機(jī)可以看成是一個(gè)封裝了電機(jī)、控制及反饋系統(tǒng)的動(dòng)力總成,它使用簡(jiǎn)單、動(dòng)力強(qiáng)勁,能按照信號(hào)的要求精確的控制電機(jī)軸的位移角度,也算是伺服電機(jī)的一種,通常也被人們用于制作小型機(jī)器人、玩具及用于設(shè)備動(dòng)作的動(dòng)力源等用途。圖2就是一款風(fēng)靡世界的小型遙控機(jī)器人玩具I-SOBOT,它使用了多達(dá)十幾個(gè)的微型舵機(jī)用于各關(guān)節(jié)的動(dòng)作和動(dòng)力,使其能模仿人類(lèi)的各種基本動(dòng)作。
舵機(jī)的分類(lèi)很多,按模型類(lèi)型分可以分航模、車(chē)模以及船模用的,航模用舵機(jī)就要求速度快精度高,而車(chē)、船模用的一般要求有扭力大和具有防水性。按減速齒輪分可以分金屬齒和塑料齒,使用金屬齒扭力大、壽命長(zhǎng)、價(jià)格高。按控制電路分模擬舵機(jī)(標(biāo)準(zhǔn)舵機(jī))Standard Servo 和數(shù)字舵機(jī)Digital Servo,數(shù)字舵機(jī)有反應(yīng)速度更快,無(wú)反應(yīng)區(qū)范圍小,精度更高等新特性。舵機(jī)的規(guī)格型號(hào)則主要是以轉(zhuǎn)矩和速度來(lái)分類(lèi),一個(gè)標(biāo)稱(chēng)值為0.0004N·M/0.21的舵機(jī),就是指舵機(jī)輸出軸帶動(dòng)一米長(zhǎng)的搖臂時(shí)在最末端能發(fā)出0.0004N的力,并且能在0.21秒內(nèi)完成60°的角位移。
舵機(jī)是由外殼、電機(jī)、減速齒輪組、傳感器、控制電路和接口線纜組成的伺服系統(tǒng)。其結(jié)構(gòu)如圖3。舵機(jī)的電機(jī)有用普通小型直流電機(jī)的,也有用無(wú)刷電機(jī)的,使用無(wú)刷電機(jī)的舵機(jī)有穩(wěn)定性高、壽命更長(zhǎng)、精度更高、扭力更大等特點(diǎn)。圖4就是一款使用無(wú)刷電機(jī)的舵機(jī)。圖3是舵機(jī)齒輪組是塑料的,而圖4的型號(hào)則是金屬齒輪組。舵機(jī)的位移傳感器是一個(gè)電位器,無(wú)論模擬舵機(jī)還是數(shù)字舵機(jī)都會(huì)用到,其阻值一般為5K。控制電路板主要是由電機(jī)驅(qū)動(dòng)電路和信號(hào)電路,驅(qū)動(dòng)電路由晶體管或FET場(chǎng)效應(yīng)管組成的放大電路構(gòu)成,采用場(chǎng)效應(yīng)管驅(qū)動(dòng)可以獲得更大的驅(qū)動(dòng)能力。模擬舵機(jī)的信號(hào)處理電路由專(zhuān)用的直流伺服電機(jī)控制芯片構(gòu)成,一般只能接收頻率為50HzPWM信號(hào)輸入,而數(shù)字舵機(jī)的信號(hào)處理電路由微處理器構(gòu)成,可以接收頻率為300HzPWM信號(hào)輸入,也就是模擬舵機(jī)受到輸入頻率限制要20ms才可以反應(yīng)一個(gè)動(dòng)作,而數(shù)字舵機(jī)則能在短幾倍的時(shí)間內(nèi)執(zhí)行動(dòng)作。圖5是模擬舵機(jī)和數(shù)字舵機(jī)PCB,左邊的是模擬舵機(jī)采用了晶體三極管加直流伺服電機(jī)控制芯片構(gòu)成,右邊的是數(shù)字舵機(jī)采用了場(chǎng)效應(yīng)管加微處理器構(gòu)成。
當(dāng)信號(hào)接口收到信號(hào)后,控制電路對(duì)信號(hào)做出計(jì)算和反應(yīng),驅(qū)動(dòng)電機(jī)運(yùn)轉(zhuǎn),電機(jī)帶動(dòng)舵機(jī)輸出軸輸出力矩,同時(shí)也會(huì)帶動(dòng)電位器。對(duì)于舵機(jī)來(lái)說(shuō)這個(gè)電位器就是位置傳感器,它的當(dāng)前阻值代表著電機(jī)軸所處的位置,電機(jī)轉(zhuǎn)動(dòng)時(shí)電位器的阻值也發(fā)生了變化,控制電路讀取電位器的阻值并與由信號(hào)計(jì)算出來(lái)的值做對(duì)比,其阻值不是計(jì)算值時(shí)電機(jī)繼續(xù)轉(zhuǎn)動(dòng),當(dāng)轉(zhuǎn)到信號(hào)要求位置時(shí),控制電路控制電機(jī)停止運(yùn)轉(zhuǎn),完成一個(gè)信號(hào)所要求的動(dòng)作,當(dāng)電機(jī)軸受到外力而偏轉(zhuǎn)里,舵機(jī)會(huì)通過(guò)電位器感知到位置偏移,啟動(dòng)電機(jī)進(jìn)行校正。舵機(jī)原理的基本流程圖,可以看出它是一種閉環(huán)的控制系統(tǒng)。閉環(huán)控制是根據(jù)控制對(duì)象輸出反饋來(lái)進(jìn)行校正的控制方式,它是在測(cè)量出實(shí)際與計(jì)劃發(fā)生偏差時(shí),按定額或標(biāo)準(zhǔn)來(lái)進(jìn)行糾正的。閉環(huán)控制,從輸出量變化取出控制信號(hào)作為比較量反饋給輸入端控制輸入量。舵機(jī)正是利用這個(gè)原理,用電機(jī)及齒輪組輸出,并利用隨之產(chǎn)生的電位器阻值變化量作為反饋量,控制電機(jī)是繼續(xù)轉(zhuǎn)動(dòng)還是停止。
圖6 舵機(jī)的閉環(huán)控制
知道舵機(jī)的工作原理,我們還不能控制舵機(jī),那么我們來(lái)看看怎么去實(shí)現(xiàn)對(duì)舵機(jī)的控制。數(shù)字舵機(jī)為了能用在舊的模型和舵機(jī)控制器,一般都會(huì)兼容模擬舵機(jī)的接口和控制方式,所以這里我們只討論傳統(tǒng)的模擬舵機(jī)控制方法。在各種模型中使用舵機(jī)時(shí),一般都是直接使用多通道接收機(jī),舵機(jī)連到接收機(jī)上就可以了,通過(guò)遙控器就可以對(duì)舵機(jī)進(jìn)行控制了。圖7就是一款多通道的車(chē)模用的遙控器和接收機(jī),現(xiàn)在也有許多可以多路的舵機(jī)程序控制器,一般用于機(jī)器人等的制作中,可以通過(guò)電腦、手機(jī)或其它界面進(jìn)行控制,也可以把舵機(jī)的動(dòng)作編程重放,有的甚至可以控制多達(dá)32路以上的舵機(jī)。舵機(jī)的接口引腳定義如圖8,黑色線為地線,紅色線為電源線,電源的標(biāo)稱(chēng)范圍為4.8V到6V,也就是4節(jié)1.2V或4節(jié)1.5V的電池都能適用,而用于非模型用途時(shí)一般是使用5V電壓對(duì)其供電,黃色線則是控制信號(hào)線(也可能是白色),信號(hào)格式為PWM。
圖8 舵機(jī)接口定義
圖9就是標(biāo)準(zhǔn)舵機(jī)所要求的PWM信號(hào)波形,是一個(gè)周期為20ms,高電平脈寬最小1ms,最大2ms,一些特殊的舵機(jī)可能有點(diǎn)不一樣如parallax公司賣(mài)的一款機(jī)器人用舵機(jī)是0.75ms到2.25ms。因?yàn)槎鏅C(jī)的設(shè)計(jì)用途決定它的輸出軸是不能連續(xù)轉(zhuǎn)動(dòng),輸出軸所能轉(zhuǎn)動(dòng)的范圍是舵機(jī)設(shè)計(jì)時(shí)其結(jié)構(gòu)所限定的,一般最大是180°,一般模型用的最大在120°之內(nèi),也有一些專(zhuān)用于機(jī)器人的舵機(jī)可以到200°或是連續(xù)360°轉(zhuǎn)動(dòng),下面我們以轉(zhuǎn)動(dòng)范圍180°的舵機(jī)為列來(lái)說(shuō)明。把1到2ms的脈寬劃分到這180°角度,那么1.5ms脈寬時(shí)正好是中點(diǎn),1ms脈寬時(shí)左轉(zhuǎn)到極限位置,2ms脈寬時(shí)右轉(zhuǎn)到極限位置°,在這個(gè)范圍內(nèi)脈寬的時(shí)長(zhǎng)對(duì)應(yīng)特定的角度。圖10是脈寬和位置的對(duì)應(yīng)示意圖??刂菩盘?hào)進(jìn)入模擬舵機(jī)的控制電路,獲得直流偏置電壓,控制電路內(nèi)部有一個(gè)基準(zhǔn)電路,產(chǎn)生周期為20ms,寬度為1.5ms的基準(zhǔn)信號(hào),將獲得的直流偏置電壓與電位器產(chǎn)生電壓比較,獲得電壓差輸出,電壓差的正負(fù)輸出到電機(jī)驅(qū)動(dòng)決定電機(jī)的正反轉(zhuǎn),通過(guò)級(jí)聯(lián)減速齒輪帶動(dòng)電位器旋轉(zhuǎn),使得電壓差為0,電機(jī)停止轉(zhuǎn)動(dòng)。
圖9 舵機(jī)PWM信號(hào)要求
圖10 脈寬和位移示意圖
看完上面的介紹,如果讀者朋友是熟悉單片機(jī)編程的,是可以很快的編寫(xiě)出舵機(jī)的控制程序的。以轉(zhuǎn)動(dòng)范圍為0-180°舵機(jī)為例,而信號(hào)脈寬是1ms-2ms,計(jì)算得知每角度的脈寬約為0.00556ms,只要把1ms加上角度值乘于0.00556ms,就可以得到角度值所需要的脈寬值。下面我們以STC89C51(也可以使用別的型號(hào)的51芯片)制作一個(gè)簡(jiǎn)單的控制舵機(jī)的小實(shí)驗(yàn),使用12M晶振,使用12T的模式,每時(shí)鐘周期為12個(gè)晶振周期,也就是說(shuō)每個(gè)時(shí)鐘周期為0.001ms。使用芯片內(nèi)的定時(shí)器最小可以生成0.001ms脈寬,對(duì)比上面的數(shù)據(jù),我們可以得知這個(gè)數(shù)值不足以精確輸出每角度的脈寬值,我們主要是實(shí)驗(yàn)舵機(jī)控制方法,需要更高精度的話則需要更高頻率的芯片或用STC89C51的6T模式去實(shí)現(xiàn)。程序中定時(shí)器0先計(jì)時(shí)高電平,到達(dá)后再計(jì)時(shí)生成20ms減去高電平時(shí)間的低電平脈寬,程序主程序不斷的使舵機(jī)變換5個(gè)角度。電路只使用最小系統(tǒng),電路圖看圖11,C4是電解電容容量在470uF或以上,因?yàn)槟承┒鏅C(jī)工作時(shí)電流會(huì)比較大,這個(gè)電容可以使電源電壓不會(huì)在舵機(jī)工作時(shí)被拉低。筆者用這個(gè)程序驅(qū)動(dòng)TowerPro MG995舵機(jī),用標(biāo)準(zhǔn)1-2ms信號(hào)可以讓其正常工作,但這個(gè)舵機(jī)動(dòng)作轉(zhuǎn)角范圍只有90°,要想它工作中0-180°度,脈寬要在0.5-2.5ms,因此筆者在壓縮包里提供了2份代碼,供大家參考。圖12是實(shí)驗(yàn)的實(shí)物。
圖11 實(shí)驗(yàn)電路圖
看完上面的介紹,你是不是會(huì)說(shuō)舵機(jī)既然有強(qiáng)勁有力的減速裝置,又可以精確控制,那如果能360°旋轉(zhuǎn)的話,用于機(jī)器小車(chē)的制作不是很方便嗎?確實(shí)是可以這樣的,只是市場(chǎng)上售賣(mài)的舵機(jī)一般不能連續(xù)旋轉(zhuǎn),不過(guò)我們只要對(duì)它進(jìn)行小小的改動(dòng)就可以實(shí)現(xiàn),但不是所有型號(hào)的舵機(jī)都適于改動(dòng)。修改后的舵機(jī)同樣是使用原有的驅(qū)動(dòng)方式,只是改變信號(hào)脈寬時(shí)不是改變角度,而是改變其轉(zhuǎn)向,輸入中點(diǎn)1.5ms信號(hào)時(shí)舵機(jī)停轉(zhuǎn),使用信號(hào)周期和脈寬可以實(shí)現(xiàn)轉(zhuǎn)向、停止以及調(diào)速。改動(dòng)使用的原理其實(shí)就是把位置傳感反饋信號(hào)從閉環(huán)系統(tǒng)中斷開(kāi),形成開(kāi)環(huán)系統(tǒng)。通常改造需要改造舵機(jī)內(nèi)部的結(jié)構(gòu),如果不是必要的,最好不要進(jìn)行,以免造成浪費(fèi)。MG995是一款小型大扭力的金屬齒的模擬舵機(jī),它的結(jié)構(gòu)可以很簡(jiǎn)單的改裝成可連續(xù)轉(zhuǎn)動(dòng)的舵機(jī)。只需要以下幾個(gè)步驟:
1.打開(kāi)外殼找到齒輪組上的限位銷(xiāo)
2.用鉗子拔去限位銷(xiāo)
3.拆除電位器,用小型精密可調(diào)的5K電位器取代原電位器,先把換上的電位器調(diào)到中點(diǎn),也就是2邊阻值為2.5K,再往舵機(jī)輸入1.5ms的信號(hào),讓舵機(jī)旋轉(zhuǎn),再細(xì)調(diào)電位器直到舵機(jī)停轉(zhuǎn)。裝好外殼,完成改裝。
評(píng)論