時(shí)間:2007-11-15 17:01:00來源:caojing
舵機(jī)控制器是機(jī)器人的重要部件。采用一種新穎的利用單片機(jī)產(chǎn)生多路控制舵機(jī)用PWM的方法,利用單片機(jī)內(nèi)部定時(shí)器,分時(shí)復(fù)用技術(shù),在不增加任何硬件電路的前提下,用單片機(jī)實(shí)現(xiàn)多達(dá)24路PWM輸出。該方法取代了傳統(tǒng)的使用分立元件產(chǎn)生PWM波的方法,大大減少了分立元器件數(shù)目及電路連線,改善了系統(tǒng)可靠性,提高了控制精度,并成功用在17自由度仿人機(jī)器人的控制系統(tǒng)中。
1 前言
小型仿人機(jī)器人由于控制結(jié)構(gòu)簡單,擴(kuò)展性好,在仿人機(jī)器人研究和其他領(lǐng)域正在得到廣泛的重視和應(yīng)用。舵機(jī)是小型仿人機(jī)器人常用的輸出執(zhí)行機(jī)構(gòu)。它接收一定的控制信號(hào),輸出相應(yīng)的角度。
2 舵機(jī)的構(gòu)造和控制方法
從圖1可以看出,舵機(jī)主要是由外殼、一個(gè)小型直流電機(jī)、一組減速齒輪、一個(gè)用于檢測(cè)轉(zhuǎn)角位置的檢測(cè)電位器和一塊控制電路板組成。其中,高速轉(zhuǎn)動(dòng)的直流電動(dòng)機(jī)提供了原始動(dòng)力,經(jīng)過減速齒輪組減速后,通過輸出軸對(duì)外提供轉(zhuǎn)距,齒輪組的減速比越大,舵機(jī)的輸出力矩也越大。 標(biāo)準(zhǔn)的舵機(jī)有3條導(dǎo)線,分別是:電源線、地線、控制線,如圖2所示。電源線和地線用于提供舵機(jī)內(nèi)部的直流電機(jī)和控制線路所需的能源,電壓通常介于4~7.2 V,控制線的輸入是一個(gè)寬度可調(diào)的周期性方波脈沖信號(hào)。當(dāng)方波的脈沖寬度改變時(shí),舵機(jī)的角度發(fā)生改變,角度變化與脈沖寬度的變化成正比。機(jī)器人用的舵機(jī)型號(hào)是GM995,其輸出軸轉(zhuǎn)角與輸入信號(hào)的脈沖寬度之間的關(guān)系可用圖3來表示。
舵機(jī)標(biāo)稱方波脈沖信號(hào)的周期為20ms,事實(shí)上舵機(jī)角度控制對(duì)信號(hào)的周期要求很寬松18~20ms均可,實(shí)驗(yàn)中發(fā)現(xiàn),在周期為40ms時(shí)舵機(jī)仍然能夠穩(wěn)定工作。
3 舵機(jī)控制器的設(shè)計(jì)
舵機(jī)的控制信號(hào)實(shí)質(zhì)是一個(gè)脈沖寬度調(diào)制信號(hào)(PWM)??捎蒄PGA、模擬電路或單片機(jī)來產(chǎn)生。采用FPGA或CPLD產(chǎn)生PWM波已經(jīng)在很多重要的場(chǎng)合得到應(yīng)用,依靠FPGA或CPLD特有的并行處理能力和大量的I/O接口,可以同時(shí)控制幾十甚至上百個(gè)舵機(jī)同時(shí)工作,這種方法可靠、控制精度高,但是FPGA/CPLD用于產(chǎn)生PWM波時(shí),并不具備事務(wù)處理能力,實(shí)際中還需要MCU協(xié)同工作,所以成本較高,適合于重要場(chǎng)合。用模擬電路實(shí)現(xiàn)較復(fù)雜,不適合多路輸出,同時(shí)產(chǎn)生的脈沖頻率和寬度往往不是很準(zhǔn)確,很難做到對(duì)舵機(jī)的精確控制。由于單片機(jī)具有性能穩(wěn)定、編程靈活、精度較高、價(jià)格低廉等特點(diǎn),一般采用單片機(jī)作為舵機(jī)控制器。
最直接的方法就是用單片機(jī)本身所帶的PWM口產(chǎn)生波形,但該方法受到MCU內(nèi)部資源的限制,僅能實(shí)現(xiàn)2~6路PWM的輸出,不適合需要空控制多路舵機(jī)的場(chǎng)合。文獻(xiàn)《機(jī)器人的創(chuàng)意設(shè)計(jì)與實(shí)踐》給出一種利用555振蕩器產(chǎn)生的脈沖信號(hào)進(jìn)行計(jì)數(shù)來產(chǎn)生PWM信號(hào)的方法。文獻(xiàn)《基于AT89C2051的多路舵機(jī)控制器設(shè)計(jì)》給出一種利用定時(shí)器中斷來產(chǎn)生PWM波信號(hào)的方法。文獻(xiàn)《用單片機(jī)產(chǎn)程7路舵機(jī)控制PWM波的方法》分時(shí)復(fù)用的思想,用單片機(jī)產(chǎn)生了7路舵機(jī)控制PWM信號(hào),其控制脈沖的周期為14590,控制脈寬為1200~1800,將一個(gè)周期均勻劃分為7份,在每一個(gè)時(shí)段控制其中一路輸出。缺點(diǎn)占用MCU的許多計(jì)算時(shí)間,優(yōu)點(diǎn)是換了控制的高精度。
3.1 舵機(jī)控制器硬件電路設(shè)計(jì)
本文綜合以上方案,采用分時(shí)復(fù)用技術(shù),將一個(gè)PWM信號(hào)周期(20ms)分成8個(gè)時(shí)段,每一個(gè)時(shí)段并行產(chǎn)生3路PWM信號(hào),則一共可以產(chǎn)生24路PWM信號(hào),并且在以PIC16F877A單片機(jī)為核心控制器,晶振頻率為20M的條件下,所產(chǎn)生的PWM信號(hào)控制舵機(jī)的最大誤差<1°。
圖4為舵機(jī)控制器的原理圖。該系統(tǒng)是一個(gè)典型的集中式控制方式,單片機(jī)作為控制的核心部分,完成與上位機(jī)通訊,實(shí)現(xiàn)對(duì)機(jī)器人的智能控制;通過IIC總線與EEPROM(24C512)進(jìn)行數(shù)據(jù)存取操作實(shí)現(xiàn)讀寫仿人機(jī)器人的行為數(shù)據(jù);產(chǎn)生24路PWM信號(hào)控制舵機(jī);檢測(cè)機(jī)器人的電池電壓以及通過LED顯示機(jī)器人的工作狀態(tài)。
需要注意的是,舵機(jī)在工作的時(shí)候會(huì)吸入較大電流,多路舵機(jī)同時(shí)工作時(shí)對(duì)電源電壓造成的波動(dòng)很大,而舵機(jī)的信號(hào)電平最好是不要抖動(dòng)的,因此圖4中采用穩(wěn)壓電路對(duì)電源Vs進(jìn)行穩(wěn)壓,否則,實(shí)驗(yàn)中發(fā)現(xiàn)個(gè)別舵機(jī)偶爾會(huì)產(chǎn)生振蕩。
3.2 實(shí)現(xiàn)多路PWM信號(hào)及舵機(jī)調(diào)速原理
本文以MICROCHIP公司生產(chǎn)的增強(qiáng)型RISC內(nèi)載Flash的高性能8位單片機(jī)PIC16F877A為主控芯片,晶振頻率取值20MHz,則單片機(jī)每條指令執(zhí)行時(shí)間為200ns。從圖3可以看出,舵機(jī)角度變化一度時(shí),脈寬改變?yōu)?000/180°=11.1/°,單片機(jī)能執(zhí)行11.1/0.2/條≈55條指令,但是用C語言很難實(shí)現(xiàn)在55條指令內(nèi)一次比較判斷完24路舵機(jī)的PWM信號(hào)。
多路PWM信號(hào)產(chǎn)生的機(jī)理如圖5所示。為了產(chǎn)生精確的時(shí)間信號(hào),占用了一個(gè)16位硬件計(jì)數(shù)器,計(jì)數(shù)基準(zhǔn)設(shè)為200ns,同時(shí)用24個(gè)16位匹配寄存器保存每一路PWM信號(hào)的計(jì)數(shù)匹配值,該匹配值正比于舵機(jī)的期望角度。24路PWM信號(hào)分為8組,每組3路進(jìn)行分時(shí)控制。程序開始時(shí),將第一組PWM信號(hào)相應(yīng)的引腳全置高電平,并且將計(jì)數(shù)器清零。然后不斷查詢計(jì)數(shù)器的值是否與大于或等于匹配寄存器的值,若是的話,將該路PWM信號(hào)的引腳置為低電平。每一組PWM信號(hào)占用的時(shí)隙均為2.5ms(不足2.5ms的延時(shí)到2.5ms),這樣保證每一路PWM信號(hào)的周期。
這種分時(shí)控制的方法的最大有點(diǎn)是保證每一路PWM信號(hào)的時(shí)間誤差最小,且不會(huì)產(chǎn)生波形的抖動(dòng),對(duì)于處理速度不是很快的單片機(jī),如MSC-51系列和PIC的中檔系列單片機(jī)也能產(chǎn)生精確的多路PWM波形;缺點(diǎn)是占用CPU的資源較多,需要一定編程技巧對(duì)系統(tǒng)的其他任務(wù)進(jìn)行處理,使得能夠在0.5ms~1ms內(nèi)完成。而事實(shí)上,對(duì)于PIC16F877A單片機(jī)在20M的系統(tǒng)時(shí)鐘下,1ms內(nèi)能執(zhí)行5000條單周期指令,足以處理很多系統(tǒng)的事務(wù),而且上文已經(jīng)證實(shí)PWM的周期可以大于20ms。
4 軟件設(shè)計(jì)
圖6給出了多路PWM信號(hào)的發(fā)生流程圖。PA、PB、PC、PD、PE的24個(gè)端口均為PWM輸出端口,16位定時(shí)器1用來和每組的3路PWM信號(hào)匹配寄存器進(jìn)行比較,基準(zhǔn)為200nS。
設(shè)PIC16F877A的系統(tǒng)時(shí)鐘頻率為f,計(jì)數(shù)器對(duì)系統(tǒng)時(shí)鐘的分頻比為PS,PWM信號(hào)的高電平最長時(shí)間為Th,對(duì)應(yīng)的最大角度為Amax,則可以的出比例系數(shù):
則對(duì)于角度Ad,對(duì)應(yīng)的比較寄存器的數(shù)值為:
舵機(jī)是一個(gè)位置伺服系統(tǒng),可以對(duì)轉(zhuǎn)角進(jìn)行精確控制,事實(shí)上還可以用通過軟件生成速度的梯形圖,對(duì)舵機(jī)轉(zhuǎn)動(dòng)的角速度進(jìn)行控制。該仿人機(jī)器人的行為數(shù)據(jù)由一組組的“關(guān)鍵幀”數(shù)據(jù)組成,要求控制各個(gè)關(guān)節(jié)的舵機(jī)必須在同一時(shí)刻到達(dá)行為數(shù)據(jù)設(shè)定的角度,所以對(duì)舵機(jī)的速度控制提出了比較高的要求。
由于比較寄存器的數(shù)值T正比于PWM波的高電平時(shí)間,即脈寬。舵機(jī)的角度從0度變化到180度,則T的值也應(yīng)由小變大,因此改變T變化的步進(jìn)量,則可以改變舵機(jī)轉(zhuǎn)動(dòng)的速度。
假設(shè)舵機(jī)的目標(biāo)角度從Ad變化到Ad’,則對(duì)應(yīng)的比較寄存器的數(shù)值也從T變化到T’, 程序以PWM的周期,即20ms為一個(gè)控制周期,并且以步進(jìn)量Inc遞增或遞減比較寄存器的數(shù)值,從而控制PWM波的脈寬,因此改變步進(jìn)量Inc的大小,就改變了舵機(jī)轉(zhuǎn)動(dòng)速度的快慢。即
(3)式中,Inc為步進(jìn)量,取值從1到255,即舵機(jī)的速度有1到255個(gè)等級(jí)。步進(jìn)量越大, 需要的控制周期N越小,則在更少的時(shí)間內(nèi)舵機(jī)轉(zhuǎn)到期望的角度。
5 結(jié)束語
本文成功實(shí)現(xiàn)了24路舵機(jī)用PWM波的產(chǎn)生,不僅控制精度高,而且實(shí)現(xiàn)了對(duì)舵機(jī)速度的控制。該控制器應(yīng)用在17自由度小型人形機(jī)器人上,達(dá)到較好的控制效果,并且具有很好的通用性。
標(biāo)簽:
中國傳動(dòng)網(wǎng)版權(quán)與免責(zé)聲明:凡本網(wǎng)注明[來源:中國傳動(dòng)網(wǎng)]的所有文字、圖片、音視和視頻文件,版權(quán)均為中國傳動(dòng)網(wǎng)(m.u63ivq3.com)獨(dú)家所有。如需轉(zhuǎn)載請(qǐng)與0755-82949061聯(lián)系。任何媒體、網(wǎng)站或個(gè)人轉(zhuǎn)載使用時(shí)須注明來源“中國傳動(dòng)網(wǎng)”,違反者本網(wǎng)將追究其法律責(zé)任。
本網(wǎng)轉(zhuǎn)載并注明其他來源的稿件,均來自互聯(lián)網(wǎng)或業(yè)內(nèi)投稿人士,版權(quán)屬于原版權(quán)人。轉(zhuǎn)載請(qǐng)保留稿件來源及作者,禁止擅自篡改,違者自負(fù)版權(quán)法律責(zé)任。
產(chǎn)品新聞
更多>以簡驅(qū)繁,精準(zhǔn)智控 | 維智S1系列新一代...
2024-11-01
新品發(fā)布:CD300系列總線型伺服驅(qū)動(dòng)器
2024-10-31
2024-10-31
2024-10-31
新勢(shì)能 新期待|維智B1L直線伺服驅(qū)動(dòng)器
2024-10-31
2024-10-29
推薦專題
更多>