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

正文內(nèi)容

畢業(yè)設(shè)計(jì)-基于stm32的智能小車設(shè)計(jì)(編輯修改稿)

2024-07-17 13:10 本頁面
 

【文章內(nèi)容簡介】 在人類身體構(gòu)造系統(tǒng)中,眼睛可以使我們非常方便的采集到外界環(huán)境的信息,然后把信息及時(shí)的傳輸?shù)酱竽X,并對(duì)外界環(huán)境信息的變化做出相應(yīng)的處理。而對(duì)智能小車來說,避障模塊之于小車就相當(dāng)于眼睛之于人類。避障模塊可以采集外部地形數(shù)據(jù),然后把所采集的地形數(shù)據(jù)傳輸?shù)街醒胩幚砟K,從而實(shí)現(xiàn)躲避障礙的功能。避障模塊所采用的器件在市場(chǎng)中有許多類型,比如紅外檢測(cè),光位移檢測(cè),超聲波檢測(cè)等。本次試驗(yàn)我們使用的是HCSR04超聲波檢測(cè),超聲波由于具有檢測(cè)能力強(qiáng),傳播路徑寬,因此我們決定使用HCSR04器件。在使用HCSR04模塊進(jìn)行超聲波測(cè)距的同時(shí),我們可以使用舵機(jī)進(jìn)行輔助。舵機(jī)的主要作用是改變HCSR04模塊的照射方向,從而控制超聲波的發(fā)射方向。在程序編寫過程中,如果小車前方遇見障礙時(shí),我們可以直接控制舵機(jī)的轉(zhuǎn)向,而小車的車身可以保持不變,在測(cè)量結(jié)束后,小車再做相應(yīng)的動(dòng)作。 避障模塊器件結(jié)構(gòu)及其原理HCSR04超聲波測(cè)距模塊測(cè)量范圍在2cm400cm之間,可以實(shí)現(xiàn)無接觸式測(cè)距功能。HCSR04超聲波測(cè)距模塊由一個(gè)超聲波發(fā)射器、一個(gè)超聲波接收器和控制電路組成,: 實(shí)物正反面結(jié)構(gòu)圖如結(jié)構(gòu)圖所示VCC提供5v電源,GND為接地線,TRIG為觸發(fā)信號(hào)線,ECHO為回向信號(hào)輸出線。基本原理如下:采用IO口TRIG觸發(fā)測(cè)距,給至少10us的高電平信號(hào),在TRIG觸發(fā)沿到來后,超聲波發(fā)射器會(huì)自動(dòng)發(fā)出8個(gè)40KHz的方波,并且檢測(cè)是否有信號(hào)返回,當(dāng)超聲波接收器接收到超聲波時(shí),表明有信號(hào)返回,通過IO口ECHO輸出一高電平,高電平持續(xù)的時(shí)間就是超聲波從發(fā)射到返回的時(shí)間。因此測(cè)量距離=(高電平持續(xù)時(shí)間*340m/s)/2。: 超聲波時(shí)序圖我們根據(jù)時(shí)序圖,可以編寫相應(yīng)的程序代碼。為了防止發(fā)射信號(hào)對(duì)回向信號(hào)的影響,我們的測(cè)量周期不易過小。并且由于HCSR04的感應(yīng)角度不大于15176。,所以測(cè)距時(shí),為了防止發(fā)射信號(hào)丟失,否則可能導(dǎo)致測(cè)量結(jié)果不準(zhǔn)確。舵機(jī)在避障模塊的主要作用前面已經(jīng)提到,本節(jié)主要講解舵機(jī)的工作特性。: 舵機(jī)實(shí)物圖舵機(jī)的工作工作原理是stm32微處理器發(fā)出數(shù)據(jù)給舵機(jī),舵機(jī)內(nèi)部有一個(gè)基準(zhǔn)電路,它會(huì)產(chǎn)生周期為20ms,它將微處理器傳輸?shù)闹绷髌秒妷号c電位器的電壓數(shù)據(jù)進(jìn)行比較,獲得電壓差輸出。經(jīng)由電路板上的IC判斷轉(zhuǎn)動(dòng)方向,再驅(qū)動(dòng)無核心馬達(dá)開始轉(zhuǎn)動(dòng),透過減速齒輪將動(dòng)力傳至擺臂,同時(shí)由位置檢測(cè)器送回反饋信號(hào)。舵機(jī)的轉(zhuǎn)動(dòng)角度與stm32所提供的PWM信號(hào)相關(guān)。標(biāo)準(zhǔn)信號(hào)PWM周期為20ms,理論上來講脈寬為1~2ms,~,脈寬與所轉(zhuǎn)的角度一一對(duì)應(yīng)。: 舵機(jī)角度與脈寬對(duì)應(yīng)圖 HCSR04模塊硬件電路設(shè)計(jì)超聲波模塊硬件原理圖如下圖所示: 超聲波硬件原理圖HCSR04模塊主要由發(fā)射器、接收器和部分電路組成。在此試驗(yàn)中,我們只需簡單了解電路的設(shè)計(jì),對(duì)于其基本原理可以不用過多涉獵,我們只需明白它們的工作原理,并且能夠簡單運(yùn)用即可。 HCSR04模塊程序設(shè)計(jì)根據(jù)硬件電路的設(shè)計(jì),我們對(duì)避障子程序進(jìn)行設(shè)計(jì),: 避障程序流程圖避障模塊在程序設(shè)計(jì)中,我們的工作主要是:控制超聲波的掃描周期采集超聲波發(fā)射到接受的高電平持續(xù)時(shí)間t對(duì)采集的高電平持續(xù)時(shí)間t進(jìn)行處理,判斷前方是否有障礙下面我們就詳細(xì)介紹我們是怎么通過軟件設(shè)計(jì)來完成這幾個(gè)步驟的:控制超聲波的掃描周期根據(jù)表22,我們采用的是TIM2來控制超聲波的掃描周期。首先我們把TIM2設(shè)置為定時(shí)器中斷模式,代碼格式為void TIM2_Int_Init(u16 arr,u16 psc)。 由于配置定時(shí)器中斷模式十分簡單,我們就不在詳細(xì)介紹,=((arr+1)*(psc+1))/Tclk。Tclk為系統(tǒng)周期,我們采用PC7作為觸發(fā)信號(hào),根據(jù)超聲波時(shí)序圖,我們需要在中斷程序中給PC7一個(gè)持續(xù)10ms的高電平,中斷服務(wù)程序如下:void TIM2_IRQHandler(void) //TIM2中斷{ if (TIM_GetITStatus(TIM2, TIM_IT_Update) != RESET) {TIM_ClearITPendingBit(TIM2, TIM_IT_Update )。 GPIO_SetBits(GPIOC,GPIO_Pin_7)。 delay_ms(10)。 GPIO_ResetBits(GPIOC,GPIO_Pin_7)。}}采集超聲波發(fā)射到接受的持續(xù)時(shí)間t在本節(jié)試驗(yàn)中,我們使用了通用定時(shí)器TIM5的輸入捕獲功能,輸入捕獲模式具有測(cè)量頻率或者測(cè)量脈沖的寬度的功能。我們開啟TIM5通道CH1(定時(shí)器5)的輸入捕獲模式,采集ECHO端口的高電平持續(xù)時(shí)間。配置定時(shí)器5代碼格式為:void TIM5_Cap_Init(u16 arr,u16 psc){…}下面我們就詳細(xì)講解一下,如何開啟并使用通用定時(shí)器的輸入捕獲功能。輸入捕獲的原理,簡單的講就是通過檢測(cè)TIM5(定時(shí)器)通道CH1的邊沿信號(hào),當(dāng)邊沿信號(hào)發(fā)生變化時(shí),當(dāng)前寄存器的值TIM1_CNT存放到通道的捕獲/比較寄存器(TIM5_CCR1)里面。我們的實(shí)驗(yàn)就是采集捕獲/比較寄存器(TIM5_CCR1)中的值并進(jìn)行處理,完成相應(yīng)的動(dòng)作。為了使TIM5通道CH1具有捕獲功能,我們需要用到TIM5_PSC、TIM5_ARR、捕獲/比較模式寄存器(TIM5_CCMR1)、捕獲/比較使能寄存器(TIM5_CCER)、捕獲/比較寄存器(TIM5_CCR1)、DMA/中斷使能寄存器(TIM5_DIER)、控制寄存器(TIM5_CR1)。我們下面就簡單介紹下下這幾個(gè)寄存器。TIM5_PSC、TIM5_ARR、TIM5_CCR1這3個(gè)寄存器用法與前節(jié)中相同,我們就不在贅述,而在本實(shí)驗(yàn)中,捕獲/比較寄存器TIM5_CCMR1非常重要,該寄存器的各位描述如下圖所示: TIMx_CCMR1各位描述我們使用的是TIM5捕獲/比較通道CH1,所以圖中只介紹[7:0]位。本次試驗(yàn)我們?cè)O(shè)置CC1S[1:0]=01,IC1PSC[1:0]=00,IC1F[3:0]=0000。接著我們?cè)賮砜纯床东@/比較使能寄存器TIMx_CCER,本節(jié)用到了CC1E和CC1P兩位,描述如下圖所示: TIMx_CCER最低兩位描述所以要使能通道CH1輸入捕獲,CC1E必須設(shè)置為1,而CC1P則可以根據(jù)實(shí)際情況設(shè)置。其次,我們?cè)倏纯碊MA/中斷使能寄存器(TIM5_DIER),因?yàn)槲覀兪褂玫氖峭ǖ繡H1,所以我們僅介紹控制通道CH1的位,如下圖所示: TIMx_DIER各位描述通過此圖我們知道,我們需要設(shè)置CC1IE為1即可。然后,我們?cè)倏纯纯刂萍拇嫫鱐IMx_CR1,我們只用到了最低位,所以我們僅介紹位0的功能,TIMx_CR1寄存器各位描述及位0功能描述如下如所示: TIMx_CR1寄存器各位描述及位0功能描述我們要使能計(jì)數(shù)器,所以位0設(shè)置為1。至此,我們所使用的寄存器一一介紹完畢,下面介紹怎么配置輸入/捕獲步驟:216。 開啟TIM5時(shí)鐘以及GPIOA時(shí)鐘。RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM5, ENABLE)。 RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA, ENABLE)。 216。 初始化TIM5,設(shè)置TIM5的psc和arr。 = arr。 =psc。 =TIM_CKD_DIV1。 = TIM_CounterMode_Up。 TIM_TimeBaseInit(TIM5, amp。TIM_TimeBaseStructure)。216。 設(shè)置TIM5的輸入比較參數(shù),開啟捕獲模式。=TIM_Channel_1。 =TIM_ICPolarity_Rising。 = TIM_ICSelection_DirectTI。 = TIM_ICPSC_DIV1。 = 0x00。//IC1F=0000 TIM_ICInit(TIM5, amp。TIM5_ICInitStructure)。216。 設(shè)置TIM5的DIER寄存器,使能捕獲和更新中斷功能。TIM_ITConfig(TIM5,TIM_IT_Update|TIM_IT_CC1,ENABLE)。216。 設(shè)置中斷分組并編寫中斷服務(wù)函數(shù)=TIM5_IRQn。 =1。 = 0。 = ENABLE。 NVIC_Init(amp。NVIC_InitStructure)。216。 使能定時(shí)器 TIM_Cmd(TIM5,ENABLE )。我們知道了如何設(shè)置TIM5的CH1為輸入捕獲模式,我們是在TIM5的中斷服務(wù)函數(shù)中采集持續(xù)時(shí)間t的,TIM5CH1_CAPTURE_STA為輸入捕獲狀態(tài),TIM5CH1_CAPTURE_VAL為輸入捕獲值,中斷服務(wù)函數(shù)如下所示:if((TIM5CH1_CAPTURE_STAamp。0X80)==0)//還未成功捕獲 { if (TIM_GetITStatus(TIM5, TIM_IT_Update) != RESET) { if(TIM5CH1_CAPTURE_STAamp。0X40)//已經(jīng)捕獲到高電平了 { if((TIM5CH1_CAPTURE_STAamp。0X3F)==0X3F)//高電平太長了 { TIM5CH1_CAPTURE_STA|=0X80。//標(biāo)記成功捕獲了一次 TIM5CH1_CAPTURE_VAL=0XFFFF。 }else TIM5CH1_CAPTURE_STA++。}} if (TIM_GetITStatus(TIM5, TIM_IT_CC1) != RESET)//捕獲1發(fā)生捕獲事件 { if(TIM5CH1_CAPTURE_STAamp。0X40) //捕獲到一個(gè)下降沿 { TIM5CH1_CAPTURE_STA|=0X80。 //標(biāo)記成功捕獲到一次上升沿 TIM5CH1_CAPTURE_VAL=TIM_GetCapture1(TIM5)。 TIM_OC1PolarityConfig(TIM5,TIM_ICPolarity_Rising)。 //CC1P=0 設(shè)置為上升沿捕獲 }else //還未開始,第一次捕獲上升沿 { TIM5CH1_CAPTURE_STA=0。 //清空 TIM5CH1_CAPTURE_VAL=0。 TIM_SetCounter(TIM5,0)。 TIM5CH1_CAPTURE_STA|=0X40。 //標(biāo)記捕獲到了上升沿 TIM_OC1PolarityConfig(TIM5,TIM_ICPolarity_Falling)。 //CC1P=1 設(shè)置為下降沿捕獲}}}對(duì)采集的時(shí)間t進(jìn)行處理,判斷前方是否有障礙我們對(duì)采集時(shí)間t的處理也是在TIM5的中斷服務(wù)函數(shù)中的,我們根據(jù)因測(cè)量距離=(高電平持續(xù)時(shí)間t*340m/s)/2,得出只要高電平持續(xù)時(shí)間t1500us,距離就小于25cm,就會(huì)判定前方有障礙,其詳細(xì)代碼如下: if(TIM5CH1_CAPTURE_STAamp。0X80)//成功捕獲到了一次上升沿 { temp=TIM5CH1_CAPTURE_STAamp。0X3F。 temp*=65536。//溢出時(shí)間總和 temp+=TIM5CH1_CAPTURE_VAL。//得到總的高電平時(shí)間 TIM_Cmd(TIM2, DISABLE)。 if(temp1500) { stopward()。t++。flag++。 if(t==1) { Midstate=temp。 TIM_SetCompare2(TIM3,60)。//舵機(jī)右轉(zhuǎn)} if(t==2){ Leftstate=temp。 TIM_SetCompare2(TIM3,250)。 //舵機(jī)左轉(zhuǎn) } if(t==3) {t=0。 Rightstate=temp。 TIM_SetCompare2(TIM3,150)。 rotate_Left()。}} else { if(flag==0){farward_Low()。} if(flag==1) {turn_Left()。} if(flag==
點(diǎn)擊復(fù)制文檔內(nèi)容
規(guī)章制度相關(guān)推薦
文庫吧 www.dybbs8.com
備案圖片鄂ICP備17016276號(hào)-1