freepeople性欧美熟妇, 色戒完整版无删减158分钟hd, 无码精品国产vα在线观看DVD, 丰满少妇伦精品无码专区在线观看,艾栗栗与纹身男宾馆3p50分钟,国产AV片在线观看,黑人与美女高潮,18岁女RAPPERDISSSUBS,国产手机在机看影片

正文內(nèi)容

光電平衡小車設(shè)計(jì)_單片機(jī)課程設(shè)計(jì)(完整版)

2024-10-16 18:07上一頁面

下一頁面
  

【正文】 加速和減速的時(shí)候,直立控制一直在起作用,它會(huì)自動(dòng)改變車模的傾角,移動(dòng)車模的重心,使得車模實(shí)現(xiàn)加速和減速??梢约僭O(shè)車模的電機(jī)可以虛擬地被拆解成三個(gè)不同功能的驅(qū)動(dòng)電機(jī),它們同軸相連,分別控制車模的直立平衡、前進(jìn)行走、左右轉(zhuǎn)向。 本科生單片機(jī)課程設(shè)計(jì)報(bào)告湖南大學(xué)電氣與信息工程學(xué)院本科生單片機(jī)課程設(shè)計(jì)報(bào)告課 題:光電平衡小車專業(yè)班級(jí):電自六班目錄第一章 車模整體設(shè)計(jì)方案 3 3……………………………………………………………………………..5……………………………………………………………………………..9……………………………………………………………………………10……………………………………………………………………………10第二章程序控制說明 11 11 12 1速度雙閉環(huán)控制 14第二章 車模機(jī)械設(shè)計(jì) 15 15 15 16第三章 車模硬件電路設(shè)計(jì) 18第四章 卡爾曼濾波 18 18 18 20 21 23第五章車模參數(shù)調(diào)試圖解 29附錄源代碼 30附錄硬件電路圖 30個(gè)人總結(jié) 30 第一章 車模整體設(shè)計(jì)方案智能車是在車模結(jié)構(gòu)的框架上,搭上硬件結(jié)構(gòu),通過MC9S12XS128單片機(jī)的處理能力,將傳感器采集到的信息處理分析后得出運(yùn)算結(jié)果,指揮電機(jī)做出適應(yīng)賽道及戰(zhàn)術(shù)策略的響應(yīng)的一套系統(tǒng)。圖 車模運(yùn)動(dòng)控制分解示意圖直流電機(jī)的力矩最終來自于電機(jī)驅(qū)動(dòng)電壓產(chǎn)生的電流。 車模直立控制控制車模直立的直觀經(jīng)驗(yàn)來自于雜技表演。因?yàn)檐嚹S袃蓚€(gè)輪子著地,因此車體只會(huì)在輪子滾動(dòng)的方向上發(fā)生傾斜。圖 普通的單擺受力分析當(dāng)物體離開垂直的平衡位置之后,便會(huì)受到重力與懸線的作用合力,驅(qū)動(dòng)重物回復(fù)平衡位置。阻尼力會(huì)使得單擺最終停止在垂直位置。這樣站在小車上(非慣性系)看倒立擺,它就會(huì)受到額外的力(慣性力),該力與車輪的加速度方向相反,大小成正比。其中, 決定了車模是否能夠穩(wěn)定到垂直位置,它必須大于重力加速度;決定了車?;氐酱怪蔽恢玫淖枘嵯禂?shù),選取合適的阻尼系數(shù)可以保證車模盡快穩(wěn)定在垂直位置。(3)通過電機(jī)差速控制,可以實(shí)現(xiàn)車模方向控制。由上一節(jié)式(23)計(jì)算所得到的加速度控制量a再乘以一個(gè)比例系數(shù),即為施加在電機(jī)上的控制電壓,這樣便可以控制車模保持直立狀態(tài)。這里需要進(jìn)行解釋,為何有兩個(gè)輸入變量任然可以使用SISO系統(tǒng)才能使用PID。為了解決這個(gè)問題,必須要引入速度閉環(huán)控制。在車模直立控制下,為了能夠有一個(gè)往前的傾斜角度,車輪需要往后運(yùn)動(dòng),這樣會(huì)引起車輪速度下降(因?yàn)檐囕喭?fù)方向運(yùn)動(dòng)了)。由于系統(tǒng)對(duì)于靜態(tài)誤差存在一定要求,所以使用PI控制器。 車模地盤安裝測(cè)速編碼器對(duì)于攝像頭組以及光電組而言,起到速度閉環(huán)的作用,而對(duì)于兩輪車的選題,編碼器不僅起到速度閉環(huán),還對(duì)直立控制有很重要的作用,因此,編碼器對(duì)于電磁組兩輪車而言,是不可或缺的一部分。為了降低重心,我們對(duì)車模各個(gè)部件進(jìn)行了稱重,具體數(shù)據(jù)如下:部件質(zhì)量(克)前底板100電路板(包含驅(qū)動(dòng))72MEMS電路板10測(cè)速編碼器36電池300從上表中不難看出,質(zhì)量最大的部件是電池,同時(shí),電池的位置可以方便更改,所以我們決定嘗試改動(dòng)電池的安裝位置。方案三:背面橫向安裝方案三的優(yōu)勢(shì)在于將電池重心降到最低,對(duì)于直立控制而言存在較大優(yōu)勢(shì)。近年來更被應(yīng)用于計(jì)算機(jī)圖像處理,例如頭臉識(shí)別,圖像分割,圖像邊緣檢測(cè)等等。根本不能直接使用。因?yàn)閱蝹€(gè)傳感器不可靠,只有取其精華去其糟粕,發(fā)揮兩個(gè)傳感器的共同優(yōu)勢(shì),才能夠取得好的效果。在該系統(tǒng)中陀螺儀的值更為接近準(zhǔn)確值,因此取的值小于的值。但是,以上五個(gè)公式,僅僅只是矩陣形式。(所有這些工作都在MATLAB下完成)所以,我們將方框中的所有公式完全省略,通過實(shí)驗(yàn)整定,選取一個(gè)近似Kg來替代方框中的所有運(yùn)算。由于陀螺儀的輸出和加速度計(jì)輸出的量綱并不相同,所以陀螺儀采樣值*dt并不直接反應(yīng)一個(gè)角度,而是與實(shí)際角度相差一個(gè)系數(shù)。將車模保持在穩(wěn)定直立狀態(tài),讓車輪以恒定PWM(80%以上)轉(zhuǎn)動(dòng),然后調(diào)節(jié)參數(shù)。達(dá)到上圖效果即可認(rèn)為卡爾曼濾波參數(shù)整定完成。對(duì)于倒立擺的控制,參考的文獻(xiàn)中有使用各種算法進(jìn)行控制,比如狀態(tài)反饋、自適應(yīng)算法、神經(jīng)網(wǎng)絡(luò)算法、模糊算法等等。那么在這個(gè)前提下,只有兩個(gè)速度量:角度和角速度;被控變量只有角度??刂葡到y(tǒng)框圖如下:在實(shí)際調(diào)試過程中,倒立擺可以進(jìn)行短時(shí)間的直立,但是會(huì)朝向一個(gè)方向加速運(yùn)行,最后車模會(huì)倒下。首先對(duì)一個(gè)簡(jiǎn)單例子進(jìn)行分析。而速度閉環(huán)控制仍然可以看做是一個(gè)SISO系統(tǒng)。整定方法遵從先直立控制再速度控制;先P參數(shù),后I參數(shù),最后D參數(shù)的整定順序。 附件源代碼//******************端口初始化void PAC_Init(void){ //**********計(jì)數(shù)器接口初始化 ok() DDRB = 0X00。 PORTE_PE3 = 0。 //電機(jī)IO接口 DDRK_DDRK3 =1。 //使PLL與系統(tǒng)隔離 PLLCTL_PLLON = 1。 POSTDIV = 0。 //通道0使能 PITMUX_PMUX = 0。 //設(shè)置波特率為19200Kbps(寫一個(gè)字) AMAP = 0 總線頻率64MHz //SCI0BD = 69。i133。 //禁止輸出撲捉申請(qǐng)中斷}/*****************************************************函數(shù)功能:對(duì)PWM初始化,設(shè)置PWM0,PWM1級(jí)聯(lián),PWM2,PWM3級(jí)聯(lián)入口參數(shù):無出口參數(shù):無******************************************************/void PWM_init(void){ PWME = 0X00。 PWMDTY01 = 0。 //允許PWM0,1,2,3}/******************************************************* 函數(shù)功能:初始化AD轉(zhuǎn)換,轉(zhuǎn)換位數(shù)8位,轉(zhuǎn)換的通道必須在調(diào)用函數(shù)之前設(shè)置 入口參數(shù):無 ATD的 fclk 出口參數(shù):無 使用方法: ATD0CTL5 = 0X00。 //連續(xù)轉(zhuǎn)換,單獨(dú)對(duì)某通道采樣 ,并啟動(dòng)轉(zhuǎn)換具體通道需要在調(diào)用它之前} //end of ATD0_Init/*****************************************************函數(shù)功能:轉(zhuǎn)換一個(gè)模擬量8位轉(zhuǎn)換入口參數(shù): unsigned char result出口參數(shù): unsigned char result 啟動(dòng)單次裝換******************************************************/unsigned char ATD_uchar_convert(void) { while(!ATD0STAT2L_CCF0)。 if(ShuMa[i] amp。 //計(jì)數(shù)器 unsigned char Sendflag。 // 改變了采樣頻率 PWM_init()。char g_chrleftPulse = 0。 //根據(jù)最新得到的速度計(jì)算的速度控制量float g_inSpeedOutOld=0。 //右電機(jī)計(jì)數(shù)從PORTB Rightcounter_S0=0。 //ok } //end of GetMotorPulse/******************************************************************函數(shù)功能:通過全局變量g_inMotorPulse得到電機(jī)脈沖數(shù)入口參數(shù):無全局變量 g_inMotorPulse出口參數(shù):無全局變量 g_inSpeedControlOutNew ,g_inSpeedControlOutOld*******************************************************************/void SpeedControlUpdate(void) //(ok) 100ms { float inDelta。 //計(jì)算給定速度與測(cè)量值的偏差 D =(inDelta * SPEED_CONTROL_D)。 inValue = g_inSpeedOutNew g_inSpeedOutOld。 //角度控制控制量輸出int g_inGyroSpeed。 // Kalman_Filter(g_inCarAngle,g_inGyroSpeed)。 rightMotor = duty g_inDirControlOut。 PWMDTY01 = (uint)rightMotor。 int x。 //清除標(biāo)志位 while(!TFLG1_C1F)。 //清除標(biāo)志位 delay_1us()。 //清除標(biāo)志位 delay_1us()。 //清除標(biāo)志位 } // end of for //********捕獲和等待第129個(gè)時(shí)鐘完成,以結(jié)束本次CCD輸出 while(!TFLG1_C0F)。 //清除標(biāo)志位 while(!TFLG1_C0F)。 PWME = 0X4f。 //開始采集pixel的值 while(!TFLG1_C2F)。 //開通AN10 uchr_ad_data2[i] =ATD_uchar_convert() 。 //清除標(biāo)志位 while(!TFLG1_C3F)。 //清除標(biāo)志位 PWME = 0x0f。 //清除標(biāo)志位 } // end of for //********捕獲和等待第129個(gè)時(shí)鐘完成,以結(jié)束本次CCD輸出 while(!TFLG1_C2F)。 //清除標(biāo)志位 delay_1us()。 //等待IC0撲捉到CLK的上升沿 x = TC2。 //清除標(biāo)志位 while(!TFLG1_C1F)。 //清除標(biāo)志位 while(!TFLG1_C1F)。 //********以后每次撲捉CLK的下降沿128次 for(i=1。 while(!TFLG1_C1F)。 //清除標(biāo)志位 while(!TFLG1_C0F)。 while(!TFLG1_C0F)。 //反轉(zhuǎn) PWMDTY01 = (uint)( rightMotor)。 else leftMotor =leftMotor DEATH_CONTROL。 //角度換算90~90. if(g_fCarAngle =30 || g_fCarAngle =30) //保護(hù) PWMflag = 1。 //AD采集的電壓轉(zhuǎn)換成的角度float g_fCarAngle。 g_inSpeedperiod++。 //偏差值乘以微分參數(shù)來穩(wěn)定輸出 g_inSpeedIntegral =(P + g_inSpeedIntegral)。 g_inCarSpeed = (g_chrleftPulsesum + g_chrRightPulsesum)/2。 //右計(jì)數(shù)器清零 Leftcounter_S0=1。 //控制次數(shù)計(jì)數(shù)float g_inSpeedOut。int g_chrleftPulsesum = 0。 //CCD初始化IC0上升沿?fù)渥?IC1下降沿?fù)渥? ok PAC_Init()。 extern int DirControlPeriod。 else PTJ_PTJ6 =0。
點(diǎn)擊復(fù)制文檔內(nèi)容
研究報(bào)告相關(guān)推薦
文庫吧 www.dybbs8.com
備案圖鄂ICP備17016276號(hào)-1