西北民族大學(xué)電氣工程學(xué)院 鄧二偉
?
基于單片機(jī)的機(jī)械臂的研究
西北民族大學(xué)電氣工程學(xué)院 鄧二偉
隨著現(xiàn)代工業(yè)、醫(yī)藥等領(lǐng)域的不斷發(fā)展,某些設(shè)備或者醫(yī)藥研究用品所處的環(huán)境對研究工作人員的身體有很大的傷害,他們有時(shí)不得已用手臂來操作某些東西。因此為了減少人員的身心傷害,本文設(shè)計(jì)了一種能夠代替人工的機(jī)械手臂。
單片機(jī);機(jī)械臂;研究
本次設(shè)計(jì)采用51單片機(jī)做主控,外圍設(shè)備有舵機(jī)、無線收發(fā)器以及搖桿遙控等設(shè)備。通過搖桿可以控制機(jī)械臂各個(gè)旋轉(zhuǎn)部位的角度,將采集到的搖桿數(shù)據(jù)通過無線發(fā)送設(shè)備發(fā)送給機(jī)械臂接收端,通過對數(shù)據(jù)的解析,再對舵機(jī)進(jìn)行控制。
2.1搖桿位置的獲取
本次設(shè)計(jì)的遙控端采用搖桿設(shè)計(jì),通過對搖桿的操作控制手臂。本次設(shè)計(jì)中,搖桿內(nèi)部實(shí)質(zhì)上是一個(gè)電位器,電位器兩端分別接正負(fù)極,抽頭接在A/D轉(zhuǎn)換通道上。由于51單片機(jī)沒有模/數(shù)轉(zhuǎn)換功能,因此本設(shè)計(jì)采用PCF8591芯片來進(jìn)行模/數(shù)轉(zhuǎn)換。改變搖桿位置,那么抽頭的電壓也會隨之改變,這樣通過對電壓值的讀取可以獲取當(dāng)前搖桿轉(zhuǎn)動位置。
2.2數(shù)據(jù)的整合
本次設(shè)計(jì)采用五個(gè)舵機(jī)控制手臂,故而需要五個(gè)數(shù)據(jù)操作機(jī)械臂,包括四個(gè)位置數(shù)據(jù),和一個(gè)指令數(shù)據(jù)。位置數(shù)據(jù)包括四個(gè)舵機(jī)的旋轉(zhuǎn)位置數(shù)據(jù),另一個(gè)是控制夾緊與松開的控制數(shù)據(jù)。該A/D轉(zhuǎn)換芯片是8位的,數(shù)據(jù)大小剛好是一個(gè)字符的大小。因此這里設(shè)置一個(gè)長度為6的字符數(shù)組,盡可能的將數(shù)據(jù)減小到最小,避免發(fā)送設(shè)備發(fā)送數(shù)據(jù)因數(shù)據(jù)位長而增加延時(shí)。
2.3舵機(jī)控制
接收端接收到發(fā)送端發(fā)送的數(shù)據(jù)后,將數(shù)據(jù)分別對應(yīng)到每個(gè)舵機(jī)的數(shù)據(jù)控制線上。舵機(jī)是通過占空比來控制旋轉(zhuǎn)角度的,在20毫秒的周期下,高電平時(shí)間為0.5毫秒到2.5毫秒間,舵機(jī)大約可以從零度轉(zhuǎn)到180度。因此可以利用定時(shí)器中斷模擬占空比輸出控制舵機(jī)角度。
本次設(shè)計(jì)舵機(jī)采用6V供電,查閱資料可知在該電壓下舵機(jī)的靈敏度較高,而且扭矩較大。用單片機(jī)對其進(jìn)行I/O口模擬PWM輸出時(shí),一定要在該引腳接上拉電阻。用示波器觀測其波形時(shí),如果沒有上拉電阻,單單引腳輸出時(shí)可以出現(xiàn)波形,但是將該口與舵機(jī)數(shù)據(jù)線連接時(shí),波形均是低電平,證明單片機(jī)引腳沒有驅(qū)動舵機(jī)的能力,因此需要上拉電阻,再次用示波器觀察時(shí)恢復(fù)波形。另外,電路整體需要共地,否則舵機(jī)無法識別該引腳是高還是低,因此會出現(xiàn)波形混亂的現(xiàn)象。
在本設(shè)計(jì)中,因?yàn)槎鏅C(jī)數(shù)量較多,故而需要多個(gè)引腳驅(qū)動。為了防止舵機(jī)較多而出現(xiàn)的電流過大燒毀穩(wěn)壓,因此需要每個(gè)舵機(jī)單獨(dú)供電,以保證舵機(jī)擺角的準(zhǔn)確性。舵機(jī)屬于位置式的,當(dāng)轉(zhuǎn)過的角度越大時(shí),舵機(jī)的轉(zhuǎn)速越快,當(dāng)快要到達(dá)目標(biāo)角度時(shí),速度變慢。為了使舵機(jī)轉(zhuǎn)動連貫,在轉(zhuǎn)動時(shí)將其分割成若干的小的角度,轉(zhuǎn)動小角時(shí)加上很小的延時(shí),就可以控制其轉(zhuǎn)動速度。但是,如果延時(shí)取值不得當(dāng),會出現(xiàn)卡頓和舵機(jī)發(fā)燙現(xiàn)象,這就需要對其進(jìn)行多次實(shí)驗(yàn),取最佳值。
由于搖桿在遙控器上的偏轉(zhuǎn)有限,而內(nèi)置電位器卻可以轉(zhuǎn)動很大角度,因此需要將每一個(gè)搖桿和旋鈕的轉(zhuǎn)動最值測量,然后對應(yīng)到舵機(jī)的旋轉(zhuǎn)最值,二者相比,可以求出一個(gè)常數(shù),即比例系數(shù)。用該系數(shù)與電位器旋轉(zhuǎn)偏差相乘,即可得出對應(yīng)位置的舵機(jī)所需要的數(shù)值。再將該數(shù)值通過發(fā)射器將數(shù)據(jù)發(fā)送到控制端以控制舵機(jī)。
本次設(shè)計(jì)中的搖桿主要通過A/D轉(zhuǎn)換器來獲取該數(shù)據(jù)。前文提到,本次設(shè)計(jì)的數(shù)模轉(zhuǎn)換芯片是PCF8591。該芯片是I2C總線協(xié)議的,但是51系列單片機(jī)是沒有該協(xié)議接口的,因此還要用引腳模擬該協(xié)議,從而獲取搖桿數(shù)據(jù)。另外,將搖桿和旋鈕對應(yīng)的電位器的抽頭要與轉(zhuǎn)換通道相連接。
數(shù)據(jù)發(fā)送間隔會影響機(jī)械臂響應(yīng)的快慢。如果發(fā)送時(shí)間間隔較長,那么機(jī)械臂響應(yīng)會很慢;如果發(fā)送時(shí)間間隔較短,會出現(xiàn)抖動現(xiàn)象,而且舵機(jī)會發(fā)燙。為了使舵機(jī)相應(yīng)速度既快又不發(fā)生抖動,本設(shè)計(jì)采用定時(shí)器中斷的方式實(shí)時(shí)發(fā)送數(shù)據(jù),并且將數(shù)據(jù)量化使得舵機(jī)擺角流暢。在定時(shí)器中斷中,獲取四路模數(shù)轉(zhuǎn)換值和按鍵指令,同時(shí),在主函數(shù)中,不斷發(fā)送數(shù)據(jù)。定時(shí)器定時(shí)時(shí)間為20毫秒,而發(fā)送是實(shí)時(shí)的。這樣在擺動搖桿和轉(zhuǎn)動旋鈕時(shí)機(jī)械臂會得到及時(shí)的響應(yīng)。
接收端接收數(shù)據(jù)是實(shí)時(shí)的,一旦接收到數(shù)據(jù)立即相應(yīng)機(jī)械臂。接收過程如下:首先,建立一個(gè)機(jī)械臂響應(yīng)函數(shù),帶有一個(gè)參數(shù),就是目標(biāo)角度值。在函數(shù)體中,通過傳參,將目標(biāo)角度值通過函數(shù)中的PWM占空比調(diào)節(jié)達(dá)到期望值。在此過程中,并不是將占空比直接調(diào)到參數(shù)值,而是通過循環(huán)漸進(jìn)到期望值,這樣就會使機(jī)械臂動作連貫而且有運(yùn)動過程。另外,為了使機(jī)械臂完成整個(gè)動作,需要設(shè)置一個(gè)標(biāo)志位,等待動作完成,繼而接收下一組數(shù)據(jù)。
當(dāng)接收到一組數(shù)據(jù)時(shí),舵機(jī)組是同時(shí)完成各自的動作還是逐個(gè)舵機(jī)完成相應(yīng)的動作?如果同時(shí)工作,那么舵機(jī)會同時(shí)運(yùn)轉(zhuǎn),那樣會使電路中電流增大,即使是單獨(dú)供電,也會影響某個(gè)動作較小的舵機(jī),因?yàn)槎鏅C(jī)上連接機(jī)械支架等器件,使得舵機(jī)轉(zhuǎn)動時(shí)存在阻抗,這樣會使電流迅速增大,拉低其他局部的電壓,導(dǎo)致其他局部電路工作不正常,即舵機(jī)擺角不準(zhǔn);如果舵機(jī)逐個(gè)完成作業(yè),那么操作人員等待的時(shí)間較長。其實(shí),就像人們在玩遙控車,對某個(gè)遙控的東西,都是針對性的操作。操作人員通過搖桿控制機(jī)械手臂,一般都是先達(dá)到動作的趨勢,然后再慢慢調(diào)整,調(diào)整過程中,一般情況都是針對某個(gè)部位進(jìn)行調(diào)整的。因此,本次設(shè)計(jì)采用舵機(jī)同時(shí)響應(yīng)的策略。
由于51單片機(jī)沒有PWM輸出,因此需要對其進(jìn)行模擬。利用定時(shí)器中斷可以輸出比較精確的模擬PWM方波。本次設(shè)計(jì)采用12MHz晶振,那么定時(shí)器計(jì)數(shù)器中的數(shù)加一所用的時(shí)間是1微秒,而設(shè)計(jì)所需要的是周期為20毫秒,高電平區(qū)間是0.5毫秒到2.5毫秒之間并且可以劃分大約100個(gè)精度的時(shí)間間隔。由上條件可以將定時(shí)器中斷的定時(shí)時(shí)間設(shè)為20微秒。由于定時(shí)時(shí)間太小,故而將定時(shí)器設(shè)為8位自動重裝載計(jì)數(shù)模式,定時(shí)器計(jì)數(shù)器初值設(shè)置為236,定時(shí)器中斷即設(shè)置完畢。
根據(jù)上述過程所配置的定時(shí)器中斷,可以進(jìn)行PWM方波模擬。在中斷函數(shù)中設(shè)置一個(gè)計(jì)數(shù)靜態(tài)變量t,周期為20ms,需要計(jì)數(shù)一千次。再次設(shè)置五個(gè)字符型全局變量(控制變量),分別為控制五個(gè)舵機(jī)的計(jì)數(shù)值,它們的取值范圍為25到125。
當(dāng)t的計(jì)數(shù)值小于控制變量時(shí),相應(yīng)的引腳為高電平,當(dāng)計(jì)數(shù)t等于控制變量時(shí),電平反轉(zhuǎn)。這樣,只要改變這五個(gè)全局變量的大小,即可對引腳輸出的PWM的占空比進(jìn)行調(diào)節(jié)。當(dāng)然,一定要在該引腳添加上拉電阻,否則無法驅(qū)動舵機(jī)。
該設(shè)計(jì)分為硬件和軟件兩部分,上述是對某些硬件和一些軟件的講解。但是需要根據(jù)實(shí)物進(jìn)行調(diào)試,比如擺角延時(shí)要根據(jù)實(shí)際狀況進(jìn)行調(diào)試,如果機(jī)械臂的重量過大,就應(yīng)該減小擺動延時(shí)等。51單片機(jī)有兩個(gè)外部中斷請求,可以充分將它們利用起來進(jìn)行調(diào)試。比如外部中斷0可以調(diào)節(jié)擺角延時(shí)大小,外部中斷1調(diào)節(jié)角度細(xì)分間隔等,具體情況要根據(jù)實(shí)際而定。供電系統(tǒng)用到5V和6V即可,芯片自行選擇,穩(wěn)壓電路要設(shè)計(jì)合理,采用單獨(dú)供電模式可減緩穩(wěn)壓芯片的負(fù)荷。
[1]方龍,陳丹,肖獻(xiàn)保.基于單片機(jī)的機(jī)械手臂控制系統(tǒng)設(shè)計(jì)[J].廣西輕工業(yè),2008,08:89-90.
[2]盧建設(shè),陳兆陽.基于單片機(jī)的多自由度機(jī)械手臂設(shè)計(jì)[J].科技創(chuàng)新與應(yīng)用,2013,31:115.
[3]賈偉濤.單片機(jī)控制機(jī)械手臂的設(shè)計(jì)與制作[J].電子制作,2006,05: 33-34.
鄧二偉(1994-),男,山西大同人,西北民族大學(xué)電氣工程學(xué)院,研究方向:嵌入式物聯(lián)網(wǎng)。