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

正文內(nèi)容

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

2025-01-06 17:21 本頁(yè)面
 

【文章內(nèi)容簡(jiǎn)介】 寄存器,我們就可以算出 PWM 的輸出周期,計(jì)算公式為: Tout=((arr+1)*(psc+1))/Tclk。 其中 Tclk 為系統(tǒng)時(shí)鐘周期。 其次 我們介紹 捕獲 /比較模式寄存器( TIMx_CCMR1/2),總共有兩個(gè), TIMx_CCMR1 和TIMx_CCMR2, TIMx_CCMR1 控制通道 CH1 和 CH2, TIMx_CCMR2控制 CH3 和 CH4。 因?yàn)檫@ 2個(gè)寄存器差不多,我們僅以 通道 CH1 為例,介紹其中的 TIMx_CCMR1 為例, 該寄存器的各位描述如下 圖所示: 圖 TIMx_CCMR1/2 寄存器各位描述 這里我們只介紹該寄存器的 OCxM 位,我們就以 TIMx_CCMR1 中的 OC1M(控制通道 CH1) 為例,該位功能如下圖所示: 基于 stm32 的智能小車(chē)設(shè)計(jì) 16 圖 OC1M 功能描述 我們使用的是 PWM 輸出 模式,所以 OC1M 必須 設(shè)置為 110/111。 OC2M(控制通道 CH2)各位描述與 OC1M 相同,我們這要不在敘述。 然后我們介紹 捕獲 /比較使能寄存器( TIMx_CCER),該寄存器控制著各個(gè)輸入 /輸出通道的開(kāi)關(guān),對(duì)于該寄存器,各位描述如下圖所示: 圖 TIMx_CCER 寄存器描述 該寄存器比較簡(jiǎn)單, 因?yàn)槲覀冎唤榻B通道 1,所以我們只講 CC1E 位。 如果我們想使能輸入 /捕獲 1,我們只需使用 CC1E 位。 要想使 PWM 從 I/O 口輸出,此位必須設(shè)置為 1。 最后介紹捕獲 /比較寄存器( TIMx_CCR1~4),總共有 4 個(gè),分別對(duì)應(yīng) CH1~4,因?yàn)檫@ 4 個(gè)寄存器相似,我們僅以 TIMx_CCR1 為例,該寄存器的給位介紹如下圖所示: 圖 TIMx_CCR1 寄存器各位描述 基于 stm32 的智能小車(chē)設(shè)計(jì) 17 在輸出模式下,該寄存器的值與 CNT 中的值進(jìn)行比較,根據(jù)結(jié)果,實(shí)現(xiàn)電平的翻轉(zhuǎn)。至此,我們把用到的 幾個(gè)寄存器都介紹完畢,下面我們就介紹如何通過(guò)庫(kù)函數(shù)來(lái)配置實(shí)現(xiàn) PWM 三路輸出。 ? 開(kāi)啟 TIM3 時(shí)鐘以及復(fù)用功能輸出。 使能 GPIO 和端口復(fù)用功能時(shí)鐘。庫(kù)函數(shù)使能 TIM GPIO 以及復(fù)用功能時(shí)鐘的方法是: RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM3, ENABLE)。 RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA | RCC_APB2Periph_AFIO, ENABLE)。 ? 初始化 TIM3,設(shè)置 TIM3 的 PSC 和 ARR。 在開(kāi)啟了 TIM3 的時(shí)鐘之后,我們要設(shè)置 PSC 和 ARR 寄存器的值來(lái)控制 PWM 的輸出周期。調(diào)用的格式如下: =arr。 =psc。 =0。 =TIM_CounterMode_Up。 TIM_TimeBaseInit(TIM3, amp。TIM_TimeBaseStructure)。 ? 設(shè)置 TIM3_CH CH CH3 的 PWM 模式,使能 TIM3 的 CH CH CH3輸出。在庫(kù)函數(shù)中 PWM 通道設(shè)置是通過(guò) TIM_OC1Init~TIM_OC4Init 來(lái)設(shè)置的,這里我們需要 3 路 PWM 輸出,所以我們需要使用函數(shù) TIM_OC1Init、TIM_OC2Init、 TIM_OC3Init。 庫(kù)函數(shù)的調(diào)用格式如下: =TIM_OCMode_PWM1。 =TIM_OutputState_Enable。 = 0。 = TIM_OCPolarity_High。 TIM_OC2Init(TIM3, amp。TIM_OCInitStructure)。 TIM_OC1Init(TIM3, amp。TIM_OCInitStructure)。 TIM_OC3Init(TIM3, amp。TIM_OCInitStructure)。 ? 使能 TIM3。完成以上配置后,我們要使能定時(shí)器 TIM3。庫(kù)函數(shù)調(diào)用格式如下: TIM_Cmd(TIM3, ENABLE)。 基于 stm32 的智能小車(chē)設(shè)計(jì) 18 ? 通過(guò)修改 TIM3_CCRx(x 為 1,2,3)來(lái)控制占空比。庫(kù)函數(shù)格式如下: Void TIM_SetComparex(TIM3,uint16_t Compare2)。 我們可以知道,通過(guò)定時(shí)器 3 控制 PWM 波的占空比,從而實(shí)現(xiàn)速度方面的控制。其中 arr 和 psc 可以控制 PWM 波的周期, TIM3_CCRx 可以控制 PWM 波的占空比。我們只需要調(diào)用此函數(shù)就可以實(shí)現(xiàn)不同的速度控制。 對(duì)于運(yùn)動(dòng)方向控制的代碼我們就以后退為例, 由于端口寄存器過(guò)于簡(jiǎn)單, 我們不在此介紹 端口的寄存器 。我們僅介紹如何通過(guò)庫(kù)函數(shù)進(jìn)行端口配置。對(duì)各個(gè) I/O端口配置的過(guò)程相似,我們僅以 PD8 為例: 主要 過(guò)程 如下所示: ? 使能 I/O 口時(shí)鐘 ,調(diào)用格式如下所示: RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOD|RCC_APB2Periph_GPIOC, ENABLE)。 ? 初始化 I/O 參數(shù) ,調(diào)用格式如下所示: =GPIO_Pin_8。 =GPIO_Mode_Out_PP。 = GPIO_Speed_50MHz。 GPIO_Init(GPIOD, amp。GPIO_InitStructure)。 ? 操作 I/0 口 GPIO_SetBits(GPIOD,GPIO_Pin_8)。PD8 置 1 GPIO_ResetBits(GPIOD,GPIO_Pin_8)。PD8 置 0 我們知道了如何對(duì)端口進(jìn)行操作之后就可以隨意的控制小車(chē)的運(yùn)動(dòng)啦, 運(yùn)動(dòng)方向的程序設(shè)計(jì),其基本函數(shù)單元如下所示: void Left_Low(void)?!?我們調(diào)用這些函數(shù),就可以實(shí)現(xiàn)不同運(yùn)動(dòng)方向的控制。 主要代碼詳見(jiàn)附錄 3. 避障 模塊 設(shè)計(jì) 在人類(lèi)身體構(gòu)造系統(tǒng)中 ,眼睛 可以 使我們非常方便的采集到外界環(huán)境的信息 ,然后 把信息 及時(shí)的傳輸?shù)酱竽X, 并 對(duì)外界環(huán)境 信息 的變化做出相應(yīng)的處理 。而對(duì)智能小車(chē)來(lái)說(shuō),避障模塊之于小車(chē)就相當(dāng)于 眼睛之于人類(lèi) 。 避障模塊可以采集外部地形數(shù)據(jù),然后把所采集的地形數(shù)據(jù)傳輸?shù)街醒胩幚砟K ,從而實(shí)現(xiàn)躲避障礙的功能 。 避障模塊所采用的器件在市場(chǎng)中有許多類(lèi)型,比如紅外檢測(cè),光位移檢基于 stm32 的智能小車(chē)設(shè)計(jì) 19 測(cè),超聲波檢測(cè)等。本次試驗(yàn)我們使用的是 HCSR04 超聲波檢測(cè),超聲波由于具有檢測(cè)能力強(qiáng),傳播路徑寬 ,因此 我們決定使用 HCSR04 器件 。 在使用 HCSR04 模塊進(jìn)行超聲波測(cè)距的同時(shí),我們可以使用舵機(jī)進(jìn)行輔助。舵機(jī)的主要作用是改變 HCSR04 模塊的照射方向,從而控制超聲波的發(fā)射方向。在程序編寫(xiě)過(guò)程中,如果小車(chē)前方遇見(jiàn)障礙時(shí),我們可以直接控制舵機(jī)的轉(zhuǎn)向,而小車(chē)的車(chē)身可以保持不變,在測(cè)量結(jié)束后 ,小車(chē)再 做相應(yīng)的動(dòng)作。 避障模塊器件 結(jié)構(gòu) 及其 原理 HCSR04 超聲波測(cè)距模塊測(cè)量范圍在 2cm400cm 之間,可以實(shí)現(xiàn)無(wú)接觸式測(cè)距功能。 HCSR04 超聲波測(cè)距模塊由一個(gè)超聲波發(fā)射器、一個(gè)超聲波接收器和控制電路組成, 避障模塊的 實(shí)物結(jié)構(gòu)圖如圖 所示: 圖 實(shí)物 正反面 結(jié)構(gòu)圖 如結(jié)構(gòu)圖所示 VCC 提供 5v 電源, GND 為接地線(xiàn), TRIG 為觸發(fā)信號(hào)線(xiàn), ECHO為回向信號(hào)輸出線(xiàn)。 基本原理如下: 采用 IO 口 TRIG 觸發(fā)測(cè)距,給至少 10us 的高電平信號(hào),在 TRIG 觸發(fā)沿到來(lái)后 ,超聲 波發(fā)射器會(huì)自動(dòng)發(fā)出 8 個(gè) 40KHz 的方波 ,并且檢測(cè)是否有信號(hào)返回,當(dāng)超聲波接收器接收到超聲波時(shí),表明有信號(hào)返回,通過(guò) IO 口 ECHO 輸出一高電平,高電平持續(xù)的時(shí)間就是超聲波從發(fā)射到返回的時(shí)間。因此測(cè)量距離 =(高電平持續(xù)時(shí)間 *340m/s) /2。測(cè)量時(shí)序圖如圖 所示: 基于 stm32 的智能小車(chē)設(shè)計(jì) 20 圖 超聲波時(shí)序圖 我們根據(jù)時(shí)序圖,可以編寫(xiě)相應(yīng)的程序代碼。 為了防止 發(fā)射信號(hào)對(duì)回向信號(hào)的影響,我們的測(cè)量周期不易過(guò)小。并且由于 HCSR04 的感應(yīng)角度不大于 15176。,所以測(cè)距時(shí),為了防止發(fā)射信號(hào)丟失,我們要求被測(cè)物體的面積不應(yīng)小于 平方米,否則可能導(dǎo)致測(cè)量結(jié)果不準(zhǔn)確。 舵機(jī)在避障模塊的主要作用前面已經(jīng) 提到,本節(jié)主要講解舵機(jī)的工作特性。舵機(jī)的實(shí)物圖如圖 所示: 圖 舵機(jī)實(shí)物圖 舵機(jī)的工作工作原理是 stm32 微處理器發(fā)出數(shù)據(jù)給舵機(jī),舵機(jī)內(nèi)部有一個(gè)基準(zhǔn)電路,它會(huì)產(chǎn)生周期為 20ms,寬度為 的基準(zhǔn)信號(hào),它將微處理器傳輸?shù)闹绷髌秒妷号c電位器的電壓數(shù)據(jù)進(jìn)行比較,獲得電壓差輸出。經(jīng)由電路板上的IC 判斷轉(zhuǎn)動(dòng)方向,再驅(qū)動(dòng)無(wú)核心馬達(dá)開(kāi)始轉(zhuǎn)動(dòng),透過(guò)減速齒輪將動(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,理論上來(lái)講脈寬為 1~2ms,實(shí)際我們的脈寬為 ~,脈寬與所轉(zhuǎn)的角度一一對(duì)應(yīng)。 角度與脈寬的對(duì)應(yīng)圖如圖 所示: 基于 stm32 的智能小車(chē)設(shè)計(jì) 21 圖 舵機(jī)角度與脈寬對(duì)應(yīng)圖 HCSR04 模塊硬件電路設(shè)計(jì) 超聲波模塊硬件原理圖 如下圖所示 : 圖 超聲波硬件原理圖 HCSR04 模塊主要由發(fā)射器、接收器和部分電路組成。在此 試驗(yàn)中,我們只需簡(jiǎn)單了解電路的設(shè)計(jì),對(duì)于其基本原理可以不用過(guò)多涉獵, 我們只需明白它們的工作原理,并且能夠簡(jiǎn)單運(yùn)用即可。 HCSR04 模塊程序 設(shè)計(jì) 根據(jù)硬件電路的設(shè)計(jì),我們對(duì)避障子程序進(jìn)行設(shè)計(jì),程序流程圖如圖 所示: 基于 stm32 的智能小車(chē)設(shè)計(jì) 22 開(kāi) 始系 統(tǒng) 初 始 化前 進(jìn)前 方 是 否 有 障 礙舵 機(jī) 左 轉(zhuǎn)否是小 車(chē) 左 方 是 否 有 障 礙否舵 機(jī) 右 轉(zhuǎn)小 車(chē) 右 方 是 否 有 障 礙小 車(chē) 左 轉(zhuǎn)是小 車(chē) 右 轉(zhuǎn)否小 車(chē) 后 轉(zhuǎn)避 障 子 程 序 結(jié) 束 圖 避障程序流程圖 避障模塊在程序設(shè)計(jì)中,我們的工作主要是: 控制超聲波的掃描周期 采集超聲波發(fā)射到接受的 高電平 持續(xù)時(shí)間 t 對(duì)采集的 高電平持續(xù) 時(shí)間 t進(jìn)行處理,判斷前方是否有障礙 下面我們就詳細(xì)介紹我們是怎么通過(guò)軟件設(shè)計(jì)來(lái)完成這幾個(gè)步驟的: 控制超聲波的掃描周期 根據(jù)表 22,我們采用的是 TIM2 來(lái)控制超聲波的掃描周期 。首先我們把 TIM2設(shè)置為定時(shí)器中斷模式,代碼格式為 void TIM2_Int_Init(u16 arr,u16 psc)。 由于配置定時(shí)器中斷模式十分簡(jiǎn)單 , 我們就不在詳細(xì)介紹 , 其詳細(xì)代碼見(jiàn)附錄 4.定時(shí)器 TIM2 的 中斷周期計(jì)算公式為 T=((arr+1)*(psc+1))/Tclk。 Tclk 為系統(tǒng)周期,一般為 服務(wù) 程序中控制超聲波的發(fā)射 ,我們采用 PC7 作為觸發(fā)信號(hào),根據(jù)超聲波時(shí)序圖,我們需要在中斷程序中給 PC7 一個(gè)持續(xù) 10ms 的高電平,中斷服務(wù)程序如下: 基于 stm32 的智能小車(chē)設(shè)計(jì) 23 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è)量脈沖的寬度的功能。 我們 開(kāi)啟 TIM5 通道 CH1(定時(shí)器 5)的輸入捕獲模式, 采集 ECHO 端口的 高電平 持續(xù) 時(shí)間 。 配置定時(shí)器 5代碼 格式 為: void TIM5_Cap_Init(u16 arr,u16 psc){? } 下面我們就詳細(xì)講解一下,如何開(kāi)啟并使用通用定時(shí)器的輸入捕獲功能。 輸入捕獲的原理,簡(jiǎn)單的講就是通過(guò)檢測(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)。我們下面就簡(jiǎn)單介紹下 下這幾個(gè)寄存器。 TIM5_PSC、 TIM5_ARR、 TIM5_CCR1 這 3個(gè)寄存器用法與前節(jié)中相同,我們就不在
點(diǎn)擊復(fù)制文檔內(nèi)容
公司管理相關(guān)推薦
文庫(kù)吧 www.dybbs8.com
備案圖片鄂ICP備17016276號(hào)-1