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

下載本文檔

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

文檔簡介

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

溫馨提示

  • 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)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論