昝鷺鷥+張晗+冀向陽(yáng)
摘要:在現(xiàn)在的時(shí)代下,機(jī)電一體化是發(fā)展的必然趨勢(shì)?,F(xiàn)在很多的項(xiàng)目已經(jīng)不再是純機(jī)械結(jié)構(gòu)了,要求要有電控。加上電控的設(shè)備可以節(jié)省人力,讓機(jī)器自己運(yùn)行起來(lái)。就連現(xiàn)在簡(jiǎn)單的加工機(jī)床都要求要有一定的自動(dòng)化。隨著這科技的發(fā)展,電控的方式越來(lái)越多。
在做機(jī)電一體化設(shè)備的時(shí)候,談起電控部分,首先進(jìn)入眼簾的就是使用單片機(jī)配上傳感器做成一個(gè)開環(huán)或是閉環(huán)控制系統(tǒng)。單片機(jī)在傳感器的感知下,驅(qū)動(dòng)著動(dòng)力源元件運(yùn)轉(zhuǎn),進(jìn)而帶動(dòng)整個(gè)機(jī)器運(yùn)動(dòng),完成預(yù)期的動(dòng)作。這里面的動(dòng)力源元件一般有步進(jìn)電機(jī),伺服電機(jī),舵機(jī),直流減速電機(jī)等,舵機(jī)是最常用的元件之一。對(duì)于一個(gè)復(fù)雜的工程項(xiàng)目,例如仿生機(jī)械臂,仿生機(jī)器人等項(xiàng)目一般需要多個(gè)舵機(jī)。那么對(duì)于主控板是51板的電控系統(tǒng),為了節(jié)省資源,常常用一片51單片機(jī)控制多個(gè)舵機(jī)運(yùn)動(dòng)。
關(guān)鍵詞:51單片機(jī);多路舵機(jī);
正文:
對(duì)于用一片51單片機(jī)來(lái)控制多路舵機(jī)運(yùn)動(dòng),往往是一個(gè)讓程序員頭疼的問(wèn)提。因?yàn)槎鏅C(jī)可以轉(zhuǎn)動(dòng)一個(gè)相對(duì)精準(zhǔn)的角度,要是想讓舵機(jī)轉(zhuǎn)動(dòng)的非常靈敏,那么就會(huì)帶來(lái)一系列的問(wèn)題、用51單片機(jī)控制舵機(jī)轉(zhuǎn)動(dòng)的原理是利用定時(shí)器中斷產(chǎn)生一個(gè)周期為20ms的PWM波。我們通過(guò)控制這個(gè)PWM波中高電平所占的時(shí)間長(zhǎng)短使舵機(jī)轉(zhuǎn)動(dòng)相應(yīng)的角度。理論上講,允許高電平時(shí)間變化的越精細(xì)就會(huì)使舵機(jī)轉(zhuǎn)動(dòng)的越精準(zhǔn)。一般想到的方法就是讓定時(shí)器產(chǎn)生中斷的時(shí)間越短,通過(guò)在定時(shí)器中斷中產(chǎn)生PWM波來(lái)驅(qū)動(dòng)舵機(jī)轉(zhuǎn)動(dòng)。這樣的想法在一些簡(jiǎn)單的工程中應(yīng)用時(shí)可以的。這里面提到的簡(jiǎn)單的工程是指舵機(jī)的數(shù)目少,一般為一路或兩路舵機(jī)。但是這樣也不能使舵機(jī)轉(zhuǎn)動(dòng)的角度非常靈敏。倘若使用這個(gè)想法使舵機(jī)轉(zhuǎn)動(dòng)的非常精準(zhǔn),就要使定時(shí)器的定時(shí)非常短,也就是說(shuō)51單片機(jī)會(huì)頻繁的響應(yīng)定時(shí)器中斷,這樣會(huì)帶來(lái)很多的問(wèn)題。問(wèn)題一就是倘若這個(gè)工程要求要有串口通訊,那么平凡的響應(yīng)定時(shí)器中斷會(huì)影響在串口通信中所設(shè)定的波特率,(這個(gè)與pwm波與波特率所用的定時(shí)器中斷的優(yōu)先級(jí)有關(guān),如果pwm波采用定時(shí)器0中斷,波特率采用定時(shí)器1中斷,因?yàn)樵?1單片機(jī)的中斷源中,定時(shí)器0中斷比定時(shí)器1中斷的優(yōu)先級(jí)高,當(dāng)51單片機(jī)頻繁響應(yīng)定時(shí)器0中斷時(shí),會(huì)影響波特率的值,這樣串口通訊就會(huì)產(chǎn)生一些錯(cuò)誤,如在串口通訊中接收到的數(shù)據(jù)和發(fā)送的數(shù)據(jù)不一致,那么就會(huì)導(dǎo)致串口通訊失去作用。反之,會(huì)使pwm波高電平時(shí)間發(fā)生變化,影響舵機(jī)旋轉(zhuǎn)的精度),對(duì)于控制多路舵機(jī)的工程這種簡(jiǎn)單的想法就會(huì)帶來(lái)更大的問(wèn)題。也就是說(shuō)如何用一片51單片機(jī)來(lái)控制多路舵機(jī)是一個(gè)關(guān)鍵的問(wèn)題。雖然現(xiàn)在出現(xiàn)了多路舵機(jī)控制板,但是它的價(jià)格隨著舵機(jī)路數(shù)的增加,價(jià)格在成倍數(shù)增長(zhǎng)。而且一般要比51單片機(jī)最小系統(tǒng)貴很多。對(duì)于用51單片機(jī)控制多路舵機(jī)的方法我門組提出了一個(gè)有效的思想,并且該思想已經(jīng)在實(shí)踐中得到了驗(yàn)證。
我們的想法是舵機(jī)的pwm波周期是20ms,對(duì)于180度舵機(jī)其轉(zhuǎn)角所對(duì)應(yīng)的高電平時(shí)間是0-2.5ms,如果系統(tǒng)中需要控制幾個(gè)舵機(jī)的準(zhǔn)確轉(zhuǎn)動(dòng),可以用單片機(jī)和計(jì)數(shù)器進(jìn)行脈沖計(jì)數(shù)產(chǎn)生P W M 信號(hào)。脈沖計(jì)數(shù)可以利用51 單片機(jī)的內(nèi)部計(jì)數(shù)器來(lái)實(shí)現(xiàn),由于時(shí)間及專業(yè)限制,我們暫時(shí)使用這種方法。當(dāng)系統(tǒng)的主要工作任務(wù)就是控制多個(gè)舵機(jī)的工作,并且使用的舵機(jī)工作周期均為20ms 時(shí)。要求硬件產(chǎn)生的多路P W M 波的周期也相同。使用51單片機(jī)的內(nèi)部定時(shí)器產(chǎn)生脈沖計(jì)數(shù)。一般工作正脈沖寬度小于周期的1/8。這樣可以在1個(gè)周期內(nèi)分時(shí)啟動(dòng)各路P W M 波的上升沿。再利用定時(shí)器中斷T0 確定各路PWM 波的輸出寬度。定時(shí)器中斷T1 控制20ms 的基準(zhǔn)時(shí)間。第1 次定時(shí)器中斷T0 按20ms 的1/8(由于數(shù)比較好算,所以用1/8) 設(shè)置初值,并設(shè)置輸出I/O 口,第1 次T0 定時(shí)中斷響應(yīng)后,將當(dāng)前輸出I/O 口對(duì)應(yīng)的引腳輸出置高電平,設(shè)置該路輸出正脈沖寬度,并啟動(dòng)第2 次定時(shí)器中斷,輸出I/O口指向下一個(gè)輸出口。第2 次定時(shí)器定時(shí)時(shí)間結(jié)束后,將當(dāng)前輸出引腳置低電平,設(shè)置此中斷周期為20ms 的1/8 減去正脈沖的時(shí)間,此路P W M 信號(hào)在該周期中輸出完畢,往復(fù)輸出。在每次循環(huán)的第16次(2 *8=16)中斷實(shí)行關(guān)定時(shí)中斷T0的操作,最后就可以實(shí)現(xiàn)8路舵機(jī)控制信號(hào)的輸出。
參考文獻(xiàn):
[1]馮曉偉, 王雷陽(yáng), 李正生. 多路舵機(jī)控制PWM發(fā)生器的設(shè)計(jì)與Proteus仿真[J]. 現(xiàn)代電子技術(shù), 2011, 34(11):167-169.
[2]汪元禮, 周潤(rùn)發(fā), 曹家軍,等. 基于51單片機(jī)的多路舵機(jī)控制的脈寬算法實(shí)現(xiàn)[J]. 科技展望, 2017, 27(14).
[3]莊嚴(yán), 宋鳴, 張劭鳳,等. 基于51單片機(jī)的六足機(jī)器人控制系統(tǒng)設(shè)計(jì)與制作[J]. 價(jià)值工程, 2013(30):51-53.
作者簡(jiǎn)介:昝鷺鷥,1995年11月18日,男,漢族,天津市人;職稱:學(xué)生;單位:鄭州大學(xué);研究方向:車輛方向
張晗,1997年6月27號(hào),女,漢族,河南省人;職稱:學(xué)生;單位:鄭州大學(xué);研究方向:車輛方向
冀向陽(yáng),1996年6月7日,男,漢族,河南省人;職稱:學(xué)生;單位:鄭州大學(xué);研究方向:車輛方向endprint