楊程翔
摘 要:倒立擺是處于倒置不穩(wěn)定狀態(tài)、通過(guò)人為控制使其處于動(dòng)平衡的一種擺。倒立擺是一個(gè)復(fù)雜的快速、非線性、多變量、強(qiáng)耦合、自然不穩(wěn)定的非最小相位系統(tǒng),是重心在上、支點(diǎn)在下控制問(wèn)題的抽象。旋轉(zhuǎn)倒立擺是倒立擺的一種類型,它將普通倒立擺的平動(dòng)控制改為旋轉(zhuǎn)控制,使得整個(gè)系統(tǒng)更為復(fù)雜和不穩(wěn)定,增加了控制的難度。本文提出了一種基于直流伺服電機(jī)的旋轉(zhuǎn)倒立擺實(shí)驗(yàn)裝置的設(shè)計(jì),主要有機(jī)械部分、硬件電路部分、軟件部分組成。單片機(jī)通過(guò)檢測(cè)擺桿和懸臂(主要是擺桿)的角度,來(lái)產(chǎn)生PWM信號(hào)控制電機(jī)動(dòng)作,電機(jī)的動(dòng)作又會(huì)改變擺桿和懸臂的角度,這樣就會(huì)形成一個(gè)閉環(huán)系統(tǒng),通過(guò)不斷地控制,最終使擺桿達(dá)到倒立的狀態(tài)。
關(guān)鍵詞:直流伺服電機(jī);旋轉(zhuǎn)倒立擺;實(shí)驗(yàn)裝置;設(shè)計(jì)
倒立擺是一種較為復(fù)雜快速、多變量、強(qiáng)耦合、非線性以及嚴(yán)重組不穩(wěn)定的系統(tǒng),對(duì)于倒立擺的研究具有十分重要的現(xiàn)實(shí)意義。當(dāng)然,在研究的過(guò)程當(dāng)中,會(huì)涉及很多問(wèn)題,比如魯棒問(wèn)題以及動(dòng)態(tài)平衡等。對(duì)于倒立擺控制方法的研究,有助于更好地控制生產(chǎn)生活當(dāng)中所遇到的各種不穩(wěn)定系統(tǒng),這種研究與應(yīng)用可以說(shuō)是較為廣泛的,甚至可以說(shuō)在軍工以及航天等領(lǐng)域當(dāng)中都有其身影。當(dāng)然,目前對(duì)于倒立擺的研究比較多,控制方法也層出不窮,但是擺桿穩(wěn)定性很容易受到影響,大多源自于傳動(dòng)機(jī)構(gòu)的各種缺陷。對(duì)此,本文提出一個(gè)基于直流伺服電機(jī)的旋轉(zhuǎn)倒立擺實(shí)驗(yàn)裝置的設(shè)計(jì),他不僅具有結(jié)構(gòu)簡(jiǎn)單牢固的特征,而且還減少了實(shí)驗(yàn)過(guò)程當(dāng)中的一些不可控因素,同時(shí)兼具成本低等優(yōu)勢(shì)。下文就本設(shè)計(jì)的系統(tǒng)硬件、程序以及整機(jī)功能參數(shù)測(cè)試展開詳細(xì)論述。
一、系統(tǒng)硬件設(shè)計(jì)
本設(shè)計(jì)的硬件系統(tǒng)構(gòu)成主要包括機(jī)械部分(支架、伺服電機(jī)、懸臂、編碼器和擺桿)和控制電路部分。
(一)機(jī)械結(jié)構(gòu)
系統(tǒng)的機(jī)械結(jié)構(gòu),旋轉(zhuǎn)臂在直流伺服電機(jī)的驅(qū)動(dòng)之下,能夠進(jìn)行水平轉(zhuǎn)動(dòng);伺服電機(jī)驅(qū)動(dòng)旋轉(zhuǎn)臂進(jìn)行順時(shí)針或逆時(shí)針轉(zhuǎn)動(dòng),進(jìn)而帶動(dòng)擺桿擺動(dòng);擺桿在除受重力之外,能夠自由轉(zhuǎn)動(dòng)且在轉(zhuǎn)動(dòng)過(guò)程當(dāng)中阻力幾乎為零。該系統(tǒng)主要由單片機(jī)最小系統(tǒng)、角度傳感器(光電編碼器)輸入電路和直流伺服電機(jī)驅(qū)動(dòng)電路三部分組成。STM32F103VC單片機(jī)通過(guò)檢測(cè)擺桿和懸臂(主要是擺桿)的角度,來(lái)產(chǎn)生PWM信號(hào)控制電機(jī)動(dòng)作,電機(jī)的動(dòng)作又會(huì)改變擺桿和懸臂的角度,這樣就會(huì)形成一個(gè)閉環(huán)系統(tǒng),通過(guò)不斷地控制,最終達(dá)到擺桿倒立的狀態(tài)。
1.直流伺服電機(jī)
直流電機(jī)運(yùn)行時(shí)靜止不動(dòng)的部分稱為定子,定子的主要作用是產(chǎn)生磁場(chǎng),由機(jī)座、主磁極、換向極、端蓋、軸承和電刷裝置等組成。運(yùn)行時(shí)轉(zhuǎn)動(dòng)的部分稱為轉(zhuǎn)子,其主要作用是產(chǎn)生電磁轉(zhuǎn)矩和感應(yīng)電動(dòng)勢(shì),是直流電機(jī)進(jìn)行能量轉(zhuǎn)換的樞紐,所以通常又稱為電樞,由轉(zhuǎn)軸、電樞鐵心、電樞繞組、換向器等組成。
2.編碼器
采用增量式光電編碼器(歐姆龍編碼器ZSP4006-003G-2000BZ3-5-24C)采集擺桿的角度,不僅可以得到擺桿的角度,也可方便地判斷出旋轉(zhuǎn)方向,并且,結(jié)構(gòu)簡(jiǎn)單,成本較低,易于用程序得到擺桿角度。三路信號(hào)輸出,分辨率為2000P/R(即每圈輸出2000個(gè)脈沖),5~24V供電,NPN集電極開路輸出。
(二)控制電路及主要器件
1.電源電路
電源電路原理,本系統(tǒng)中使用到的電源包括+12V,+5V和+3.3V,其中+12V由直流電源直接提供,+5V和+3.3V由電源轉(zhuǎn)換芯片得到。+12V轉(zhuǎn)換成+5V的芯片為CYT78L05,+3.3V電壓是由+5V轉(zhuǎn)換得到的,轉(zhuǎn)換芯片為AMS1117。
2.微處理器電路
本系統(tǒng)選擇基于Cortex-M3的STM32作為主控制器。工作頻率最高可達(dá)50MHz,功耗低至150uA/MHz。更突出的是,它能顯著降低所有8/16位應(yīng)用的代碼長(zhǎng)度。
3.角度傳感器輸入電路
本系統(tǒng)采用采用HCPL-0630,雙路信號(hào)輸入輸出,轉(zhuǎn)換速度快。
二、程序的設(shè)計(jì)
(一)程序功能描述
程序設(shè)計(jì)部分,主要目標(biāo)是要實(shí)現(xiàn)擺桿的擺動(dòng),另外當(dāng)外力撤銷之后,擺桿能夠保持倒立平衡的狀態(tài)。其中,就擺桿擺動(dòng)而言,能夠在電機(jī)的帶動(dòng)之下做往復(fù)擺動(dòng)的同時(shí),擺角達(dá)到或超過(guò)160度。另外,當(dāng)外力撤銷的同時(shí),啟動(dòng)旋轉(zhuǎn)臂使擺桿保持倒立狀態(tài),時(shí)間上至少保持5s。
(二)程序設(shè)計(jì)幾個(gè)關(guān)鍵內(nèi)容
程序的初始化、角度采集子程序、擺桿狀態(tài)監(jiān)測(cè)、伺服電機(jī)動(dòng)作是本程序設(shè)計(jì)的幾個(gè)關(guān)鍵內(nèi)容。
1.程序的初始化
在完成程序初始化之后,電機(jī)通過(guò)懸臂使擺桿轉(zhuǎn)動(dòng)到一定的角度并停留,此時(shí)擺桿受重力作用會(huì)下擺,假設(shè)擺桿下擺的過(guò)程是順時(shí)針的,當(dāng)其順時(shí)針經(jīng)過(guò)0點(diǎn)(即自由下垂?fàn)顟B(tài))時(shí),電機(jī)控制懸臂向運(yùn)動(dòng)方向的反方向運(yùn)動(dòng),這樣就會(huì)給擺桿增加動(dòng)能,擺桿上升的最大角度就會(huì)比上一次的最大角度大。擺桿不斷經(jīng)過(guò)0點(diǎn),電機(jī)就會(huì)不斷地給擺桿增加動(dòng)能,擺桿上升的最大角度就會(huì)不斷變大,當(dāng)擺桿上升的最大角度滿足上方調(diào)節(jié)的條件(大于160度),系統(tǒng)就進(jìn)入上方調(diào)節(jié)的狀態(tài),大體思想是擺桿向左偏離豎直狀態(tài),懸臂就向左運(yùn)動(dòng),反之懸臂向右運(yùn)動(dòng),進(jìn)過(guò)不斷地上方調(diào)節(jié),最終使擺桿到達(dá)倒立狀態(tài)。
2.角度采集子程序
保證角度信號(hào)的可靠性,才能夠正確計(jì)算輸出值來(lái)對(duì)電機(jī)進(jìn)行控制。為此,在擺桿角度采集當(dāng)中,可以通過(guò)讀取TM3的計(jì)數(shù)器,來(lái)得到擺桿的角度(脈沖數(shù)來(lái)代替),即Rod_Angle=TIM3->CNT。另外,在懸臂角度采集當(dāng)中,原理基本相同,同樣可以基于TIM4的編碼模式,而電機(jī)角度則需要用圈數(shù)的累加,基于Overflow,來(lái)得出Motor_Angle=Overflow*2000+(TIM4->CNT)。
3.擺桿狀態(tài)檢測(cè)
通過(guò)對(duì)擺桿角度進(jìn)行實(shí)時(shí)監(jiān)測(cè),基于所監(jiān)測(cè)到的數(shù)據(jù)來(lái)相對(duì)應(yīng)地調(diào)節(jié)擺桿角度,進(jìn)而控制電機(jī)。本設(shè)計(jì)按照如下流程,每隔1ms執(zhí)行一次:
開始后,基于角度采集子程序得到當(dāng)前角度,在與上次采集到的擺桿的角度進(jìn)行對(duì)比之后,得出擺桿最大上擺角度,當(dāng)最大上擺角度大于160時(shí)且當(dāng)前角度不等于0時(shí),進(jìn)行上方調(diào)節(jié),當(dāng)最大上擺角度大于160度且當(dāng)前角度等于0時(shí),最大上擺角度清零。另外,如果最大上擺角度小于160時(shí),進(jìn)行下方加速,其中當(dāng)本次溢出值大于上次溢出值時(shí),進(jìn)行向左加速,而當(dāng)本次溢出值小于上次溢出值時(shí),進(jìn)行向右加速?;谙路郊铀倥c上方調(diào)節(jié)又可以得到當(dāng)前的角度。
在下方加速的過(guò)程中,還要判斷是順時(shí)針加速還是逆時(shí)針加速。擺桿順時(shí)針轉(zhuǎn)過(guò)0點(diǎn)時(shí),Overflow加1,逆時(shí)針轉(zhuǎn)過(guò)0點(diǎn)時(shí),Overflow減1,且程序設(shè)定Overflow只有-1和0兩個(gè)值,Overflow由-1變?yōu)?表明順時(shí)針轉(zhuǎn)過(guò)0點(diǎn),反之表明逆時(shí)針轉(zhuǎn)過(guò)0點(diǎn)。進(jìn)而就可以知道電機(jī)是向左運(yùn)動(dòng)給擺桿加速,還是向右運(yùn)動(dòng)。然后單片機(jī)設(shè)置電機(jī)動(dòng)作命令字(Motor_Action),以便電機(jī)動(dòng)作任務(wù)執(zhí)行不同的任務(wù)。
在上方調(diào)節(jié)過(guò)程中加入一個(gè)判斷當(dāng)前角度是否為零的環(huán)節(jié),這就防止擺桿從上方掉下來(lái),而電機(jī)一直執(zhí)行的是上方調(diào)節(jié)。由流程圖看到,當(dāng)擺桿掉下來(lái)后,最大上擺角度清零,又從下方加速開始執(zhí)行,滿足上方調(diào)節(jié)條件后才能上方調(diào)節(jié)。確定電機(jī)動(dòng)作后,改變電機(jī)動(dòng)作命令字(Motor_Action),讓電機(jī)執(zhí)行不同的動(dòng)作。
4.伺服電機(jī)動(dòng)作
基于下方加速子程序與上方調(diào)節(jié)子程序,來(lái)控制伺服電機(jī)動(dòng)作。就下方加速子程序而言,當(dāng)電機(jī)動(dòng)作命令字表示順時(shí)針轉(zhuǎn)動(dòng)給擺桿加速時(shí),設(shè)定PWM的占空比為1447,讓電機(jī)順時(shí)針轉(zhuǎn)動(dòng)。當(dāng)電機(jī)動(dòng)作命令字表示逆時(shí)針轉(zhuǎn)動(dòng)給擺桿加速時(shí),設(shè)定PWM的占空比為2647讓電機(jī)逆時(shí)針轉(zhuǎn)動(dòng)。另外,就下方調(diào)節(jié)子程序而言,本設(shè)計(jì)將擺桿直立PID控制與懸臂回零PID控制疊加在一起。其中,擺桿直立PID控制,此控制環(huán)輸入是擺桿當(dāng)前的角度,擺桿當(dāng)前角度與擺桿豎直角度相減得到偏差,根據(jù)偏差確定輸出PWM的占空比,控制電機(jī)的轉(zhuǎn)速和正反轉(zhuǎn),進(jìn)而改變擺桿的角度,使擺桿迅速直立。此調(diào)節(jié)每1ms執(zhí)行一次。懸臂回零PID控制,此控制環(huán)輸入是懸臂(電機(jī))當(dāng)前的角度,懸臂當(dāng)前角度與初始化時(shí)懸臂的角度(即為0度)相減得到偏差,根據(jù)偏差確定輸出PWM的占空比,控制電機(jī)的轉(zhuǎn)速和正反轉(zhuǎn),進(jìn)而改變懸臂的角度,是懸臂慢慢回零。此調(diào)節(jié)每50ms執(zhí)行一次。
三、整機(jī)功能參數(shù)測(cè)試
在初期測(cè)試過(guò)程當(dāng)中,旋轉(zhuǎn)臂來(lái)回轉(zhuǎn)動(dòng)時(shí)抖動(dòng)較大,影響了單片機(jī)對(duì)數(shù)據(jù)的處理與執(zhí)行。另外,在擺桿倒立調(diào)節(jié)的過(guò)程當(dāng)中,旋轉(zhuǎn)臂同樣會(huì)出現(xiàn)上下抖動(dòng)的情況,影響了直流伺服電機(jī)準(zhǔn)確地執(zhí)行動(dòng)作。對(duì)此,筆者采用了以下幾點(diǎn)措施來(lái)進(jìn)行調(diào)試,包括將伺服電機(jī)最大轉(zhuǎn)速控制在1000r/s以內(nèi),這樣可有效避免失步問(wèn)題,重新對(duì)PID參數(shù)進(jìn)行整定,另外旋轉(zhuǎn)臂和電機(jī)轉(zhuǎn)軸以最大限度契合旋轉(zhuǎn)臂選用材質(zhì)更輕且質(zhì)地更硬的材料,軸心距離長(zhǎng)于規(guī)定長(zhǎng)度的同時(shí),又不可過(guò)長(zhǎng),以避免抖動(dòng)問(wèn)題。經(jīng)過(guò)調(diào)試與改進(jìn)之后,本設(shè)計(jì)中的基于直流伺服電機(jī)的旋轉(zhuǎn)倒立擺的擺桿穩(wěn)定倒立懸掛之后,能夠保持較長(zhǎng)時(shí)間的倒立懸掛狀態(tài)。
四、結(jié)語(yǔ)
本設(shè)計(jì)提出的基于直流伺服電機(jī)的旋轉(zhuǎn)倒立擺實(shí)驗(yàn)裝置設(shè)計(jì),具有較為良好的魯棒性與自我調(diào)節(jié)能力。綜上所述,本設(shè)計(jì)達(dá)到了設(shè)計(jì)的要求。
參考文獻(xiàn):
[1]任楨,林都,李靜.旋轉(zhuǎn)倒立擺虛擬仿真模型構(gòu)建與驗(yàn)證[J].現(xiàn)代電子技術(shù),2019(03):60-64.
[2]楊勛濤,樊麗,顏新華.兩輪自平衡小車啟動(dòng)暫態(tài)過(guò)程的研究[J].西南師范大學(xué)大學(xué)報(bào)(自然科學(xué)版),2014(12):87-93.
[3]王東亮,劉斌,張?jiān)?環(huán)形一級(jí)倒立擺擺起及穩(wěn)定控制研究[J].微計(jì)算機(jī)信息,2017(04):13-14.
[4]李曉豪,李鑫.基于單片機(jī)的旋轉(zhuǎn)倒立擺控制系統(tǒng)研發(fā)[J].常熟理工學(xué)院學(xué)報(bào),2019(09):98-101.