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