兩輪智能平衡小車的設(shè)計_第1頁
兩輪智能平衡小車的設(shè)計_第2頁
兩輪智能平衡小車的設(shè)計_第3頁
兩輪智能平衡小車的設(shè)計_第4頁
兩輪智能平衡小車的設(shè)計_第5頁
已閱讀5頁,還剩35頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)

文檔簡介

第一章緒論1.1研究背景在進入二十一世紀后,人類的科技水平不斷進步,涌現(xiàn)出許多新鮮事物。平衡車就是其中之一。任何事物的興起都有其背后的原因。它具有極高的實用性,可在很多領(lǐng)域內(nèi)進行應(yīng)用,與此同時因為技術(shù)手段不斷進步,例如可以更簡單方便的對數(shù)據(jù)進行獲取,同時,因為微控制芯片的運算能力的不斷進步,擁有更加強大的數(shù)據(jù)處理能力,對于姿態(tài)傳感器的回傳數(shù)據(jù)處理也更高效。由于三輪驅(qū)動的機器人與其他結(jié)構(gòu)的機器人在運動方式上存在著顯著的不同,受到多方面外界因素的限制。例如,機器人處于空間狹小的地方進行工作,當在運行過程中需要進行較大幅度的運動時,多輪機器人所存在的短板就會在實際使用的時候出現(xiàn)。這時,兩輪智能自平衡小車就擁有了較為明顯的優(yōu)勢。兩輪智能自平衡小車因為車身架構(gòu)的不同可以細分為混合式,輪式,履帶式等不同種類。方便在各種不同的復(fù)雜環(huán)境中正常運作。因為雙輪平衡車在結(jié)構(gòu)上由一對車輪外加軸承系統(tǒng)構(gòu)成,在無外力作用的情況下不能進行自我平衡,在這一點上與倒立擺有相似之處,因為雙輪智能自平衡小車具有擬合性較強、強耦合、多狀態(tài)等不同的特性,是研究不同控制方法的理想平臺,而且它具有非常小的轉(zhuǎn)彎半徑和體積,并且具有動作極其靈活的特點,兩輪輪智能自平衡小車具有構(gòu)造簡單,易于使用,造價低廉的特點,在不同的場合大范圍應(yīng)用。1.2國內(nèi)外雙輪平衡小車研究現(xiàn)狀1.2.1國外的研究現(xiàn)狀世界上首先進行雙輪自平衡研究的是來自日本的幾位科學(xué)家,大約在1980年,已經(jīng)有人對雙輪自平衡車進行過大量的理論研究,并給出了基本的結(jié)構(gòu)框架及相關(guān)的研究結(jié)論,采用了DSP處理器來檢測雙輪自平衡小車姿態(tài)的變化情況,再通過微控制器來對電機的轉(zhuǎn)速進行控制,從而保持雙輪自平衡小車的平衡狀態(tài)。賽格威最初是由國外音譯而來,在國內(nèi)也被叫做體感車、思維車、平衡車、火星車等。它是一種由電力進行驅(qū)動、同時還具有一定的自我平衡保持能力的個人交小型雙輪交通機器人,屬于新時代的交通方式。經(jīng)過兩年時間的研制,美國人卡成功制作了第一輛平衡車的模型,并進行了實際的路測。在此之后,伴隨著技術(shù)的不斷成熟,其研發(fā)團隊也不斷擴大。在外界看來,具有廣闊的發(fā)展前景。在2001年12月其公司開始商業(yè)化的量產(chǎn)。產(chǎn)品線擁有多個不同規(guī)格和型號的產(chǎn)品。不僅僅提供個人消費級的平衡車,也有適合戶外應(yīng)用的越野平衡車。在一般情況下的限速為25km/h。平衡車的英文名稱為“Segway”。來源于英文詞典中的單個單詞Segue,其可翻譯為“順滑流暢的移動”,其英譯的名稱也間接表達了平衡車在人們內(nèi)心中的理想形態(tài)。自由、方便、無拘束的移動。用最新的鋰離子蓄電池做為動力來源進行驅(qū)動,利用物理學(xué)的“動態(tài)平衡原理”,通過微處理芯片控制其前進或轉(zhuǎn)向。當車身上的乘客身體發(fā)生移動時,整體的重心會不斷發(fā)生改變,不斷進行調(diào)整并達到平衡狀態(tài),前進、后退、拐彎、剎車等一切動作均由身體進行控制。由于賽格威是一種前所未見的嶄新類別的交通工具,因此很難用傳統(tǒng)的分類方式定義它的種類。而且它具有非常小的轉(zhuǎn)彎半徑和體積,并且具有動作極其靈活的特點,因此也可以作為一種短程行走工具等在生活中具有實際意義。在一些更正式的場合(如官方道路法規(guī)),Segway平衡車也被稱為電動個人輔助移動設(shè)備(EPAMD),通常被稱為電動替代步行機。圖1-1Segwayt平衡車在傳統(tǒng)平衡車的基礎(chǔ)上,日本HONDA公司法發(fā)布了一輛與眾不同的新型平衡車,與傳統(tǒng)的雙輪結(jié)構(gòu)不同的是這款平衡車僅有有一個支撐受力點。被命名為U3-X。可以靈活地完成普通的前進,后退,轉(zhuǎn)向等常規(guī)動作。這些都得益于其新穎的結(jié)構(gòu)設(shè)計。利用一個經(jīng)過特殊加工的異形輪胎來保持平衡。同樣來自日本SANYO公司的直流電動機事業(yè)部設(shè)計制造了一臺能進行上體倒立從進行平衡保持的機器人FLATHRU,是一輛面向普通家庭應(yīng)用的雙輪自平衡機器人??梢苑胖靡欢ㄖ亓康呢撦d,并且也能適應(yīng)較為粗糙的路面。在美國加利福尼亞大學(xué)聯(lián)合知名工業(yè)機器人工廠WOWWEE,二者共同設(shè)計制造了一種名為MIP新型服務(wù)類機器人。其正式的產(chǎn)品有黑色與白色。在其頭部安裝有一塊高清顯示屏,可以模擬出不同的表情。根據(jù)其官網(wǎng)的介紹,其高度僅有19.8cm,結(jié)構(gòu)上分為底盤與車身兩部分。移動的MIP非常靈活。即使沒有人的干預(yù),它仍然可以通過車輪保持相當大的穩(wěn)定性。甚至能夠為你端茶送水。然而,盡管MIP可以保持自身的平衡,但它首先需要保持直立。MIP可以通過藍牙與手機中APP程序進行數(shù)據(jù)傳輸和連接控制,所以我們也可以在通過高速網(wǎng)絡(luò)實現(xiàn)對MIP的遠程控制。圖1-2Mip平衡車1.2.2國內(nèi)研究現(xiàn)狀我國在雙輪自平衡車方面的研究雖然沒有國外研究的早,但在不懈的努力下也收獲了一些較為先進的成果,西安電子科技大學(xué)研發(fā)了一款自平衡雙輪機器人,見圖1-6,該機器人本質(zhì)為一個雙輪式左右并行布置結(jié)構(gòu)的自平衡系統(tǒng)。它通過伺服放大器控制兩個Maxson電機來驅(qū)動,并同時運用了神經(jīng)模糊算法對平衡車進行操作控制,從而實現(xiàn)系統(tǒng)的自平衡。中國科學(xué)技術(shù)大學(xué)研發(fā)的平衡代步車并沒有配置用于剎車的裝置,而是依據(jù)駕駛者的身體重心變化來完成車體的加速運動和減速運動;操作控制手柄能夠?qū)崿F(xiàn)任意角度的轉(zhuǎn)向運動。在控制器的設(shè)計上,它采用了模糊自適應(yīng)原理,能夠很好的實現(xiàn)平衡車的動態(tài)平衡,并且有效地處理了車體大角度變化的平滑控制問題。臺灣清云科技大學(xué)的Chih-HuiChiu等搭建完成了一臺雙輪移動可載貨小車。運用傾角傳感器,陀螺儀和光電測速碼盤,這三種傳感器構(gòu)成小車系統(tǒng)的位姿檢測功能模塊,兩個微型控制器被分別用來完成移動小車的平衡和數(shù)據(jù)處理等功能,分別承擔(dān)主要控制和處理相關(guān)數(shù)據(jù)?;谀:刂圃淼碾p閉環(huán)控制器是調(diào)節(jié)系統(tǒng)的動態(tài)平衡,以及使系統(tǒng)按照預(yù)期的運動路線運行的關(guān)鍵。圖1-3Chih-HuiChiu平衡車1.3論文主要內(nèi)容及各章節(jié)內(nèi)容簡介本系統(tǒng)要求設(shè)計制作一輛應(yīng)用串級PID原理,并且實現(xiàn)自我平衡的智能雙輪自平衡小車。主控芯片選用了ST公司的微控制器,具體的型號為STM32F103C8T6,其功耗和處理性能完全可以滿足本系統(tǒng)數(shù)據(jù)處理的需求,并且具有豐富的外設(shè)接口,為日后小車的功能拓展提供了接口。為了更加準確的獲取雙輪自平衡小車運動過程中的加速度以及角速度等關(guān)鍵數(shù)據(jù),使用運動處理傳感器MPU6050,這是一款具有SPI和IIC接口的傾角傳感器芯片,又因為其內(nèi)置了DMP數(shù)據(jù)處理引擎,可以直接以四元數(shù)輸出角度和角速度等系統(tǒng)運行所必須的關(guān)鍵數(shù)據(jù),大大減輕了MCU的負擔(dān),同時也為接下來運動狀態(tài)處理提供了方便,應(yīng)用兩種不同的供電電源芯片,為系統(tǒng)中不同的部分提供穩(wěn)定的電壓,避免因為電機堵轉(zhuǎn)等意外情況造成系統(tǒng)中電壓波動引發(fā)單片機復(fù)位造成系統(tǒng)失控等不良事件的發(fā)生,完成了前期的電路設(shè)計以及驗證后,進行程序的編寫,修正卡爾曼濾波及串級PID的相關(guān)參數(shù)。最后對于平衡小車進行整體的調(diào)試。讓兩輪智能自平衡車完成預(yù)期中的直立平衡并完成預(yù)定的平衡和行進等動作。以下為本文中各章節(jié)的詳細內(nèi)容簡述:第一章:本文主要闡述了平衡車的研究背景及其在實際應(yīng)用中的意義,闡述了兩輪自平衡車的發(fā)展過程,以及國內(nèi)外在研究開發(fā)過程中所取得的突出成果和突出成就。第二章:通過在不同的角度對平衡車進行準確的建模分析,針對陀螺儀和加速度計的特性進行說明,對于選取采用的互補濾波的數(shù)據(jù)融合方案進行介紹。詳細介紹了PID算法和串級PID的基本原理及不同參數(shù)的意義,并闡述了兩者在該系統(tǒng)中的應(yīng)用。第三章:介紹了雙輪自平衡車的硬件系統(tǒng)組成,并完成了系統(tǒng)的結(jié)構(gòu),包括最小系統(tǒng)STM32F103C8T6、運動處理器MPU6050、電機驅(qū)動模塊電路TB6612FNG。第四章:使用KEILVERSION5編寫雙輪自平衡小車互補濾波算法程序以及其他結(jié)構(gòu)程序等。優(yōu)化小車的數(shù)據(jù)采集和電機驅(qū)動程序塊,使整個程序運行的更加高效。更好的實現(xiàn)小車的平衡功能。第五章:包括互補濾波算法的調(diào)試和串級PID算法控制參數(shù)的整定,通過連續(xù)調(diào)試和實驗,對調(diào)試結(jié)果進行了分析和比較。以尋求在實際運行過程中最穩(wěn)定的PID參數(shù)。第六章:對雙輪平衡車各模塊的功能進行了總結(jié)和展望,并對雙輪自平衡車現(xiàn)有的改進空間進行了說明和展望。雙輪自平衡車控制系統(tǒng)2.1平衡控制系統(tǒng)原理如何保持兩輪智能平衡小車保持直立的想法來源于生活中的日常,幾乎所有的正常人都可以使一根鉛筆在手心直立,并且保持一段時間這個狀態(tài)。這個簡單的事情包含了一定的物理原理,一是托著鉛筆的手掌可以自由的移動;另一個則是人眼可以觀察到木棒的傾斜角度并且在大腦中可以對可能出現(xiàn)的傾斜趨勢進行預(yù)判處理。最后通過手掌移動抵消木棒的傾斜角度和趨勢,從而保持木棒的直立。這其中的原理實際上就是自動控制理論中的負反饋機制。目前來看世界上還沒有任何一個人可以蒙眼保持木棒在指尖上保持直立狀態(tài),原因是沒有了眼睛對木棒的相對位置的觀察從而為大腦的提前預(yù)判提供負反饋信號。其中所包含的原理。雙輪自平衡車的原理也是通過宏觀上的負反饋完成的,但是對于圖2-1來說,保持手心物體的平衡,原理更加直觀和簡單兩輪自平衡汽車的左右車輪都在地面上,因此只能在車身的前后方向不穩(wěn)定,可能向前或向后傾斜。因此,只要控制系統(tǒng)調(diào)整車輪的速度以抵消車輪在滾動方向上的傾斜趨勢,小車就能保持在豎直方向上的平衡狀態(tài)。圖2-1人體保持物體平衡原理相比于對手中的小棍進行平衡狀態(tài)的保持,兩輪智能自平衡小車的原理就簡單的多。因為兩輪智能平衡小車只是與地面發(fā)生了物理接觸。在運動狀態(tài)上可能會存在以下幾種情況,傾斜運動或傾斜落地。兩輪平衡小車所需要做的是對小車兩邊的車輪獨立的進行旋轉(zhuǎn)方向以及速度進行控制,進而維持小車在垂直方向得運動狀態(tài)。其原理如圖2-2所示。圖2-2雙輪自平衡小車的平衡原理2.2雙輪自平衡小車數(shù)學(xué)模型2.2.1自平衡小車的受力狀態(tài)分析為了使雙輪自平衡小車能夠在豎直方向保持平衡,需要提供一個反方向的作用力。如何確定力的大小是需要解決的問題??梢越㈦p輪自平衡小車的物理模型以及運動學(xué)模型,通過合理的結(jié)構(gòu)設(shè)計與軟件部分的設(shè)計控制來控制雙輪自平衡小車的平衡狀態(tài)。為了較為直觀形象的進行說明,通過類比單擺模型來說明雙輪自平衡小車保持平衡的控制原理。使用細線懸掛著的小球是經(jīng)過簡化的理想單擺模型,所以保持直立狀態(tài)的雙輪自平衡小車可以看成放置在可以左右移動平臺上的倒立著的單擺。如圖2-3所示。圖2-3單擺模型小球脫離在垂直時候的平衡位置后,根據(jù)力學(xué)原理可知,小球此時會受到重力和細線拉力在其正交方向上的合拉力,一旦小球離開平衡位置時,就會受外力作用恢復(fù)垂直狀態(tài)。可以通過數(shù)學(xué)與物理學(xué)對這個合力的大小進行計算。其大小為:(1-1)在實際情況中,一般的的兩輪自平衡小車只需要極小的傾斜角度即可滿足系統(tǒng)穩(wěn)定前進的需求,這個時候的傾斜角度與電機軸向反作用力是一種正比例關(guān)系。并且在相反的方向上作用,想要使小車穩(wěn)定在固定角度而并非晃動還需要考慮空氣阻力對系統(tǒng)穩(wěn)定調(diào)節(jié)的影響,雙輪自平衡小車的質(zhì)量越大,運行速度越快,需要維持平衡狀態(tài)的作用力也越大?;貜?fù)力與阻尼力兩者中的回復(fù)力決定了雙輪自平衡小車的運動趨勢,阻尼力決定了重物的運動狀態(tài)。圖2-4單擺模型實際情況中,如果系統(tǒng)中存在較小的阻尼力,單擺會逐漸靠近平衡狀態(tài)時小球所處的位置。如果系統(tǒng)中出現(xiàn)了較大的阻尼力,單擺則會需要較長的時間才能恢復(fù)平穩(wěn)狀態(tài)。只有在阻尼力合適的情況下。在控制系統(tǒng)介入后,車體才會快速且平穩(wěn)的對平衡狀態(tài)的變化進行修正。一階倒立擺受力情況如圖2-5:圖2-5一階倒立擺受力分析根據(jù)上圖可以得到的結(jié)論是圖中倒立擺的回復(fù)力的大小沒有發(fā)生任何改變,但是其方向與小球的運動方向完全相同,會導(dǎo)致物體加速傾倒。通過對單擺平衡的受力分析可得,倒立擺與單擺在原理上類似,但是其回復(fù)力與運動的方向一致,所以只能在其反方向施加大小相同的力,使系統(tǒng)保持平衡。受力分析如圖2-6所示:圖2-6加速時模型受力分析當小車車輪受到電機驅(qū)動產(chǎn)生大小為a的加速度時,可以計算出小車此時所受到的慣性力的大小為:(1-2)由此可以得出回復(fù)力為: (1-3)因為雙輪自平衡小車在運動中進行自我調(diào)整的時候只需要極小的傾斜角度改變,就可以完成定向移動的目的。所以可以近似的將sinθ看作θ,可以通過計算得到以下公式: (1-4)因為偏移方向與合力方向相反,兩者比例系數(shù)k1大于重力加速度g,因為物體存在阻尼力導(dǎo)致返回平衡點的時間較長,會產(chǎn)生震蕩,所以需要系統(tǒng)以外的外力來使其恢復(fù)平衡狀態(tài),外力大小應(yīng)與角速度成正比例關(guān)系,所以公式可以化簡成以下形式: (1-5)通過計算可以得到保持車體在豎直方向上的靜止狀態(tài)需要車輪所擁有的最小加速度是: (1-6)上式中θ為小車相對于水平面的傾斜角度,而θ′為小車角速度,f1、f2是控制系統(tǒng)中的比例參數(shù)。如果在運動控制過程中,當系統(tǒng)中f1大于g時,倒立擺才會向平衡位置靠近直至恢復(fù)垂直狀態(tài),但是改變f2的大小可以對車體恢復(fù)平衡速度的快慢進行的大小進行控制。2.3串級PID在雙輪自平衡小車控制系統(tǒng)中的應(yīng)用2.3.1PID算法簡單介紹PID控制算法是現(xiàn)代自控理論中一種通用和廣泛的算法。在PID控制過程中起主要作用的有三個參數(shù)P、I、D,也是就比例,積分,微分的英文首字母。在控制過程中,比例算法所起的主要作用是讓控制過程更加的平滑,積分運算是對系統(tǒng)運作過程中所產(chǎn)生的噪聲進行處理,而微分運算具體的負責(zé)控制過程中的控制強度。系統(tǒng)中所存在的控制誤差即為系統(tǒng)控制中實時輸出的數(shù)值與陀螺儀回傳數(shù)據(jù)的差。本文在此控制過程中采用了增量式PID控制。在具體的控制過程中,與位置式PID不同的是,二者的運算輸出不一樣。增量式PID只對變化誤差進行輸出,而位置式PID需要進行大量的數(shù)據(jù)運算與存儲,才能進行輸出。在增量式PID的控制過程中,只是對于電機驅(qū)動模塊所需要的脈沖波長進行控制。在系統(tǒng)中引入PID的主要原因是為了讓平衡過程的控制更加順滑、精確,消除掉不必要的抖動。其中涉及到大量的數(shù)據(jù)運算,考慮到系統(tǒng)內(nèi)運算能力的限制,所以本文采用了運算量較小且控制效果較好的增量式PID。圖2-7增量式PID的原理圖 從上圖中可以得知三個參數(shù)在PID算法中所發(fā)揮的具體作用。在三個互相不產(chǎn)生干擾信號的調(diào)節(jié)進程運行的時候,比例調(diào)節(jié)主要是對系統(tǒng)運行中產(chǎn)生的偏差值進行累積并在其控制作用發(fā)生減弱時還能持續(xù)的進行控制。但是在系統(tǒng)P值過沖的情況下是可能會產(chǎn)生持續(xù)的低頻振蕩,過高的靈敏度會導(dǎo)致系統(tǒng)超調(diào)的發(fā)生,有可能會造成電機過熱、或是驅(qū)動模塊損壞。在這種情況下,可以利用微分來減小此類不穩(wěn)定高頻震蕩發(fā)生的概率。在系統(tǒng)運行過程中,每個時段所累積誤差不斷的應(yīng)用函數(shù)進行微分運算。在圖中E(t)的狀態(tài)發(fā)生高速變化時,對KI數(shù)值逐步調(diào)節(jié)。微分運算在平衡控制中處于主要地位,可以適當?shù)販p緩比例運算對小車的控制強度。相反,當E(t)在系統(tǒng)中的改變速度較為緩慢時,運算后產(chǎn)生的參數(shù)會使KI偏低。在這種情況下,比例運算會起主要的控制作用,強迫控制系統(tǒng)將小車從傾斜的姿態(tài)恢復(fù)到穩(wěn)定的自平衡狀態(tài)。當調(diào)試時設(shè)定較小的微分參數(shù)值,有一定概率會在特殊情況下累積產(chǎn)生小幅度的不均勻輸出震蕩。而在微分系數(shù)較大的時候,恢復(fù)平衡狀態(tài)的時間會有所增加。系統(tǒng)控制過程中應(yīng)用積分作用來實現(xiàn)對不同時刻系統(tǒng)誤差的累積。在系統(tǒng)平穩(wěn)時,對運行過程中積累的誤差不斷放大來控制系統(tǒng),假設(shè)誤差一直存在,在這種情況下積分將持續(xù)進行作用,當系統(tǒng)到達穩(wěn)定狀態(tài)時,積分環(huán)節(jié)將會失去效果。2.3.4串級PID的原理及其在本系統(tǒng)中的應(yīng)用在自控系統(tǒng)中,總是希望在進行參數(shù)設(shè)定之后系統(tǒng)可以進行快速而準確的動作,可以選用PID控制來進行調(diào)整。PID控制又分為位置式和增量式兩種類別,其中的位置式PID適合舵機控制等系統(tǒng),而在本系統(tǒng)中選用的是增量式PID。(1-7)其中D之后的參數(shù)是當前誤差與前次誤差的差值,與直接使用運動傳感器的數(shù)據(jù)具有相同的效果。串級PID是在同一控制系統(tǒng)中使用兩個PID進行嵌套控制。在具體組成上可分為外環(huán)和內(nèi)環(huán),不同的應(yīng)用中會選用不同的組合方式。在兩輪智能平衡小車控制過程中,在內(nèi)環(huán)中應(yīng)用PID控制,但是在外環(huán)中使用PI進行控制。在普通的PID控制中,輸入的參數(shù)為系統(tǒng)運算得出的期望值,輸出的數(shù)據(jù)為小車此時的傾角值。但是在串級PID系統(tǒng)中外PID環(huán)進行運算的是期望角度值,內(nèi)PID環(huán)經(jīng)過運算后輸出的是角速度數(shù)據(jù)。為了方便理解其原理,內(nèi)環(huán)PID是希望雙輪自平衡小車以每秒多少度的加速度保持運動狀態(tài),然后經(jīng)過PID控制進行控制從而達到期望的狀態(tài)。外環(huán)PID是根據(jù)傳感器回傳的角度偏差值從而對內(nèi)環(huán)PID進行調(diào)整。這樣,即使外環(huán)數(shù)據(jù)發(fā)生快速的變化,雙輪自平衡小車的運動效果也不會顯得很僵硬。 圖2-8串級PID的原理圖由圖2-8可以分析出,主PID調(diào)節(jié)器和副PID調(diào)節(jié)器在工作的時候為相互串聯(lián)的關(guān)系。在本系統(tǒng)中,由于主PID控制系統(tǒng)中內(nèi)環(huán)的數(shù)據(jù)處理,所以在其中傳遞的參數(shù)為主要變量。在串級PID控制系統(tǒng)中,主PID控制器與副PID調(diào)節(jié)器分別控制不同的運動進程。一般來說,外環(huán)PID進行定值控制,內(nèi)環(huán)PID調(diào)節(jié)器負責(zé)的是隨動控制過程。不同類型的控制系統(tǒng)對內(nèi)環(huán)PID有不同的要求。一般來說,對主PID的要求基本相同。在控制進程中一般選擇PI控制或PID控制,因為副PID回路控制系統(tǒng)所具有的獨特性質(zhì),所以一般的內(nèi)環(huán)回路要求具有對輸入數(shù)據(jù)進行快速處理的特性。對于引入微分控制所帶來的時間延長的特性,可能在計算過程中存在差值,一般我們會選取比例控制而不引入積分或者微分控制。在實際的操作中如果在系統(tǒng)中已經(jīng)引入積分控制,這種情況下再引入微分控制,會使調(diào)節(jié)閥的動作過大,不利于保持整個控制系統(tǒng)的穩(wěn)定。串級PID的目的是為了保證主要參數(shù)(外環(huán))的足夠穩(wěn)定。一次和二次參數(shù)調(diào)節(jié)器不是相互獨立的,而是經(jīng)過調(diào)整和優(yōu)化的。當雙輪智能平衡小車受到不同強度和層次的外界干擾時,兩級串聯(lián)的PID控制器會進行不同的控制輸出。先是由副PID調(diào)節(jié)器進行干預(yù)調(diào)節(jié),當影響超出調(diào)節(jié)范圍時,主PID會受到內(nèi)環(huán)數(shù)據(jù)變化的影響。在此時,外環(huán)主PID參與雙輪平衡小車的平衡控制過程。由于在本系統(tǒng)中有兩級PID調(diào)節(jié)過程。所以相對于傳統(tǒng)的單級PID調(diào)節(jié)過程,串級PID在調(diào)節(jié)過程中效果會更加細膩,控制的精度和穩(wěn)定性都有所提高。經(jīng)過我們由實際實驗過程對比得出的結(jié)論來看,串級PID與單機PID相比有著顯而易見的優(yōu)點。因此我們在雙輪自平衡小車中采用串級PID進行小車的姿態(tài)控制。串級PID在調(diào)節(jié)過程中對誤差的調(diào)整精度和強度高于傳統(tǒng)的單級別PID。在進行調(diào)試時,應(yīng)該將串級PID的外環(huán)控制看作一個已經(jīng)提前設(shè)定好參數(shù)的單PID控制過程,但是在調(diào)節(jié)內(nèi)環(huán)PID過程中,由于小車的狀態(tài)隨著外部狀態(tài)發(fā)生改變,所以內(nèi)環(huán)PID在進行不斷的運算輸出。在兩輪智能平衡小車工作時,串級PID的外環(huán)會隨時受到外界干擾與噪聲。受此影響,兩輪智能自平衡小車的平衡狀態(tài)也會受到影響而發(fā)生改變。所以在串級PID控制過程中,兩級PID的參數(shù)并非獨立而是相互進行數(shù)據(jù)傳遞。在平衡過程中外環(huán)會向內(nèi)環(huán)輸入一直改變的控制變量的r(t),與此同時內(nèi)環(huán)r(t)與傳感器接收到的噪聲信號進行耦合處理。在系統(tǒng)中,如果有很多的噪聲和外界干擾進入內(nèi)環(huán)PID控制系統(tǒng)中,有一定可能會對兩級PID的穩(wěn)定性造成干擾。但是,在串級PID控制系統(tǒng)中。內(nèi)環(huán)的穩(wěn)定狀態(tài)改變于整個系統(tǒng)來講,不會有太大的影響。所以,串級PID可以提前對可能干擾內(nèi)環(huán)PID控制的噪聲進行抑制,從而間接加強了主PID控制系統(tǒng)的穩(wěn)定性,直觀的體現(xiàn)就是提高了雙輪自平衡小車對于復(fù)雜路況餓的適應(yīng)能力和通過性。2.4陀螺儀與加速度計的數(shù)據(jù)融合在雙輪自平衡小車的運動中,想要獲得更加平穩(wěn)的運動過程。排除不可選擇和避免的外在壞境因素外,如何使小車獲得更加準確的傳感器數(shù)據(jù)也是一個值得我們考慮的方面。兩輪自平衡小車可以比做一種擁有多個干擾源的非穩(wěn)態(tài)系統(tǒng)。要使雙輪自平衡小車實現(xiàn)并保持穩(wěn)定的平衡狀態(tài),通過對相似的物理模型進行類比,可得知當兩輪自平衡小車重心位于車軸垂線時效果最好。在兩輪小車平衡過程運行的時候,如何獲取更加穩(wěn)定的測量數(shù)據(jù)是我們首先要解決的問題。因為小車在平衡或者運動過程中唯一受外界影響的數(shù)據(jù)只有角度值。在系統(tǒng)運行過程中必須要輸入準確的角度數(shù)據(jù)。但是如果我們只是選用加速計或是三軸陀螺儀的數(shù)據(jù)來對平衡車的車身角度進行校正,會受到外界的干擾而產(chǎn)生較大的誤差值,難以達到雙輪自平衡小車在進行設(shè)計時提出的技術(shù)要求。為了獲得更加準確而平穩(wěn)的采樣數(shù)據(jù),采用數(shù)據(jù)融合的方法通過軟件系統(tǒng)對數(shù)據(jù)進行處理。陀螺儀和加速度計分別獨立的進行采樣,然后將獲得的數(shù)據(jù)傳送到控制系統(tǒng)內(nèi)。通過卡爾曼濾波器進行數(shù)據(jù)融合從而可以得到此時雙輪自平衡小車較為精準的傾斜角度,經(jīng)過微控制器的運算進行驅(qū)動。對電機驅(qū)動模塊輸出控制信號就可以對車輪電機進行控制,進而實現(xiàn)小車車身的自我平衡。在雙輪自平衡小車控制系統(tǒng)的實際應(yīng)用中,目前主流的數(shù)據(jù)融合方式中濾波方法有Kalmanfiltering和互補濾波,在本文中選用Kalman濾波。卡爾曼濾波算法的運算處理步驟可以類比為系統(tǒng)的輸入信號在高斯白噪聲影響下在隨機系統(tǒng)的狀態(tài)變量。在濾波過程中,其中的輸出方程以及狀態(tài)方程決定了輸入輸出數(shù)據(jù)的相關(guān)性。該算法應(yīng)用極其廣泛,適用于平穩(wěn)隨機過程的濾波,也可以用在非平穩(wěn)或者平穩(wěn)序列或高斯-馬爾可夫序列過程的濾波。卡爾曼濾波的本質(zhì)是一種在時域的變換。因為其在狀態(tài)空間進行系統(tǒng)的描述過程,因而在系統(tǒng)濾波時所產(chǎn)生的狀態(tài)過程噪聲和測量噪聲不需要刻意進行濾除。這些噪聲中可能包含著有用的過程信號。系統(tǒng)中估計量與觀測量處于不同時段的一、二階矩陣不需要進行測量。因為卡爾曼濾波的基本方程是其在時域內(nèi)的數(shù)據(jù)遞推,從直觀上來看,整個濾波計算過程是一個不斷的“初預(yù)測-修正-再預(yù)測-修正”的進程。所以在進行運算求解時不需要進行大量數(shù)據(jù)的讀取存儲,當新的數(shù)據(jù)進入系統(tǒng)的運算控制后,與此同時新的卡爾曼濾波的數(shù)值也開始進行運算。因而此濾波方法非常適合實時處理的過程中,方便使用運算能力較弱的普通單片機來實現(xiàn),不會因為濾波過程對系統(tǒng)的正常運行造成較大的負擔(dān)。2.5本章小結(jié)通過對單擺和倒立擺的物理原理分析、推導(dǎo)得到了雙輪自平衡小車在不同運動情況下的力學(xué)模型及運動方程。介紹了PID的原理以及發(fā)展歷程,對串級PID與普通PID進行了對比分析,闡述了不同的PID參數(shù)在平衡控制和速度控制中應(yīng)用中的不同作用。在本系統(tǒng)中,采用PI控制來實現(xiàn)系統(tǒng)中速度的控制,PD來實現(xiàn)系統(tǒng)中自我平衡功能的實現(xiàn)。為了使雙輪自平衡小車在實際應(yīng)用的過程中能夠有更好的平衡效果,我們將從MPU-6000中獲取的數(shù)值采用卡爾曼濾波進行數(shù)據(jù)融合處理,以期獲得更加穩(wěn)定準確的數(shù)據(jù)。第三章系統(tǒng)硬件電路設(shè)計在進行平衡小車的硬件電路時,我們需要考慮的主要有以下幾個方面。1.需要用iic與傳感器mpu6050進行連接2.雙路pwm接口,用來對不同的電機驅(qū)動模塊進行驅(qū)動,3.采用串口與外界進行數(shù)據(jù)傳輸,4.單片機外部中斷進行車輪的測速。綜合以上所述,本系統(tǒng)可以歸為六大部分:(1)單片機最小系統(tǒng):STM32F103CCT6;(2)角度和加速度傳感器:mpu-6050;(3)車輪速度與狀態(tài)檢測;雙路霍爾磁編碼器;(4)供電模塊:航模鋰電池,降壓模塊;(5)電機驅(qū)動:TB6612FNG;(6)調(diào)試與設(shè)置;usb轉(zhuǎn)ttl模塊;總體硬件結(jié)構(gòu)如圖3-1。圖3-1系統(tǒng)硬件結(jié)構(gòu)圖3.1微控制器stm32最小系統(tǒng)在本系統(tǒng)中,最終采用STM32F103CCT6作為兩輪自平衡小車的主控芯片。此款芯片采用的是Cortex-M3內(nèi)核,是一款應(yīng)用較為廣泛的的32位微控制器,該芯片可以以最高72MHz工作頻率下長時間穩(wěn)定運行。并且在芯片內(nèi)集成32~256kB的FLASH存儲器,6~128kB的RAM存儲器。此外在其內(nèi)部還集成了眾多在開發(fā)中可能用到的接口,例如IIC、UART、485、SPI。擁有26個通用的GPIO接口,這些IO都最高可以直接輸入5v的電壓,并且可以復(fù)用。針對某些可能用到AD或是DA的場合下,芯片內(nèi)置了此類轉(zhuǎn)換功能,免去了外接模塊帶來的接線復(fù)雜的以及運行不穩(wěn)定的問題。在本設(shè)計中,采用IIC接口完成與MPU-6050傳感器模塊的控制和通信。在其內(nèi)部有多達6多功能定時計數(shù)器模塊,經(jīng)過合理的程序設(shè)計后,可以在運行過程中同時互不干擾的輸出多路PWM信號,精準的完成對電機模組的驅(qū)動控制??梢酝ㄟ^多種不同的方法完成程序的下載,例如常用的jink下載、串口下載、swd下載。原理圖如圖3-1所示:圖3-2STM32單片機最小系統(tǒng)原理圖3.2電源部分設(shè)計本文中的平衡小車使用的是在航模上應(yīng)用較為廣泛的LIPO聚合物電池,相比于傳統(tǒng)的鎳鉻電池、鎳氫電池,能量比有了顯著的提高。且不會有記憶效應(yīng),還易于保存。由于其原理的特性,可以持續(xù)的提供大電流輸出且不會對電池容量造成任何影響。并且其大容量的特性可以避免在調(diào)試時頻繁的更換電池。可以滿足本系統(tǒng)在長時間運行調(diào)試時的電量需求。在進行設(shè)計時考慮到不同廠家設(shè)計的芯片有著不同的工作電壓。系統(tǒng)采用電源驅(qū)動電路來進行變壓和穩(wěn)壓,用來提供不同模塊的工作電壓。本文選用MPS2307DN與ASM1117-3.3的組合實現(xiàn)降壓功能。圖3-3降壓以及穩(wěn)壓電路原理圖3.3運動傳感器模塊在傳感器的選擇上,我們選用了MPU-6050。這是一款目前用途較為廣泛的芯片,在消費級電子產(chǎn)品以及專業(yè)設(shè)備上都有應(yīng)用。在其內(nèi)部擁有完整的6軸運動模組。相比較于其他廠家的芯片,擁有顯著的優(yōu)點。例如其擁有目前最小的封裝,并且還可以有效避免了陀螺儀與加速量所存在的時間軸差值的影響。此芯片能以數(shù)字信號的形式完成6軸的旋轉(zhuǎn)矩陣參數(shù)、歐拉角格式、四元數(shù)的融合演算數(shù)據(jù)的輸出。由于其結(jié)構(gòu)的優(yōu)點,最高可以自行設(shè)定敏感度為130LSBs/°/sec。此外還擁有全向運動模式檢測功能的3軸陀螺儀模組,全部參數(shù)都可以進行由上位機設(shè)定完成。且其控制范圍為±2g、±4g、±8g、±16g。由于結(jié)構(gòu)的關(guān)系,消除了加速度計和陀螺儀軸間相關(guān)干擾,受溫度變化的影響較小。與其他產(chǎn)品不同的是其內(nèi)部擁有數(shù)字運動處理引擎DMP。可以顯著減少傳感器中復(fù)雜的融合演算數(shù)據(jù)、感測器同步化、姿勢感應(yīng)等負荷。還同時擁有可以數(shù)位輸出的高精度溫度傳感器。支持姿態(tài)識別、姿態(tài)搖動感應(yīng)、滾動模式控制、垂直運動中斷、G數(shù)限制輸出、無動作感應(yīng)輸出、高頻震動模式感應(yīng)等新模式控制。在接口方面,擁有400kHz快速模式的IIC接口,或20MHz的SPI接口。方便與其他的外設(shè)進行相互通信。圖3-5是MPU6050的外設(shè)連接電路原理圖:通過其數(shù)據(jù)手冊得知其IIC接口都需要被單片機上拉。因為其較小的封裝,內(nèi)部沒有提供降壓功能,所以需要外部提供其正常工作所需要的3.3V電壓。由于在出廠時提供了豐富的接口和IIC接口的特性,可以通過接口級聯(lián)其它模塊,并且不會占用更多的IO接口。圖3-5MPU6050的外設(shè)連接電路原理圖3.4直流電機驅(qū)動模塊TB66F12G本文所采用的TB66F12G芯片為日本東芝半導(dǎo)體公司旗下最新生產(chǎn)的大功率直流電機驅(qū)動模塊。采用其最新的MOSFET架構(gòu),在實際應(yīng)用中可以進行雙路驅(qū)動。和傳統(tǒng)的L298N比較,兩者有一定的共同點。然而,與傳統(tǒng)L298N的高熱量和復(fù)雜的二極管的電流續(xù)流電路相比較,TB66F12G一般情況無需額外散熱,外圍電路簡潔,電機可以直接由外部電源濾波后連接對應(yīng)的電容進行驅(qū)動。選用合適的電機使堵轉(zhuǎn)電流小于TB6612FNG最大輸出電流3.2A,利于保障系統(tǒng)的穩(wěn)定性并且可以減小小車的尺寸。對于PWM信號的輸入頻率范圍,100KHz以下的頻率可以滿足系統(tǒng)的要求。在實際使用中,VM直接連接電源即可。VCC為模塊內(nèi)部的邏輯供電引腳,使用5v的電壓進行供電即可,模塊擁有的3個GND都需要進行接地。STBY引腳上拉后模塊才能正常工作。這里以A路為例,模塊中的A01引腳與A02引腳分別連接對應(yīng)電機的+和-。通過對應(yīng)的PWA引腳,AIN2引腳,AIN1引腳對電機進行輸出控制。其中PWMA引腳可以直接連接到微控制器對應(yīng)的PWM輸出引腳,本文選用10KHZ的頻率進行驅(qū)動,此時系統(tǒng)可以通過改變輸出的PWM脈沖的占空比來調(diào)節(jié)電機的速度。下面輸入值對應(yīng)的真值表:AIN1010AIN2001停止正轉(zhuǎn)反轉(zhuǎn)圖3-7TB6612FNG原理圖3.5霍爾式編碼器模塊在兩輪智能自平衡小車運行過程中,系統(tǒng)需要采集多種物理量。例如車體傾斜角度、運動速度等物理量??梢酝ㄟ^6050輸出的加速度值來對速度值進行估算,但是并不準確。因為小車的兩個車輪與車速直接相關(guān)。為了更加準確的獲取速度值,需要對小車車輪的轉(zhuǎn)速進行檢測。編碼器可以解決上述的問題。而編碼器從其出現(xiàn)到現(xiàn)在的逐漸成熟,已經(jīng)出現(xiàn)了許多不同原理的編碼器。考慮到小車實際使用的環(huán)境,本系統(tǒng)中使用的是霍爾編碼器。通過檢測連接在車軸上的磁體相對于感測器的相對位移來輸出對應(yīng)的脈沖信號。在結(jié)構(gòu)上由圓形磁體和檢測模塊組成。無需額外的電路,可以連接到單片機IO進行數(shù)據(jù)的讀出?;魻柎a板均勻地布置在具有不同磁極的圓板上。當霍爾碼盤與電機同軸旋轉(zhuǎn)時,霍爾元件檢測并輸出多個脈沖信號,為了準確判斷電機旋轉(zhuǎn)方向,因為編碼器擁有兩相輸出且都為方波信號,所以當系統(tǒng)想要獲取車輪的轉(zhuǎn)速時。需要對這兩個信號進行采集,這需要用到定時器,為了減小系統(tǒng)的運行負擔(dān),本文只對兩相中的一相進行采集。因為兩相輸出的波形與頻率完全一致,只是相差了二分之一周期。只有在需要對車輪運行方向進行判斷的時候,才會同時對兩相進行采集。此處將兩相分別命名為x,y。當采集到的信號中x相提前與y相,則此時車輪為順時針旋轉(zhuǎn)。反之若是y相提前與x相,車輪則是逆時針旋轉(zhuǎn)。正反旋信號的相位關(guān)系見圖3-8所示。圖3-8正反旋信號相位圖增量式霍爾編碼器輸出為方波信號,由于其自帶上拉電阻,所以其輸出的信號可直接應(yīng)用微處理器進行讀取。對于沒有編碼器接口的微控制器,如51單片機??梢酝ㄟ^外部中斷的方式進行數(shù)據(jù)的讀取操作,將編碼器x相輸出連接到單片機的外部中斷接口,在檢測到信號的跳變沿時觸發(fā)外部中斷,進入對應(yīng)的中斷服務(wù)程序中。再對y相的電平信號進行讀取來確定車輪的轉(zhuǎn)動方向。由于在本次設(shè)計中選用了STM系列微控制器,而其本身具有的TIM模塊可以進行編碼器信號的采集。我們可直接在程序中進行設(shè)定。圖3-9為霍爾編碼器。圖3-9霍爾編碼器3.6串口轉(zhuǎn)換模塊因為日常在單片機調(diào)試中用到的最多的是串口。所以在本次的設(shè)計中,調(diào)試時應(yīng)用串口向外界打印系統(tǒng)運行信息。單片機想要與上位機進行通信,需要對傳輸?shù)男盘栠M行轉(zhuǎn)換。此時就需要用到串口轉(zhuǎn)換芯片了。市面上的轉(zhuǎn)換芯片有許多個種類。本文選用國產(chǎn)的ch340g,具有優(yōu)越的轉(zhuǎn)換性能。并且其價格低廉,具有極大的優(yōu)點。通過外接模塊來實現(xiàn)USB與TTL互相轉(zhuǎn)換的功能,見圖3-10。圖3-10串口轉(zhuǎn)換電路圖3.7章節(jié)總述在本章中,對構(gòu)成平衡小車的各部分硬件進行了闡述說明。介紹了其原理以及使用中的注意事項。同時也對不同的模塊的電路圖進行了展示,只有選取合適的硬件來完成對小車的硬件搭建工作,才會在接下來的軟件編程中更加順利。小車由下列幾大模塊構(gòu)成,直流電機驅(qū)動模塊、微控制器、磁編碼器、角度檢測傳感器。我們完成了對系統(tǒng)硬件進行設(shè)計并焊接,完成焊接后為第四章編程程序部分打下基礎(chǔ)。第四章程序設(shè)計在合理的硬件基礎(chǔ)上,運行平穩(wěn)高效的軟件程序,才能將預(yù)定功能實現(xiàn)。軟件程序部分主要包括以下幾個功能。包括:系統(tǒng)程序初始化,MPU6050對信號的獲取與監(jiān)測,數(shù)據(jù)融合算法,自平衡車運行算法(包括直立算法和速度算法),以及電機PWM輸出。4.1程序結(jié)構(gòu)與組成主程序控制過程流程如圖4-1所示:圖4-1主程序控制過程流程圖程序的初始化分為三個板塊,第一板塊是對于STM32在此系統(tǒng)中的所應(yīng)用到的各類模塊進行初始化。第二板塊是將小車在運行過程中運用到的各種參量和變量初始化,第三板塊是定時器的初始化。其中第一部分的程序如下: voidBspInit(void)//對于各個模塊的初始化 { SWDConfig();//使能SWD調(diào)試端口 USART1Init();//初始化串行通信接口 TIM3_PWM_Init();//初始化PWM TIM2_Encoder_Init();//初始化編碼器 TIM4_Encoder_Init(); i2cInit();//模擬IIC初始化 MPU6050_Init();//MPU6050初始化 }在調(diào)試的時候需要一直獲取程序的運行狀態(tài)且不能影響進程的正常進行,應(yīng)用定時器定時通過串口1向上位機發(fā)送小車的相關(guān)數(shù)據(jù)。應(yīng)用上位機軟件進行處理顯示。接下來為MAIN函數(shù)部分: intmain(void) { BspInit(); CarUpstandInit();//初始化系統(tǒng)參數(shù) SysTick_Init();//初始化定時器 while(1) { if(SoftTimer[1]==0) { SoftTimer[1]=20;//每隔50ms執(zhí)行一次 DebugService();//串口中斷服務(wù)函數(shù) } } }4.2傳感器數(shù)據(jù)讀取4.2.1.傳感器數(shù)據(jù)輸出采集函數(shù)因為需要在小車的運動中不斷獲取大量數(shù)據(jù),其中較為重要和關(guān)鍵的是MPU-6050的回傳數(shù)據(jù),以用來計算小車的車體角度。相應(yīng)的程序如下: voidSampleInputVoltage(void) { /*此處不作任何濾波處理*/ g_fGyro_y=DataSynthesis(GYRO_YOUT_H);//陀螺儀Y軸 g_fAccel_x=DataSynthesis(ACCEL_XOUT_H);//加速度X軸 g_fAccel_y=DataSynthesis(ACCEL_YOUT_H);//加速度Y軸 g_fAccel_z=DataSynthesis(ACCEL_ZOUT_H);//加速度Z軸 }4.2.2.直流電機脈沖信號檢測處理函數(shù)程序中需要對微控制器相對應(yīng)的寄存器進行讀取操作,獲取此時的速度值。再通過與下一次獲取數(shù)據(jù)進行比對來判斷車輪方向,并且計算車輪轉(zhuǎn)速。以下為部分程序: voidGetMotorPulse(void) {/*讀出T3T4寄存器數(shù)據(jù),得到速度原始值*/ g_iRightMotorPulse=(T4H<<8)+T4L; g_iLeftMotorPulse=(T3H<<8)+T3L; T4T3M&=0x77; T4H=T4L=0; T3H=T3L=0; T4T3M|=0xCC; /*通過前一次PWM輸出判斷電機正反轉(zhuǎn)*/ If(!MOTOR_LEFT_SPEED_POSITIVE)g_iLeftMotorPulse=-g_iLeftMotorPulse; if(!MOTOR_RIGHT_SPEED_POSITIVE)g_iRightMotorPulse=-g_iRightMotorPulse; /*8毫秒執(zhí)行一次,速度環(huán)控制函數(shù)在循環(huán)10+后執(zhí)行一次,需要獲取的脈 沖數(shù)據(jù)存儲*/ g_iLeftMotorPulseSigma+=g_iLeftMotorPulse; g_iRightMotorPulseSigma+=g_iRightMotorPulse;4.3采用卡爾曼濾波實現(xiàn)的數(shù)據(jù)融合根據(jù)卡爾曼濾波原理,想要預(yù)估系統(tǒng)在A點角度,則需要其余時刻的角度來對此時的角度進行預(yù)測處理。這樣就可以獲得A點所擁有的高斯白噪聲誤差量。在實際運行中,傳感器測量的角速度被看作理想的預(yù)估值。而加速度計回傳的角度數(shù)據(jù)則作為實際檢測結(jié)果,系統(tǒng)會根據(jù)他們之間的協(xié)方差來進行遞歸運算直到估計出最優(yōu)的傾斜角度。經(jīng)過實際的測試,設(shè)定參數(shù)f為0.51。系統(tǒng)在此時運行較為平穩(wěn),擁有較好的平衡效果。具體實現(xiàn)的程序如下: VoidAngleCalculate(void) { g_fGravityAngle=(g_fAccel_y-GRAVITY_OFFSET)/16384.0; g_fGravityAngle=g_fGravityAngle*1.2*180/3.14; g_fGyro_x=(g_fGyro_x-GYRO_OFFSET)/16.4; g_fGyroAngleSpeed=g_fGyro_x; g_fCarAngle=0.98*(g_fCarAngle+g_fGyroAngleSpeed*0.008)+0.02*g_fGravityAngl e; }4.4串級PID控制過程在第二章節(jié)中已有關(guān)于串級PID算法的簡單介紹,本章的內(nèi)容主要是關(guān)于如何在程序中實現(xiàn)相關(guān)的算法。4.4.1豎直狀態(tài)PD控制為了更好的對小車平衡狀態(tài)進行調(diào)整,可以通過在程序中調(diào)整提前設(shè)定好的參數(shù)來獲得更好的平衡效果。如圖4-1所示:圖4-1直立狀態(tài)PD控制流程圖 程序如下: voidAngleControl(void) { g_fAngleControlOut=g_fCarAngle*g_tCarAnglePID.P+g_fGyroAngleSpeed* (g_tCarAnglePID.D); }這里因為零偏角和預(yù)設(shè)角速度都為0,所以在程序中未進行添加。微分變量直接采用的是陀螺儀的角速度值,將函數(shù)的輸出值作為PWM輸出值。再對PWM的輸出量進行一定的限幅設(shè)置,即可使得小車直立。4.4.2PI控制小車速度在本文的設(shè)計需求中不僅僅要求小車在運動中能夠保持車體垂直,同樣也應(yīng)該能在靜止狀態(tài)下保持車體垂直。應(yīng)用積分來去除系統(tǒng)在運行中積累的誤差量。實際中應(yīng)用編碼器獲得平衡車的實時車輪轉(zhuǎn)速,與系統(tǒng)中的設(shè)定速度值進行相減運算。得到需要的誤差值,從而能夠完成PI運算過程。過程如圖4-3所示:圖4-2速度PI控制流程圖程序如下: voidSpeedControl(void) { floatfP,fI; floatfDelta; g_fCarSpeed=(g_s32LeftMotorPulseSigma+g_s32RightMotorPulseSigma)*0.5; g_s32LeftMotorPulseSigma=g_s32RightMotorPulseSigma=0;//全局變量清零 g_fCarSpeed=0.7*g_fCarSpeedOld+0.3*g_fCarSpeed;//低通濾波減少積分控制影響 g_fCarSpeedOld=g_fCarSpeed; fDelta=CAR_SPEED_SET; fDelta-=g_fCarSpeed; fP=fDelta*(g_tCarSpeedPID.P); fI=fDelta*(g_tCarSpeedPID.I/10.0);g_fCarPosition+=fI;//積分上限設(shè)置限度 If((s16g_fCarPosition>CAR_POSITION_M)g_fCarPosition=CAR_POSITION_MAX; If((s16)g_fCarPosition<CAR_POSITION_MIN)g_fCarPosition=CAR_POSITION_MIN;g_fSpeedControlOutOld=g_fSpeedControlOutNew; g_fSpeedControlOutNew=fP+g_fCarPosition; }若想實現(xiàn)對運行過程中車速的控制,可以改變速度預(yù)設(shè)值CAR_SPEED_SET。4.5直流電機PWM控制在控制過程對車輪直流電機進行控制時,需要將對應(yīng)的PID控制算法輸出量進行疊加,得到驅(qū)動電機的控制量。再通過控制占空比來控制輸出電壓的大小,進而控制直流電機的轉(zhuǎn)速。該算法主要流程框如圖4-3所示:圖4-3電機控制流程圖以下是微控制器對直流電機進行PWM控制輸出的程序: voidMotorOutput(void){ g_fLeftMotorOut=g_fAngleControlOut-g_fSpeedControlOut; g_fRightMotorOut=g_fAngleControlOut-g_fSpeedControlOut;if((int)g_fLeftMotorOut>0)g_fLeftMotorOut+=MOTOR_OUT_DEAD_VAL; Elseif((int)g_fLeftMotorOut<0)g_fLeftMotorOut-=MOTOR_OUT_DEAD_VAL; If((int)g_fRightMotorOut>0)g_fRightMotorOut+=MOTOR_OUT_DEAD_VAL; Elseif((int)g_fRightMotorOut<0)g_fRightMotorOut-=MOTOR_OUT_DEAD_VAL; //輸出飽和處理,防止超出PWM范圍 If((int)g_fLeftMotorOut>MOTOR_OUT_MAX)g_fLeftMotorOut=MOTOR_OUT_MAX; If((int)g_fLeftMotorOut<MOTOR_OUT_MIN)g_fLeftMotorOut=MOTOR_OUT_MIN; If((int)g_fRightMotorOut>MOTOR_OUT_MAX)g_fRightMotorOut=MOTOR_OUT_MAX; If((int)g_fRightMotorOut<MOTOR_OUT_MIN)g_fRightMotorOut=MOTOR_OUT_MIN; SetMotorVoltageAndDirection((int)g_fLeftMotorOut,(int)g_fRightMotorOut); }4.6程序不足總結(jié)與反思經(jīng)過一段時間的調(diào)試,兩輪智能平衡小車已經(jīng)可以實現(xiàn)自我平衡控制的目標。但是在這之中也存在著不足的地方。可以在高速平衡和精準控制方面做一些改進。但是在提高車輛速度的同時也要對其安全性進行考慮。如何消除小車在靜止狀態(tài)出現(xiàn)的車身抖動。在運行的過程中,有的時候會出現(xiàn)電機發(fā)熱的情況,雖然未對小車的控制造成影響,但是這也時可能影響小車系統(tǒng)穩(wěn)定性的一個因素。對此,可以在控制過程中加入對于電機的保護參數(shù)。以免電機在極端情況下?lián)p壞。因為小車恢復(fù)自我平衡的能力是有限的,當小車的自重較大或是加了負載以后,車輛的平衡控制狀態(tài)會發(fā)生改變,有時就不能恢復(fù)到車身豎直狀態(tài)。這個時候,PID控制會一直正反饋加大對電機的控制輸出。可以對小車的傾角進行檢測,若大于先前設(shè)定的閾值,則需要切斷對電機的控制信號,以保證設(shè)備的安全。4.7本章內(nèi)容總結(jié)本章中針對平衡小車程序的各個部分進行了功能闡述與技術(shù)細節(jié)討論,包括用互補濾波進行數(shù)據(jù)融合,以此獲得更加精確的角度值,對小車平衡方式的控制采用較為成熟的串級pid。從而實現(xiàn)對小車更加精確的控制。以流程圖的形式對具體的控制算法進行了說明。在最后提出了可以進行改進的建議。第五章整車調(diào)試檢測經(jīng)過前幾章的硬件設(shè)計與軟件編寫,已經(jīng)做好了兩輪智能自平衡小車的測試準備工作。但是想到得到更好的效果,還需要對小車中的各類控制參數(shù)進行細微調(diào)整,尋找到最合適的那一組參數(shù)。所以調(diào)參在整個制作過程中是極為重要的。5.1軟件測試平臺簡介微控制器提供的調(diào)試接口為傳統(tǒng)的SWD接口,采用該接口通過J-link進行程序下載、調(diào)試。IDE采用的是KEIL5MDK,是由KEIL公司在2012年出發(fā)布的一款針對ARM系列以及cortex-M內(nèi)核的開發(fā)工具。在其環(huán)境下應(yīng)用傳統(tǒng)的C語言進行開發(fā)調(diào)試工作,在軟件中可以方便的完成斷點測試任務(wù)。并且其內(nèi)部還集成了多種下載器。其開發(fā)工具界面如圖5-1:圖5-1IDE開發(fā)界面5.2姿態(tài)檢測系統(tǒng)調(diào)試本系統(tǒng)中運用MPU6050運動處理傳感器構(gòu)建的姿態(tài)檢測系統(tǒng)是進行系統(tǒng)控制的基礎(chǔ)。其測量數(shù)據(jù)的精度對于實驗結(jié)果也具有很大的影響,直接影響著小車能否完成自平衡的任務(wù)。在系統(tǒng)實際運行過程中,陀螺儀和加速度計存在不同頻段的噪聲而會在檢測過程中產(chǎn)生一定的誤差。并且系統(tǒng)內(nèi)部可能存在控制誤差,為了減弱直至消除噪聲對系統(tǒng)穩(wěn)定運行帶來的影響。首先需要確認6050是否能夠正常獲取數(shù)據(jù)。在測試環(huán)節(jié)應(yīng)用串口打印將接收到的數(shù)據(jù)發(fā)送到上位機,從而獲得實時變化的圖像,結(jié)合小車此時的實際狀態(tài)來判斷傳感器是否正常。如果在調(diào)試過程中出現(xiàn)問題,找出對數(shù)據(jù)處理存在干擾的干擾源,可以從兩方面入手,在程序中加強濾波的效果,或者在硬件電路中尋求解決。使MPU6050可以正常工作,輸出準確的角度和加速度數(shù)據(jù)。圖5-2為串口調(diào)試。圖5-2串口數(shù)據(jù)接收5.3雙輪自平衡小車直立控制PID參數(shù)的設(shè)定在本系統(tǒng)中控制部分采用的是閉環(huán)串級PID控制算法,因為其參數(shù)具有不確定性,所以PID控制參數(shù)需要通過多次實驗驗證所調(diào)整參數(shù)的合理性,不斷試驗直到尋找到能使雙輪自平衡小車平衡控制系統(tǒng)實現(xiàn)較為穩(wěn)定的自平衡控制的最佳參數(shù)。以下為雙輪自平衡小車的姿態(tài)環(huán)的PID參數(shù)調(diào)試過程:首先對Kp的值進行階段性調(diào)整,使雙輪自平衡小車保持垂直方向得穩(wěn)定狀態(tài)。在這個時候,雙輪自平衡小車會在一定范圍內(nèi)振蕩,但仍然可以保持平衡。2.第二步對雙輪自平衡小車的Kp值進行調(diào)整,調(diào)整為原先參數(shù)的80%。再慢慢的對Kd的值進行調(diào)整,當雙輪自平衡小車可以保持平衡時,停止調(diào)整Kd參數(shù)的數(shù)值。3.精細調(diào)整在上面兩個步驟中已經(jīng)調(diào)整過的Kp與Kd的數(shù)值,可以將Kp的數(shù)值增加,然后針對參數(shù)Kd進行細微的調(diào)整微調(diào),以尋求最穩(wěn)定的平衡狀態(tài)。通過多次的嘗試與實驗,最終得到以下的參數(shù)。Kp=6.35,Kd=0.72。在以上參數(shù)時,經(jīng)過多次的驗證實驗,雙輪自平衡小車能在較短的時間內(nèi)恢復(fù)平衡穩(wěn)定狀態(tài)并且保持。以上為雙輪自平衡小車的平衡控制PID參數(shù)的調(diào)整設(shè)定過程。采用同樣的方法對運行速度PID參數(shù)進行調(diào)試,最終的調(diào)試結(jié)果為在Ksp=6.55時,雙輪之自平衡小車能夠以較快的速度達到穩(wěn)定的平衡狀態(tài)。通過前期的理論分析我們可以得知。在雙輪自平衡小車進行自我平衡控制的過程中,如果施加一個外力來打破平衡狀態(tài),此時雙輪自平衡小車的受力狀態(tài)會發(fā)生改變,此時需要小車快速對自身的姿態(tài)的改變做出調(diào)整動作。通過驅(qū)動電機的轉(zhuǎn)動改變軸向的受力,重新調(diào)整姿態(tài)來達到一個新的平衡狀態(tài)。在剛剛開始進行調(diào)試的時候,雙輪自平衡小車能夠?qū)ψ藨B(tài)的變化做出相應(yīng)的調(diào)整動作。但存在不確定性以及震蕩,需要較長的時間才能恢復(fù)穩(wěn)定的平衡狀態(tài)。在調(diào)整過程中,不斷修正相關(guān)的PID參數(shù),讓雙輪自平衡小車可以實現(xiàn)對姿態(tài)變化的快速響應(yīng)與調(diào)整。經(jīng)過參數(shù)調(diào)整的雙輪自平衡小車平衡姿態(tài)時效如圖所示。系統(tǒng)通電后,雙輪自平衡小車完成自我平衡調(diào)整所用的時間6s。在實驗過程中所用的普通混凝土地面上,雙輪自平衡小車自我可控的傾斜角度范圍約為15度。如果在小車保持穩(wěn)定平衡狀態(tài)時對其施加一定外來作用力,可以在較短的時間內(nèi)恢復(fù)自我平衡穩(wěn)定狀態(tài)。5.4本章小結(jié)本章主要闡述雙輪自平衡小車控制系統(tǒng)各個關(guān)鍵的模塊的調(diào)試過程以及相關(guān)的方法。同時也詳細的介紹了Kalman濾波中的參數(shù)的調(diào)整與相應(yīng)的串級PID控制系統(tǒng)中相關(guān)的參數(shù)的調(diào)整設(shè)定。通過不斷的調(diào)整與實驗,使雙輪智能自平衡小車可以完美的實現(xiàn)平衡功能。并且在此基礎(chǔ)上,具有一定的帶載能力,達到本文開頭所預(yù)期的預(yù)期的效果。第六章文章總結(jié)6.1總結(jié)本文對雙輪智能自平衡小車的硬件部分進行了分析與設(shè)計,并在完成相對應(yīng)的硬件結(jié)構(gòu)后進行了相關(guān)參數(shù)的調(diào)整測試。制作完成基于串級PID算法進行自我平衡保持的雙輪自平衡小車,該雙輪自平衡小車可以進行速度的控制與自我平衡調(diào)節(jié)。在進行雙輪自平衡小車的硬件電路的設(shè)計工作時,選用ST公司的STM32F103cct6為本系統(tǒng)中的主控芯片。其具有豐富外設(shè)和較高的主頻,完全可以滿足設(shè)計需求。在系統(tǒng)電源設(shè)計時,為了系統(tǒng)在運行時更加的穩(wěn)定,選取了芯片MPS2307DN和ASM1117-3.3分別負責(zé)不同的降壓功能。為系統(tǒng)內(nèi)的其他模塊提供相應(yīng)的工作電壓。在驅(qū)動模塊的部分,TB6612FNG作為電機驅(qū)動模塊。因其具有較大的工作電流以及相對其他模塊較為小巧的體積,方便了在系統(tǒng)中的放置。節(jié)約了系統(tǒng)內(nèi)的空間,提高了系統(tǒng)運行的穩(wěn)定性。為了進一步提高平衡控制的效果,在系統(tǒng)中將編碼器和姿態(tài)模塊相結(jié)合進行控制。使其具備了自我平衡保持及速度控制的功能。在軟件部分,重點在軟件程序的結(jié)構(gòu)和算法,為了讓系統(tǒng)具有更好的穩(wěn)定性,在進行設(shè)計時對硬件部分也進行了考慮。因為系統(tǒng)內(nèi)選取的MPU6050傳感器具有一定的噪聲濾除的功能。我們在進行軟件部分的設(shè)計時間選取了卡爾曼濾波的數(shù)據(jù)融合方式,對傳感器回傳的數(shù)據(jù)進行相應(yīng)的運算。以此以期望獲得精度更高的數(shù)據(jù)。在兩輪智能平衡車的主要平衡算法中,采用具有較高精度和穩(wěn)定性的串級PID算法。并且對雙輪自平衡小車的不同的受力狀態(tài)進行了理論層面的分析計算。在硬件結(jié)構(gòu)設(shè)計完成后,進行了PID參數(shù)的調(diào)整測試,使雙輪自平衡小車具有更好的抗干擾性。致

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論