AT89C2051多路舵機(jī)控制電路
舵機(jī)的工作原理是:PWM信號由接收通道進(jìn)入信號解調(diào)電路BA66881。的12腳進(jìn)行解調(diào),獲得一個直流偏置電壓。該直流偏置電壓與電位器的電壓比較,獲得電壓差由BA6688的3腳輸出。該輸出送人電機(jī)驅(qū)動集成電路BA6686,以驅(qū)動電機(jī)正反轉(zhuǎn)。當(dāng)電機(jī)轉(zhuǎn)速一定時,通過級聯(lián)減速齒輪帶動電位器R。,旋轉(zhuǎn),直到電壓差為O,電機(jī)停止轉(zhuǎn)動。舵機(jī)的控制信號是PWM信號,利用占空比的變化改變舵機(jī)的位置。
本文引用地址:http://cafeforensic.com/article/201611/319862.htm舵機(jī)的控制方法
電源線和地線用于提供舵機(jī)內(nèi)部的直流電機(jī)和控制線路所需的能源.電壓通常介于4~6V,一般取5V。注意,給舵機(jī)供電電源應(yīng)能提供足夠的功率。控制線的輸入是一個寬度可調(diào)的周期性方波脈沖信號,方波脈沖信號的周期為20 ms(即頻率為50 Hz)。當(dāng)方波的脈沖寬度改變時,舵機(jī)轉(zhuǎn)軸的角度發(fā)生改變,角度變化與脈沖寬度的變化成正比。某型舵機(jī)的輸出軸轉(zhuǎn)角與輸入信號的脈沖寬度之間的關(guān)系可用圍 3來表示。
舵機(jī)控制器硬件電路設(shè)計
從上述舵機(jī)轉(zhuǎn)角的控制方法可看出,舵機(jī)的控制信號實質(zhì)是一個可嗣寬度的方波信號(PWM)。該方波信號可由FPGA、模擬電路或單片機(jī)來產(chǎn)生。采用FPGA成本較高,用模擬電路來實現(xiàn)則電路較復(fù)雜,不適合作多路輸出。一般采用單片機(jī)作舵機(jī)的控制器。目前采用單片機(jī)做舵機(jī)控制器的方案比較多,可以利用單片機(jī)的定時器中斷實現(xiàn)PWM。該方案將20ms的周期信號分為兩次定時中斷來完成:一次定時實現(xiàn)高電平定時Th;一次定時實現(xiàn)低電平定時T1。Th、T1的時間值隨脈沖寬度的變換而變化,但,Th+T1=20ms。該方法的優(yōu)點是,PWM信號完全由單片機(jī)內(nèi)部定時器的中斷來實現(xiàn),不需要添加外圍硬件。缺點是一個周期中的PWM信號要分兩次中斷來完成,兩次中斷的定時值計算較麻煩;為了滿足20ms的周期,單片機(jī)晶振的頻率要降低;不能實現(xiàn)多路輸出。也可以采用單片機(jī)+8253計數(shù)器的實現(xiàn)方案。該方案由單片機(jī)產(chǎn)生計數(shù)脈沖(或外部電路產(chǎn)生計數(shù)脈沖)提供給8253進(jìn)行計數(shù),由單片機(jī)給出8253的計數(shù)比較值來改變輸出脈寬。該方案的優(yōu)點是可以實現(xiàn)多路輸出,軟件設(shè)計較簡單;缺點是要添加l片8253計數(shù)器,增加了硬件成本。本文在綜合上述兩個單片機(jī)舵機(jī)控制方案基礎(chǔ)上,提出了一個新的設(shè)計方案,如圖4所示。
該方案的舵機(jī)控制器以AT89C2051($0.5940)單片機(jī)為核心,555構(gòu)成的振蕩器作為定時基準(zhǔn),單片機(jī)通過對555振蕩器產(chǎn)生的脈沖信號進(jìn)行計數(shù)來產(chǎn)生PWM信號。該控制器中單片機(jī)可以產(chǎn)生8個通道的PWM信號,分別由AT89C2051的P1.0~Pl.7(12~19引腳)端口輸出。輸出的8 路PWM信號通過光耦隔離傳送到下一級電路中。因為信號通過光耦傳送過程中進(jìn)行了反相,因此從光耦出來的信號必須再經(jīng)過反相器進(jìn)行反相。方波信號經(jīng)過光耦傳輸后,前沿和后沿會發(fā)生畸變,因此反相器采用CD40106($0.1125)施密特反相器對光耦傳輸過來的信號進(jìn)行整形,產(chǎn)生標(biāo)準(zhǔn)的PWM方波信號。筆者在實驗過程中發(fā)現(xiàn),舵機(jī)在運(yùn)行過程中要從電源吸納較大的電流,若舵機(jī)與單片機(jī)控制器共用一個電源,則舵機(jī)會對單片機(jī)產(chǎn)生較大的干擾。因此,舵機(jī)與單片機(jī)控制器采用兩個電源供電,兩者不共地,通過光耦來隔離,并且給舵機(jī)供電的電源最好采用輸出功率較大的開關(guān)電源。該舵機(jī)控制器占用單片機(jī)的個SCI串口。串口用于接收上位機(jī)傳送過來的控制命令,以調(diào)節(jié)每一個通道輸出信號的脈沖寬度。MAX232($2.0686)為電平轉(zhuǎn)換器,將上位機(jī)的RS232($780.5000)電平轉(zhuǎn)換成TTL電平。
實現(xiàn)多路PWM信號的原理
在模擬電路中,PWM脈沖信號可以通過直流電平與鋸齒波信號比較來得到。在單片機(jī)中,鋸齒波可以通過對整型變量加1操作來實現(xiàn),如圖5所示。假定單片機(jī)程序中設(shè)置一整型變量SawVal,其值變化范圍為O~N。555振蕩電路產(chǎn)生的外部計數(shù)時鐘信號輸入到AT89C2051的INTO腳。每當(dāng)在外部計數(shù)時鐘脈沖的下降沿,單片機(jī)產(chǎn)生外部中斷,執(zhí)行外部中斷INT0的中斷服務(wù)程序。每產(chǎn)生一次外部中斷,對SawVal執(zhí)行一次加1操作,若SawVal已達(dá)到最大值N,則對SawVal清O。SawVal值的變化規(guī)律相當(dāng)于鋸齒波,如圖5所示。若在單片機(jī)程序中設(shè)置另一整型變量DutyVal,其值的變化范圍為 O~N。每當(dāng)在SawVal清0時,DulyVal從上位機(jī)發(fā)送的控制命令中讀入脈沖寬度系數(shù)值,例如為H(0≤H≤N)。若 DutyVal≥SawVal,則對應(yīng)端口輸出高電平;若DutyVal《Sawval,則對應(yīng)端口輸出低電平。從圖5中可看出,若改變 DutyVal的值,則對應(yīng)端口輸出脈沖的寬度發(fā)生變化,但輸出脈沖的頻率不變,此即為PWM波形。
評論