畢業(yè)設計(論文)-單片機控制單軸雙輪自動平衡小車設計_第1頁
畢業(yè)設計(論文)-單片機控制單軸雙輪自動平衡小車設計_第2頁
畢業(yè)設計(論文)-單片機控制單軸雙輪自動平衡小車設計_第3頁
畢業(yè)設計(論文)-單片機控制單軸雙輪自動平衡小車設計_第4頁
畢業(yè)設計(論文)-單片機控制單軸雙輪自動平衡小車設計_第5頁
已閱讀5頁,還剩24頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

2016 的日常生活中也作為代步工具被越來越多的人群接受。本設計采用了基于ARMCORTEX-M3STM32單片機,使平衡車姿態(tài)調(diào)整速度更快,數(shù)據(jù)處理更準確,關鍵詞:平衡車;MPU6050;STM32;PIDMoreandmorepeoplehavepaidattentiontoTheTwo-wheeledSelf-balancingRobotduetoitsuniqueflexibilityandconvenience.Peoplehadacceptitastransportinpeople'sdailylife.ThisstudyisjustbasedonthepurposeofexploretheTheTwo-wheeledSelf-balancingRobot.ThisdesignbasesonSTM32microcontrollerwhichbasedontheCORTEX-M3ARMcore.becauseofthat,therobotadjustfaster,dataprocessingmoreaccurate,performancebetter.Atthesametime,wedirectlyusingtheworld'sfirst9axismotionprocessingsensorMPU-6050insteadofthegyroandaccelerationmetersensorstogetthecar'sattitudeinformation.tocalculatetheangleThroughtheDMP.Andtoachievethecar'suprightbalancewalkingthroughthePIDcontrol.UsingBluetoothmoduletoachievecommunicationwiththecar.TheDesignedwillachievethebalanceofthecarstand,forward,backwardfunction.Toachievethebalanceofthecaruprightwalking,infact,istotimelycontrolofthemotor,electricmotorisanelectricmachineconversiondevicewhichthroughallareasofthenationaleconomyandpeople'sdailylife,sotheperfectcontrolofthemotorismoreimportantandisoneofthemainobjectivesofthisdesign.stm32f10xserieschipisnew32-bitembeddedmicroprocessor,ithasexcellentperformance,goodportabilityandimprovetheefficiencyoftheDCmotorcontrol,andwehavemodularthelsystem,whichwillbeconducivetothebalanceofthecarafterthefunctionexpansion.KeyWord:Self-balancing PID 緒 平衡車總體設計方 系統(tǒng)平衡原理分 系統(tǒng)整體設 系統(tǒng)硬件電路設 系統(tǒng)硬件選 最小系統(tǒng)設 姿態(tài)檢測電路設 電源穩(wěn)壓模 電機驅(qū)動模塊設 系統(tǒng)軟件部分設 軟件系統(tǒng)總體結 單片機初始 姿態(tài)檢測系統(tǒng)軟件設 MPU6050姿態(tài)獲取方 卡爾曼濾波算 平衡PID控制軟件實 直立環(huán)PD控 速度環(huán)PI控 系統(tǒng)調(diào) 角度矯 卡爾曼濾波調(diào) PID參數(shù)的整 PD控制調(diào) PI控制調(diào) 結 致 附錄 程 附錄 電路 參考文 中原工學院信息商務學院畢業(yè)設計(論文中原工學院信息商務學院畢業(yè)設計(論文PAGEPAGE1 最開始,瑞士研制了用DSPFPGA控制的基于倒立擺理論的雙輪車,通過傾斜傳感器和傾角傳感器來檢測車體,通過電機上的編碼盤檢測電機的速度。該設計采用了基于狀態(tài)反饋的線性控制策略,車的運動被分解成直線和旋轉運動,然后分析直線運動和旋轉運動,得到電機需要的控制量,最終把控制量耦合疊加。其主要的設計思想是:使車子朝車體傾斜的方向運動來保持車身的平衡,該控制只能讓小Segway53個傳感器就夠了,其他的兩個傳感器只是增加安全性。傳感器采集到的數(shù)據(jù)發(fā)送給集成有許多處理器的電路板。這個集群是為了保證載人平衡車在其中任何一個處理器出現(xiàn)問題時能報告錯誤,保證了平衡車的安全性。它的設計是針對民用代步設計ADXL202及反射式紅外線距離傳感器來獲得姿態(tài)信息的設計[1]PWMSway的數(shù)據(jù)交換和平衡直立控制。2-1θθ2-1時候,就要寫出小車的運動方程[4]2-2

(2-Ldt

at 在角度θ很 時,運動方程簡化為

(2-Ldt

a

Laat

Ldt

θl(2-2-2圖2- 硬件結構STM32STM32STM32與預先設定車身平衡數(shù)據(jù)進行比較,計算出小車需要調(diào)整的余量,轉化成PWM[5]控芯片STM32。重復這樣一個過程,完成車模的直立平衡控制、直立運動控制[6],依姿態(tài)傳感器選型:InvenSenseMPU-6050濾波器、自帶的可擴展的數(shù)字運動處理器DMP。并且,InvenSense提供了一個MPU6050的嵌入式運動驅(qū)動庫,結合MPU6050DMP元數(shù)輸出,而得到四元數(shù)之后,就可以很方便的計算出歐拉角,從而得到y(tǒng)aw,roll,pitchDMPMPU-6050測量也很精確。MPU6050[8]。如果選用多9傳感器可以把處理后的姿態(tài)角等信息用串口形式[9]發(fā)送。我們想要得到的是小車的俯仰角。要想得到車體的俯仰角,只需利用原始數(shù)據(jù),進行姿態(tài)融合解算即可。電機選型:因為平衡車要進行速度控制的話還需要有編碼器,為了減免不必要的工作量,并切保證質(zhì)量,我們應盡量選取帶有編碼器的直流有刷電機。本設計采25GA20E2607~13V,越高的1326010405V,集成了上拉電阻和比較整形功能,可以直接輸出方波。電機配有金屬減速500rpm(轉每分)。外形小巧,使用方便。電機驅(qū)動選型:TB6612FNGL298NPWM6TB6612FNG的微型金屬減速馬達控制器,當然也可用于控制一個雙極步進電機?;贛OSFETHPWM100KhzTB6612L298N,效率mpu6050,25GA,TB6612,STM32C8T6LM2596:3.3V、5V、12V(-ADJ)等多個電壓檔次產(chǎn)品。它的輸出1VAMS1117AMS11171.3V,隨著負載電流的降低,電壓差也慢慢變小。中原工學院信息商務學院畢業(yè)設計(論文中原工學院信息商務學院畢業(yè)設計(論文STM32[11]8M10PF3-13-1本設計選用的MPU6050有以下幾點理由,在獲取角度和加速度的同時,因為MPU6050DMP12]MPU6050977中原工學院信息商務學院畢業(yè)設計(論文中原工學院信息商務學院畢業(yè)設計(論文3-2MPU60503-2,Pin10C19,用于校準濾波;Pin1310KPB10;INTPB3專門設計了電壓模塊[13]為本系統(tǒng)所設計的各個模塊提供電源。TB66123-312VSTM323.3VASM1117-3.3V3-3。 8中原工學院信息商務學院畢業(yè)設計(論文中原工學院信息商務學院畢業(yè)設計(論文TB6612L298NTB66121A。AINl/AIN2、BIN1/BIN2是控制信號輸入端,其中AINl/AIN2、BIN1/BIN212V,VCC3-43-43-13-1 0后前外部中斷串口初始化、PWM 0 0 0

中原工學院信息商務學院畢業(yè)設計(論文中原工學院信息商務學院畢業(yè)設計(論文4-1前面的部分主要介紹了整個小車系統(tǒng)的設計思想,硬件電路原理,接下來介紹4-1PWM化,在獲取車身姿態(tài)數(shù)據(jù),經(jīng)過卡爾曼[14]融合算法,PID控制完成小車直立速度控4-28MHzSTM3272MHzSTM32APB1APB2,36MHz、72MHz。整個初始化步驟是:首先軟件設I/OI2C4-2ADC、定時器、DMAGPIOMPU6050MPU6050MPU6050DMP,就不再需要考慮復雜的濾波算法,我們就可以直接得到Read_DMP(Accel表示。I2CMPU6050DMPq30QXpitchasin2q1q32q0q2

(3-(3-x0、1、2、33-2pitchRollYawMPU6050中陀螺儀部分:陀螺儀模塊可以實時記錄小車擺動時的角速度GyroAccelGyroPIDMPU60504-3我們知道僅僅依靠姿態(tài)傳感器諸如陀螺儀和加速度傳感器,我們就已經(jīng)能獲得校車的姿態(tài)信息,但是為什么還要卡爾曼濾波,其原因是在我們只是通過硬件提供的信息的話很難達到所需要的精度,硬件上的工藝水平是有限的,長時間下來,誤我們引入了卡爾曼濾波,從軟件算法的角度來優(yōu)化車子的準確性能??柭鼮V波器包括過去、現(xiàn)在、甚至是下一步的狀態(tài)信息,針對本設計而言,本設計所使用的慣性器件卡爾曼濾波將更合適。voidKalman_Filter(floatAccel,floatGyro)的入口參AngleAngle_dot[15]。Angle+=K_0*Angle_err;Angle_dot=Gyro-Q_bias;設置卡爾曼濾波參數(shù)如Q_angle0.01;Q_gyro0.01;R_angle0.005;charC_0為1;Q_bias,Angle_err;floatPCt_0,PCt_1,E;floatK_0,K_1,t_0,t_1;floatPdot[4]floatPP[2][2]={{1,0},{0,1}kalmandtPID這里首先形象的分別說明一下P、I、D控制的區(qū)別,以利于我們建立起感性認作用。DPDPDPPI控制就已經(jīng)能滿足要求,但是如果需要我們干擾迅速響應的D微分控制。intbalance(floatAngle,floatGyro)BiasBias=Angle-0。PWMkpPkdDpwmpwm:Balance。PI平衡小車速度環(huán)使用PI控制[16],既比例積分控制,速度控制使用頻率最高的PIPIPI控制函數(shù)。velocity(encoder_left,intencoder_rightif(1==Flag_Qian)Movement=-90;1位移為負elseif(1==Flag_Hou)Movement=90;1elseMovement=0;Encoder_Least=(Encoder_Left+Encoder_Right)-Encoder*=EncoderEncoder_Least*0.3;Encoder_Integral+=Encoder;Encoder_Integral=Encoder_Integral-Movement;//接收遙控器數(shù)據(jù),控制前if(Encoder_Integral>10000)Encoder_Integral=10000;if(Encoder_Integral<-10000)Encoder_Integral=-10000;度PIPWM。WIFI、紅外線控if(USART2_RX_STA&0X8000)LED=!LED;reclenUSART2_RX_STA&0X7FFF;USART2_RX_BUF[reclen]=0;看是否正常,為了保證陀螺儀輸出信號的準確性,需保持陀螺儀模塊電路的偏置電0°、4590°,點必然又是卡爾曼濾波。為了方便調(diào)試,小車經(jīng)串口[18]PCPIDPD0°kp(kd=0)。如果給定值之后,小車往哪邊倒,電機kp極性反了。Pkd(kp=0)當我們旋轉小車的時候,車輪會同向以相同的速kd的極性是正的。確定參數(shù)的原則是:kd一直增加,直到出現(xiàn)高頻抖動。PDPIkp最大值=7200/(160*50%)=90。kp,kikp=80,ki=kp/200時,PI一方面可以改進成更為簡潔方便的控制方式,諸如體感控制而不在采用手機端STM32控芯片本身就帶有引腳服用功能,數(shù)據(jù)處理能力迅速,應該充分的利用這些資源,使平衡車實現(xiàn)更多的功能,諸如轉彎,遇到障礙自動停止,這部分自然要加裝類似對論文的理解還不夠透徹,之后再有機會做相關設計時,肯定能實現(xiàn)更加人性化,智能化的平衡車??上攵@邊年來的成績的取得肯定離不開老師、各位同學的同學的熱情指導和幫助。第一個要感謝的是學校校提供各位的一個良好的優(yōu)美的學習環(huán)境,而且還要感謝學院對我在進行畢業(yè)設計相關工作的整個過程中最初的精心的合理的安排,對于我的指導老師姜宏偉老師我要表達出我最真誠的謝意,姜老師在我們畢業(yè)設計的整個過程中不厭其煩的每周為大家作出指導,自始至終都不斷地督促鼓勵我們,在此同時,我還要感謝同班同學給于我的不管是在論文設計上的真誠指點還是在我遇到困難是鼓勵,以及其他的各位前輩,各位認識不認識的同行朋友,發(fā)燒友的幫助,最終我度過了緊張而又充實的幾個月。在這幾個月中,不僅讓我收獲了能力和知識,也更讓我也深刻感受到了師生情和友情的美好,這段珍貴的時光將成為不可忘記的回憶,我自然會以此鼓勵自己繼續(xù)努力前行。附錄 程#include"stm32f10x.h"#include"bsp_SysTick.h"#include"bsp_usart1.h"#include"bsp_mpu6050.h"#include"bsp_key.h"#include"bsp_pwm.h"#include"bsp_motor.h"#include"bsp_12864.h"http://#includevoidDelay(IOuint32_tVoidKalman_Filter(floatAccel,floatGyro);voidPWM_Calcu(void);void//Y//Xuint8_tvalue; //PWM PWM PWMfloat PWM//PIDstaticfloat =205; //185staticfloat =22; voidKalman_Filter(floatAccel,float{Angle+=(Gyro-Q_bias)*dt;Pdot[0]=Q_anglePP[0][1]PP[1][0];PkPdot[1]=-Pdot[2]=-*dt;//Pk*dt;**Angle_errAccelAngle;//zk-先驗估計PCt_0=C_0*PP[0][0];PCt_1=C_0*E=R_angle+C_0*PCt_0;K_0=PCt_0/E;K_1=PCt_1/E;t_0=PCt_0;t_1=C_0*-*t_0;-*-*-*Angle+=K_0*Angle_err;//后驗估計Q_bias+=K_1*Angle_err;Angle_dot=Gyro-Q_bias;}PDintbalance(floatAngle,float{floatBias,kp=300,kd=1;intbalance;Bias=Angle-0;//計算直立偏差balance=kp*Bias+Gyro*kd;PWMreturnbalance;PWM}PIintvelocity(intencoder_left,int{staticfloatVelocity,Encoder_Least,Encoder,Movement;staticfloatEncoder_Integral;floatif(1==Flag_Qian)Movement=-90;1elseif(1==Flag_Hou)Movement=90;1位移為正elseEncoder_Least=(Encoder_Left+Enc

溫馨提示

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

評論

0/150

提交評論