【基于STM32單片機的兩輪小車自平衡控制系統(tǒng)設計】10000字(論文)_第1頁
【基于STM32單片機的兩輪小車自平衡控制系統(tǒng)設計】10000字(論文)_第2頁
【基于STM32單片機的兩輪小車自平衡控制系統(tǒng)設計】10000字(論文)_第3頁
【基于STM32單片機的兩輪小車自平衡控制系統(tǒng)設計】10000字(論文)_第4頁
【基于STM32單片機的兩輪小車自平衡控制系統(tǒng)設計】10000字(論文)_第5頁
已閱讀5頁,還剩26頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

基于STM32單片機的兩輪小車自平衡控制系統(tǒng)設計摘要本設計是對本質不穩(wěn)定的兩輪小車自平衡控制問題的研究,擬設計一種兩輪自平衡的小車系統(tǒng),并且實現(xiàn)藍牙控制小車運動。該系統(tǒng)裝置大致可分成步進電機電路、姿態(tài)解算電路、藍牙控制電路三個電路。步進電機電路運用A4988驅動模塊實現(xiàn)對HJ-42混合式步進電機的驅動;姿態(tài)解算電路融合了四元互補濾波算法和PID(ProportionIntegralDifferential)算法,在MPU6050六軸陀螺儀實時獲取系統(tǒng)的姿態(tài)信息的基礎上進行算法控制,以實現(xiàn)小車的直立平衡;藍牙控制電路運用SPP-CA藍牙模塊,實現(xiàn)對小車的簡單運動控制。本設計的其余電路還包括電源電路、8M晶振電路、電池電壓采集電路等。本次設計是以STM32單片機為核心,結合相關算法、硬件外設等使本質不平衡的小車系統(tǒng)實現(xiàn)直立平衡,并由藍牙控制其運動。該設計能勝任在一些狹窄、有大轉角等工作場合的執(zhí)行任務,有望日后在軍用和民用領域大量運用。本設計的實現(xiàn)具有多方面的優(yōu)勢,主要有:功耗較低,反應速度較快,控制簡便,運動靈活等。關鍵字:二輪自平衡車;STM32F103C8T6;MPU6050;PID算法;目錄1.TOC\o"1-3"\h\u17873引言 -1-1.引言隨著生活水平的提高、醫(yī)療技術的提升,世界人口數(shù)量屢創(chuàng)新高。而由于飛機、高鐵等交通工具的發(fā)展,全球范圍內的人員流動更加頻繁、世界各國的物理界限被抹平,各類突發(fā)事件更容易在世界范圍內蔓延,而二輪自平衡小車的設計就能很好適應各類重大風險的要求。同時,隨著科技水平的不斷提升,科學技術是第一生產(chǎn)力的觀念也更加深入人心,全世界各國的科學家們都在不斷地朝著科學技術的廣度和深度探索。此時,能在一些狹窄、大轉角的工作場合行動自如的二輪自平衡車,逐漸引起了各國科研工作者的關注,逐漸走進了大眾的視野。為了在一些人力無法到達的極端狹窄、大轉角的工作場合,實現(xiàn)救災時的人員搜救、必要的安全排查等要求,體積小但靈敏便捷的二輪自平衡車應運而生,發(fā)展勢頭迅猛。就目前而言,單片機成本低廉、功能強大,PID算法、互補濾波算法等各類算法已發(fā)展成熟,適配單片機的各類型硬件拆裝方便。因此,結合了單片機技術與各類復雜算法、硬件裝置的二輪自平衡車很有可能是未來平衡機器人的發(fā)展趨勢。將二輪自平衡車應用于救災搜救、安全排查等警用、軍用工作場合,既降低人力成本、緩解勞動力短缺的現(xiàn)狀,又激發(fā)了平衡車行業(yè)的前景、優(yōu)化了平衡車行業(yè)的生態(tài)。此外,基于單片機的二輪自平衡車還具有功耗低、精度高、反應速度快、控制簡單方便等不可替代的優(yōu)勢,在未來有望成為造福大眾的代步工具乃至娛樂工具,值得進一步的研究與開發(fā)。2.概述2.1研究的背景和意義隨著研究的進一步深入,移動機器人需要適應的環(huán)境越來越復雜,需要執(zhí)行的任務難度也越來越高,移動機器人技術不改革創(chuàng)新的話,將難以滿足現(xiàn)代經(jīng)濟、政治、生活的各方各面的需求。尤其是遇到狹窄、大轉角的工作地點時,傳統(tǒng)的人力搜救難以到達、傳統(tǒng)的器械探尋總會遭遇死角,那么為了使二輪自平衡小車在各類錯綜復雜的環(huán)境中快速有效的執(zhí)行任務,需要我們繼續(xù)努力。兩輪自平衡小車是一種具有多變量、非線性、強耦合等等特點的移動機器人,各種控制方法可以通過該系統(tǒng)得到檢驗,而高度不穩(wěn)定是其本質特征。此外,它還有很多優(yōu)勢,例如體積小、運動靈活、零轉彎半徑等,未來將會在警用、軍用以及企業(yè)。那么,隨著技術的進步以及行業(yè)的不斷成熟,二輪自平衡車很大概率會進入民用領域,成為大眾的代步工具乃至娛樂工具指日可待。2.2國內外研究的現(xiàn)狀與發(fā)展趨勢最早開始對自平衡車研究的是日本電氣通信大學的KazuoYamafuji教授,他采用DSP(DigitalSignalProcess)處理器研究制造的移動機器人,是兩輪自平衡車的雛形,更是自平衡車這一概念商業(yè)化、產(chǎn)品化,并逐漸形成完成的產(chǎn)業(yè)鏈的開端。但是教授所設計的平衡車在重心和行駛方向等方面也存在不足。但是當時多學科交叉融合的科研趨勢尚不明朗,技術相對落后,所以自平衡車系統(tǒng)所能夠實現(xiàn)的功能相對比較粗糙,但是經(jīng)過了半個多世紀的發(fā)展,二輪自平衡車的發(fā)展己經(jīng)從量的積累飛躍至質的突破。雖然我國從前的科學技術不夠發(fā)達,對于平衡車的研究起步比較晚。但自改革開放以來,我國對科技創(chuàng)新越來越重視,“科技強國”戰(zhàn)略等一系列政策、舉措,都在推動著我國在科技領域勇往直前、奮起直追,在科技創(chuàng)新的各領域不斷實現(xiàn)由追趕向并跑,甚至某些領域引領科技前沿的重大突破。自上世紀70年代起,我國有計劃的從國外引進有關智能機器人的技術,在摸索中實現(xiàn)新的突破,由此我國的平衡機器人技術不斷實現(xiàn)重大突破。近些年,我國國內科技水平不斷提高,科研氛圍不斷濃郁,我國的科研工作者賡續(xù)奮斗,突破自我勇于改革創(chuàng)新,實現(xiàn)了突破性進展,所設計出的產(chǎn)品性能得到進一步優(yōu)化,體驗性更加優(yōu)越,更具人性化,深受市場歡迎,甚至實現(xiàn)了自平衡車的產(chǎn)業(yè)化、商業(yè)化,助力行業(yè)的發(fā)展。自平衡車的功能更是包羅萬千,涉及代步、娛樂、競賽等諸多領域。同時,我國的自平衡車品牌在國際自平衡車市場的市場占有率也很高,新世紀i-ROBOT,騎客CHIC等品牌就十分具有代表性。圖STYLEREF1\s2-SEQ圖\*ARABIC\s11iROBOT實物圖3.總體設計3.1總體結構設計本設計為基于單片機的二輪小車自平衡系統(tǒng),實現(xiàn)本質不平衡的二輪小車的直立平衡與藍牙控制運動。本設計由MPU6050六軸加速度計獲取小車的實時姿態(tài)信息,通過PID算法與四元互補濾波算法相融合的算法計算,實現(xiàn)小車的直立平衡;通過SPP-CA藍牙模塊實現(xiàn)用藍牙控制小車的運動。經(jīng)過多次調試,盡可能達到直立平衡更穩(wěn)定、藍牙控制反應更靈敏的狀態(tài)。此外,電機驅動電路采用A4988驅動模塊來驅動42步進電機。該系統(tǒng)具有功耗低、反應快、控制簡單靈敏的優(yōu)勢,能夠在一些狹窄、有大轉角等工作場合的執(zhí)行任務,用作警用、軍用裝置。相信在不久的將來,有效降低成本、提升技術后,能推廣至民用領域,發(fā)展成代步工具、娛樂產(chǎn)品等。本畢業(yè)設計的系統(tǒng)結構如圖所示。圖3–1總體系統(tǒng)結構圖3.2電機驅動控制本畢業(yè)設計目的是制作一款能控制運動的平衡小車,因此需要電機的驅動。在這里選擇兩個HJ-42混合式步進電機,并運用A4988驅動模塊分別驅動左右電機,為小車的左右兩個輪子提供動力,驅使其運動。3.3直立平衡控制控制小車平衡就與讓一個直木棒在手指尖上保持直立的原理一致。通過手掌的前后左右移動來抵消木棒的傾斜角度和趨勢,從而使木棒保持直立平衡。這個過程實際上就是控制中的負反饋控制。圖3–SEQ圖\*ARABIC\s32木棒控制原理圖保持小車的平衡相比于保持木棒平衡要簡單些,只需控制其在一維空間上的平衡即可,也就是小車只需沿著輪胎方向前后移動保持直立平衡。圖3–SEQ圖\*ARABIC\s33小車平衡的三種狀態(tài)因此,使本質不平衡的小車保持直立平衡,一方面需要收集小車的實時姿態(tài)信息,包括角度變化與速度變化,另一方面控制小車的運動來抵消小車的角度和速度變化。本設計運用MPU6050實時采集獲取小車的姿態(tài)信息,通過四元互補濾波算法與PID算法進行處理運算,進而控制小車運動。圖3–SEQ圖\*ARABIC\s34平衡小車直立平衡原理圖3.4藍牙控制基于SPP協(xié)議實現(xiàn)小車與SPP-CA藍牙模塊進行通信。通過串口(Tx、Rx)通信收發(fā)AT指令實現(xiàn)運用藍牙簡單控制小車的運動。3.5研究技術關鍵(1)MPU6050實時采集獲取系統(tǒng)的姿態(tài)信息。(2)互補濾波與PID算法實現(xiàn)對所采集姿態(tài)信息的處理、運算。(3)A4988電機驅動模塊驅動42步進電機。(4)藍牙模塊控制小車運動。3.6主要技術指標(1)在沒有外力干預的情況下,本質不平衡的二輪自平衡小車能實現(xiàn)直立平衡。(2)通過藍牙能控制小車的簡單前后左右運動。4.硬件設計4.1單片機電路單片機具有微型計算機的屬性,是由一片半導體硅片集成了中央處理單元(CPU)、存儲器(RAM、RAM)、GPIO、定時器、中斷系統(tǒng)、系統(tǒng)時鐘電路及系統(tǒng)總線。單片機的發(fā)展已經(jīng)歷經(jīng)三十余年,單片機相關技術也實現(xiàn)了多次突破性進展。對單片機的需求越來越大源自于智能化的產(chǎn)品越來越多。目前用于智能系統(tǒng)開發(fā)的單片機種類繁多,如STM、STC等,它們的操作位數(shù)、運算速度及內部資源各有不同,需要根據(jù)不同的需求選擇不同型號的單片機并加以設計。STM32屬于一個微控制器,適用于控制類,自帶了各種常用通信接口,可接非常多的傳感器,可以控制很多的設備?,F(xiàn)實生活中,我們接觸到的很多電器產(chǎn)品都有STM32的身影,比如智能手環(huán)、微型四軸飛行器、移動POS機、3D打印機等等。故本次設計擬選擇STM32F103系列單片機。STM32單片機具有ARM內核、運算速度高、函數(shù)代碼易移植、內部資源豐富,還具備自帶的AD轉換器,功能相對于51單片機來說更加強大,滿足設計后續(xù)的接口、功耗等方面的需求,因此更加適合于本次設計。本設計選擇的單片機型號是STM32F103C8T6,是一款基于ARMCortex-M3內核的32位的微控制器,采用LQFP48封裝,2個12bitADC合計12路通道,37個通用I/O口,4個16bit定時器,2*IIC,2*SPI,3*USART,1*CAN,工作電壓2V~3.6V,工作溫度為-40°C~85°C,系統(tǒng)時鐘最高可到72MHz。圖4–1STM32F103C8T6管腳圖4.2電源電路本設計主要采用了3.3V電壓作為電源進行供電為了保證電源電壓的穩(wěn)定,兩者都需要進行電容濾波。其中,3.3V電源電壓由AMS1117-3.3芯片產(chǎn)生。3.3V電源電路圖如下:圖4–23.3V電源電路圖4.3步進電機電路4.3.1步進電機及其驅動器的選擇本畢業(yè)設計的研究對象是平衡小車,需要利用電機驅動。電機常用的有直流電機、舵機、步進電機三類,三者原理、功能不盡相同,本設計擬選擇HJ-42混合式步進電機與A4988驅動模塊。42步進電機具有力矩大、自感電抗小、供電足、響應快等優(yōu)勢,額定電流、電壓等參數(shù)符合此次設計的要求,因此選擇42步進電機。圖4–342步進電機實物圖A4988驅動模塊輸出阻抗低、功耗低、操作簡單、價格實惠,可調節(jié)驅動模式,具有可選擇的自動電流衰減模式,混合和慢速電流衰減模式,模塊上還有一個電位器,便于調節(jié)輸出電流。輸出電壓:Vref=Imax*Rcs*8輸出電流:Iref=Vref*2尤其是在3D打印以及數(shù)控機床領域,A4988十分常見。這里選擇的是16細分的A4988模塊,控制時更準確、更安靜。通過A4988控制步進電機時,還需要額外的電解電容以保護A4988控制板。注意在A4988模塊上安裝一個散熱片來保證必要的散熱,增大可通過的額定電流。圖4–4A4988引腳說明圖4.3.2步進電機驅動原理驅動模塊是介于驅動器與電機之間的一個模塊,通過控制器控制驅動板間接控制電機,本設計選擇A4988驅動模塊來控制42步進電機。此驅動過程需要額外的電解電容以保護A4988控制板。并且模塊上安裝一個散熱片來保證必要的散熱,使最大通過電流由1A增大至2A。通過MS1、MS2、MS3三個引腳調節(jié)A4988驅動模塊的驅動模式為全、半、1/4、1/8及1/16步進模式,本設計選擇十六細分,三個引腳全部上拉。通過A4988驅動模塊的引腳控制電機的步數(shù)與方向,STEP引腳為步數(shù)控制,控制電機的轉動速度、角度大小,接受控制器發(fā)來的脈沖信號,一次脈沖走一步(半步進就走半步,以此類推),通過控制脈沖的次數(shù)來控制電機的轉動角度,脈沖間距越短,轉速就越快。轉動角度=脈沖數(shù)*一步角度*步進模式參數(shù)DIR引腳為方向控制,低電平順時針方向轉動,高電平逆時針方向轉動。圖4–5步進電機電路圖4.4姿態(tài)解算電路4.4.1MPU6050模塊的選擇本設計需要捕獲小車實時的姿態(tài)信息,控制系統(tǒng)的角度,以實現(xiàn)小車的自平衡。為求姿態(tài)信息的完整,需獲取小車的角速度以及加速度。已知陀螺儀能輸出被測系統(tǒng)在某一方向上的角速度,通過對速率的積分處理得到系統(tǒng)的角度變化,但是陀螺儀極易被外界噪聲、溫度等因素所干擾,后者甚至會引起溫漂,從而產(chǎn)生較大的誤差。加速度計可以測量物體運動或者地球引力產(chǎn)生的加速度,然而,當系統(tǒng)以加速度運動時,該加速度就會在z軸方向產(chǎn)生一個分量,這個分量會疊加到重力加速度的分量上,進而也產(chǎn)生較大的誤差。綜上,單獨使用陀螺儀和加速度計都會對結果產(chǎn)生較大誤差,此時擬選擇MPU6050陀螺儀。MPU6050免除了組合陀螺儀與加速器時之軸間差的問題,也減少了安裝空間。其內部整合了3軸陀螺儀和3軸加速度傳感器,并且含有一個第二IIC接口,可用于連接外部磁力傳感器,并自帶的數(shù)字運動處理器DMP(DigitalMotionProcessor),可利用其硬件加速引擎,同時通過主IIC接口,向應用端輸出完整的9軸融合演算數(shù)據(jù)。以便更好更方便更精確地實現(xiàn)姿態(tài)解算,從而進一步降低了誤差,提高了設計的精度。圖4–6MPU6050基本特性圖4–7MPU6050模塊實物圖4.4.2四元互補濾波算法MPU6050陀螺儀由于制作工藝與棲見特性等原因,容易受到如振動、電磁干擾、溫度變化等各種外界因素的影響,導致原始數(shù)據(jù)不穩(wěn)定、出現(xiàn)偏差等問題。如果不進行及時的過濾誤差,會使得輸出的小車實時姿態(tài)信息混亂,可信度降低。而互補濾波算法可以有效處理慣性器件的高低頻誤差,提高系統(tǒng)的精度與可信度,并且互補濾波器的設計結構簡單、計算量小,實際運用中十分實用。圖4–8四元互補濾波算法流程圖4.4.3PID算法PID調節(jié)器出現(xiàn)于上世紀30年代,對偏差進行比例、積分、微分的控制。具有算法簡單、穩(wěn)定性好、工作可靠、調整方便等優(yōu)勢,只要設置不同的PID參數(shù),就能適用于溫度、壓力、流量、液位等幾乎所有現(xiàn)場,且只要參數(shù)設置合理就能達到良好效果,精度可達0.1%,甚至更高。當被控對象的結構和參數(shù)具有較大的不可控性,或得不到精確的數(shù)學模型時,控制理論的其它技術難以采用時,結構和參數(shù)必須依靠經(jīng)驗和現(xiàn)場調試來確定,這時應用PID控制技術最為方便。即當我們不完全了解一個系統(tǒng)和被控對象,或不能通過有效的測量手段來獲得系統(tǒng)參數(shù)時,最適合用PID控制技術。 PID由三個單元組成,分別為比例(P)單元、積分(I)單元、微分(D)單元。但在實際應用中,并不是每次應用都需要三個單元同時使用,可以單獨使用一個單元(微分單元不能單獨使用),也可以兩兩靈活組合使用。比例(P)控制可快速、及時、按比例調節(jié)偏差,提高控制靈敏度,但有靜差,控制精度低。積分(I)控制能消除偏差,提高控制精度、改善穩(wěn)態(tài)性能,但易引起震蕩,造成超調。微分(D)控制是一種超前控制,能調節(jié)系統(tǒng)速度、減小超調量、提高穩(wěn)定性,但其時間常數(shù)過大會引入干擾、系統(tǒng)沖擊大,過小則調節(jié)周期長、效果不顯著。比例、積分、微分控制相互配合,合理選擇PID調節(jié)器的參數(shù),即比例系數(shù)KP、積分時間常數(shù)i和微分時間常數(shù)D,可迅速、準確、平穩(wěn)的消除偏差,達到良好的控制效果。位置閉環(huán)控制是根據(jù)編碼器的脈沖累加測量電機的位置信息,并與目標值進行比較,得到控制偏差,通過對偏差的比例、積分、微分進行控制,使偏差趨近于零的過程。位置式離散PID公式:速度閉環(huán)控制就是根據(jù)單位時間獲取的脈沖數(shù)測量電機的速度信息,并與目標值進行比較,得到控制偏差,然后通過對偏差的比例、積分、微分進行控制,使偏差趨向于零的過程。位置式離散PID公式:4.5藍牙控制電路4.5.1SPP-CA藍牙模塊的選擇SPP-CA藍牙模塊是專為智能無線數(shù)據(jù)傳輸而打造,遵循V2.1+EDR藍牙規(guī)范支持UART接口、SPP(SerialPortProfile)藍牙串口協(xié)議,具有成本低、體積小、功耗低、收發(fā)靈敏性高等優(yōu)點,只需配備少許的外圍元件就能實現(xiàn)其強大功能。圖4–9SPP-CA藍牙模塊實物圖4.5.2串口通信的實現(xiàn)可以通過串口與SPP-CA芯片實現(xiàn)通信,串口使用Tx,Rx兩根信號線,波特率支持1200,2400,4800,9600,14400,19200,38400,57600,115200,230400,460800,921600bps。SPP-CA藍牙串口模塊指令為Command指令集。利用AT指令實現(xiàn)測試、復位、查詢、設置等功能。5.軟件設計5.1總體設計本設計所涉及的軟件部分比較多,以下著重介紹比較重要的幾個模塊,主要為MPU6050初始化及數(shù)據(jù)讀取模塊、互補濾波模塊、藍牙控制模塊等模塊。本設計的軟件設計部分,采用匯編語言和C語言編寫為主,運用KeiluVision5編譯運行,該編譯器操作比較簡單、適用性強,支持多種語言,調試功能強大。5.2流程框圖圖5–SEQ圖\*ARABIC\s31程序流程圖該設計的主程序基本內容:首先進行初始化,對LED、藍牙、MPU6050、A4988、電池電壓采集電路、用戶按鍵采集電路等各個外部設備進行初始化,初始化完成的標志為小燈閃爍。其次判斷是否按下按鍵,若返回按鍵值1,則判斷按下按鍵,則進行四元互補濾波與PID數(shù)據(jù)處理,并且A4988驅動模塊驅動電機工作,使小車保持直立平衡。期間更新按鍵值,若返回按鍵值0,則停止數(shù)據(jù)處理與電機驅動。再次,若連接上藍牙,則由藍牙控制小車運動,否則繼續(xù)保持直立平衡。5.3系統(tǒng)程序設計該設計的程序編寫可分成以下幾個模塊:主程序,MPU6050模塊程序設計,四元互補濾波模塊程序設計、藍牙模塊程序設計等。而在主程序中包括各模塊的初始化工作、處理后數(shù)據(jù)的顯示和報警驅動。5.3.1主程序設計主程序包括對LED、藍牙、MPU6050、A4988、電池電壓采集電路、用戶按鍵采集電路等各個外部設備的初始化,小車的平衡控制與藍牙控制、按鍵的更新。(1)小車平衡控制與藍牙控制:#if1 if(run_state==0||S_Roll>50||S_Roll<-50) { if(run_state==1) { run_state=0,LED1=0; } A4988_en(1) } else { crt(); A4988_en(0); } #endif(2)按鍵的更新:if(Mcount%10==0) { sta=up_key(); if(sta==1) { if(run_state==0) { run_state=1,LED1=1; } else { run_state=0,LED1=0; } } }5.3.2MPU6050模塊程序設計本設計需要MPU6050讀取小車的實時姿態(tài)信息,供后續(xù)算法的處理,以保持小車的平衡。該模塊主要包括MPU6050初始化以及數(shù)據(jù)讀取兩部分。(1)MPU6050初始化:voidmpu6050_init(void){u8data_buf=0;/*iicbypassen*/data_buf=0x02;iic_rw(&data_buf,1,INT_PIN_CFG,MPU6050_ADDR,WRITE);/*iicmasterdisable*/data_buf=0x00;iic_rw(&data_buf,1,USER_CTLR,MPU6050_ADDR,WRITE);/*mpu6050sleepdisable,temperatureen,in8Mosc*/data_buf=0x00;iic_rw(&data_buf,1,PWR_MGMT1,MPU6050_ADDR,WRITE);/*mpu6050nostandbymode*/data_buf=0x00;iic_rw(&data_buf,1,PWR_MGMT2,MPU6050_ADDR,WRITE);/*DLPF*/data_buf=0x06;iic_rw(&data_buf,1,CONFIG,MPU6050_ADDR,WRITE);/*GYRO+-2000°/s*/data_buf=0x18;iic_rw(&data_buf,1,GYRO_CONFIG,MPU6050_ADDR,WRITE);/*ACC+-4g*/data_buf=0x08;iic_rw(&data_buf,1,ACCEL_CONFIG,MPU6050_ADDR,WRITE);}(2)MPU6050數(shù)據(jù)讀?。簐oidmpu6050_get_data(s16*gx,s16*gy,s16*gz,s16*ax,s16*ay,s16*az,s16*temperature){u8data_buf[14];iic_rw(&data_buf[0],14,MPU6050_BURST_ADDR,MPU6050_ADDR,READ);*ax=data_buf[0]*0x100+data_buf[1];*ay=data_buf[2]*0x100+data_buf[3];*az=data_buf[4]*0x100+data_buf[5];*temperature=data_buf[6]*0x100+data_buf[7];*gx=data_buf[8]*0x100+data_buf[9];*gy=data_buf[10]*0x100+data_buf[11];*gz=data_buf[12]*0x100+data_buf[13];}5.3.3四元互補濾波模塊程序設計由于四元互補濾波的概念較難理解,且比較陌生,通過一個系統(tǒng)框圖來介紹四元互補濾波的主要流程:圖5–2四元互補濾波程序設計流程圖(1)定義四元數(shù)變量:staticfloatq0=1.0f;staticfloatq1=0.0f;staticfloatq2=0.0f;staticfloatq3=0.0f;(2)把加速度數(shù)據(jù)進行歸一化處理:normalise=invSqrt(acc.x*acc.x+acc.y*acc.y+acc.z*acc.z); acc.x*=normalise; acc.y*=normalise; acc.z*=normalise;(3)使用叉積來計算估算的重力和實際測量的重力之間的誤差:ex=(acc.y*veczZ-acc.z*vecyZ);ey=(acc.z*vecxZ-acc.x*veczZ);ez=(acc.x*vecyZ-acc.y*vecxZ);(4)把上述計算得到的重力差進行PI運算,結果累加到陀螺儀的數(shù)據(jù)中,用于修正陀螺儀數(shù)據(jù)。如果kp=ki=0,則完全信任陀螺儀數(shù)據(jù)。/*誤差累計,與積分常數(shù)相乘*/ exInt+=Ki*ex*dt; eyInt+=Ki*ey*dt; ezInt+=Ki*ez*dt;/*用叉積誤差來做PI修正陀螺零偏,即抵消陀螺讀數(shù)中的偏移量*/ gyro.x+=Kp*ex+exInt; gyro.y+=Kp*ey+eyInt; gyro.z+=Kp*ez+ezInt;(5)把修正過后的陀螺儀數(shù)據(jù)整合到四元數(shù)中:q0Last=q0; q1Last=q1; q2Last=q2; q3Last=q3;/*四元數(shù)微分方程*/ q0+=(-q1Last*gyro.x-q2Last*gyro.y-q3Last*gyro.z)*halfT; q1+=(q0Last*gyro.x+q2Last*gyro.z-q3Last*gyro.y)*halfT; q2+=(q0Last*gyro.y-q1Last*gyro.z+q3Last*gyro.x)*halfT; q3+=(q0Last*gyro.z+q1Last*gyro.y-q2Last*gyro.x)*halfT;(6)把上述運算后的四元數(shù)進行歸一化處理,得到了物體經(jīng)過旋轉后的新的四元數(shù)。 normalise=invSqrt(q0*q0+q1*q1+q2*q2+q3*q3); q0*=normalise; q1*=normalise; q2*=normalise; q3*=normalise;5.3.4藍牙控制模塊程序設計經(jīng)調試,該設計的平衡環(huán)up_kp=310.0;速度環(huán)speed_kp=1.50,speed_ki=0.001;轉向環(huán)trun_kp=0.8。藍牙控制模塊程序如下:staticvoidble_crt(charflag){ //藍牙控制速度和轉向的大小 shortspeed=2000; shorttrun=2000; staticu16speed_count=0; switch(flag) { //控制小車停止 case0x30: //停止時,轉向和速度均為0 bel_trun=0; bel_speed=0; up_kp=310.0; speed_kp=1.5; if(speed_count<100) { cha1=0; speed_count++; } //一段時間后進入速度i調節(jié) if(speed_count==100) { cha1=0; } break; //控制小車前行 case0x31: cha1=0; //speed_ki=0; speed_count=0; bel_speed=speed; break; //控制小車后退 case0x32: cha1=0; //speed_ki=0; speed_count=0; bel_speed=-speed; break; //控制小車左行 case0x33: // speed_kp=5; bel_trun=trun; //up_kp=110.0; break; //控制小車右行 case0x34: //speed_kp=5; bel_trun=-trun; //up_kp=110.0; break; } }6.制作與調試本次設計涉及MPU6050陀螺儀、SPP-CA藍牙模塊、兩塊A4988驅動模塊等功能外設,電源電路運用了ASM11173.3v芯片,電路中還包括電阻電容、LED燈、晶振、插槽、按鍵等實現(xiàn)該設計功能所必需的硬件,電路相對比較復雜,對于焊接的工藝要求較高。此外,該設計的MPU6050模塊、SPP-CA模塊、A4988模塊選擇使用接插的方式與單片機連接,目的是方便更換,通用性更強。6.1硬件電路的布線與焊接6.1.1總體特點該設計所涉及的各部分硬件電路,總體的特點是:(1)電路原理簡單,但是所需功能外設與硬件較多,焊接較為復雜。焊接時應耐心仔細,注意焊接順序。(2)由于該設計是以小車為載體的,因此需要注意配備合適的輪子與輪塞,電機支架等必備硬件。因此,為了降低焊接難度,布線時要注重合理布線,設計小車的結構應盡量輕便美觀。6.1.2焊接焊接前熟悉電路原理圖以及芯片的引腳、方向,電容電阻的大小、極性等。準備好焊槍、焊錫絲、鑷子、剪刀等焊接用具。焊接時時刻對照原理圖,耐心、仔細焊接。注意:(1)為確保各芯片有正確的工作電壓,先焊接各芯片的電源線和地線;(2)先焊接貼近電路板板面的芯片、電阻等,在依次從低到高焊接其他硬件,方便操作,更加安全快速。(3)焊接完一個模塊后檢查一遍,若有錯誤可以及時調整,否則會釀成更大的錯誤。圖6–SEQ圖\*ARABIC\s31焊接實物圖6.2調試出于自平衡小車應實現(xiàn)的功能的考慮,除常規(guī)調試外,本次調試的重點是A4988電位器的調試與平衡環(huán)速度環(huán)轉向環(huán)的調試。6.2.1A4988電位器的調試A4988驅動模塊的電位器可以調節(jié)輸出電流,用以驅動電機。為保證電機運動動力足夠,本設計中將其調整至最大。6.2.2小車平衡環(huán)和速度環(huán)的調試(1)調試平衡環(huán)up_kp。注意:在調試平衡環(huán)時要屏蔽速度環(huán)與轉向環(huán)。小車的平衡環(huán)使用P(比例)控制器,調試平衡環(huán)主要需確定平衡小車的機械中值,確定kp的極性與大小。把小車放在水平地面上,繞電機軸旋轉小車,記錄使小車接近平衡的角度,通常在0°附近;預估up_kp取值范圍,觀察up_kp處于哪個極性時,小車能產(chǎn)生正反饋,即平衡小車有直立趨勢,那么up_kp就處于該極性;在up_kp的相應極性下,反復調試up_kp數(shù)值,使小車的自平衡能較快響應。在本設計中,up_kp=310.0時,小車的響應較快,來回用手輕推小車時,小車會大幅度的低頻抖動,說明該數(shù)值是一個比較合適的數(shù)值。(2)調試速度環(huán)speed_kp、speed_ki。速度環(huán)使用PI(比例積分)控制器,PI控制器是一種線性控制器,根據(jù)給定值與實際輸出值構成控制偏差,將偏差的比例(P)和積分(I)通過線性組合構成控制量,對被控對象進行控制。根據(jù)經(jīng)驗,不同的系統(tǒng)中,speed_kp與speed_ki會存在一定的比例關系,并且速度控制為正反饋。由于速度控制是正反饋,所以速度環(huán)極性為正;由于speed_kp與speed_ki會存在一定的比例關系,所以只需確定speed_kp即可,打開平衡環(huán),反復調試speed_kp的值,使得小車保持平衡時,速度接近于0。在本設計中,speed_kp=1.50,speed_ki=0.001時,小車保持平衡的同時,速度接近于0。7.總結本設計完成了任務書的要求,實現(xiàn)了使本質不平衡的小車保持直立平衡,且藍牙控制運動。結合了MPU6050、SPP-CA藍牙模塊、A4988驅動模塊等功能外設,以及四元互補濾波算法和PID算法兩類算法,能較好的完成任務。本次設計實現(xiàn)功能如下:(1)撥動按鍵后,LED1常量,說明電源接通;同時LED0閃爍,提示系統(tǒng)初始化完成。(2)按下按鍵后,MPU6050模塊獲取小車實時姿態(tài)信息,進行數(shù)據(jù)處理,A4988模塊驅動電機,使小車保持直立平衡。同時,系統(tǒng)隨時更新按鍵信息,若按鍵狀態(tài)改變,小車直立平衡功能關閉。(3)藍牙控制小車簡單的前后左右運動。在本次設計中,我對STM32系列單片機又有了一個深入的認識,彌補了我此前的某些知識盲區(qū)。在臨近畢業(yè)時,重溫了STM32系列單片機的相關內部資源、引腳數(shù)量與功能、庫函數(shù)的使用等的相關知識,相信對于我日后的就業(yè)大有裨益。 在本次設計中,需要運用大量的C語言、匯編語言來編寫代碼,倒逼我去提升自己的編程能力,使我的專業(yè)學習更加全面、完善。在本次設計中,我還掌握了基于單片機的二輪自平衡車的相關原理,一些常用的模塊功能與運用,例如MPU6050模塊、A4988驅動模塊、SPP-CA藍牙模塊,以及一些常用的串口協(xié)議,豐富了我的專業(yè)知識。在本次設計中,由于全過程主要是由自己獨立完成的,在這個過程中我大大的提升了自己自學的能

溫馨提示

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

評論

0/150

提交評論