版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
1、<p> 課 程 設(shè) 計 說 明 書</p><p> 題目: 智能倉庫機器人 </p><p> 學(xué)院(系): 電氣工程學(xué)院 </p><p> 年級專業(yè): </p><p> 學(xué) 號:
2、 </p><p> 學(xué)生姓名: </p><p> 指導(dǎo)教師: </p><p> 教師職稱: 教授 講師 </p><p> 課程設(shè)計(論文)任務(wù)書</p><p> 院(系):電氣工程學(xué)院
3、 基層教學(xué)單位:工業(yè)自動化儀表 </p><p> 說明:此表一式四份,學(xué)生、指導(dǎo)教師、基層教學(xué)單位、系部各一份。</p><p> 2013年 07 月 04 日 </p><p><b> 目錄</b></p><p> 摘要………………………………………………………
4、……4</p><p> 第一章 設(shè)計說明……………………………………………5</p><p> 1.1設(shè)計要求…………………………………………………5</p><p> 1.2 設(shè)計方案…………………………………………………5</p><p> 第二章 各模塊介紹…………………………………………7</p><p&
5、gt; 2.1 總體模塊介紹……………………………………………7</p><p> 2.2 STM32單片機介紹…………………………………………7</p><p> 2.3 超聲波模塊介紹……………………………………………8</p><p> 2.4 語音模塊和蜂鳴器模塊…………………………………10</p><p> 2.5 溫度
6、測量………………………………………………12</p><p> 2.6 電機驅(qū)動模塊…………………………………………13 </p><p> 第三章 程序設(shè)計…………………………………………15</p><p> 3.1串口發(fā)送程序…………………………………………15</p><p> 3.2定時器程序…………………………………………
7、…18</p><p> 第四章心得體會……………………………………………25 </p><p> 參考文獻………………………………………………………26</p><p><b> 摘 要</b></p><p> 在現(xiàn)代科技逐漸發(fā)展的當今社會,工業(yè)自動化的發(fā)展,在信息化時代的環(huán)境背景下,科技發(fā)展已經(jīng)深入到
8、了生活的各個領(lǐng)域,智能機器人的出現(xiàn)也使我們走向了智能化時代。智能機器人代替了我們?nèi)祟愖鲆幌铝λ芗暗氖?,以及我們不能做的事情,使我們省去了很多人力物力,是我們現(xiàn)代生活不可或缺的一部分。尤其工業(yè)自動化的飛速發(fā)展以及電子商務(wù)在中國的模式逐漸發(fā)展和壯大。倉庫儲存成為一些大型公司所不可或缺的一部分,而在人工智能化的現(xiàn)在,我們迫切的希望機器代替人工來做一些工作。由此我們自行設(shè)計小組,想出了一款智能倉庫機器人來實現(xiàn)這一想法。</p>
9、<p> 本課程設(shè)計是由四個人合作完成,主要設(shè)計了智能倉庫機器人的整體功能,在我們力所能及的基礎(chǔ)上,實現(xiàn)了簡單的倉庫機器人的自主避障,以及相應(yīng)的語音報警信息。對倉庫里的環(huán)境進行實施的環(huán)境檢測,并反饋到上位機上。智能倉庫機器人主控芯片為STM32F103ZE單片機,它是一款32位單片機,具有很高的處理速度,和外設(shè)資源,完全滿足智能倉庫機器人的智能工作。實現(xiàn)對語音模塊、超聲波模塊、已經(jīng)各種傳感器的協(xié)調(diào)控制。并對超聲波實施檢測的距
10、離信息做出判斷和處理。</p><p> 關(guān)鍵詞: STM32單片機 智能倉庫機器人 避障 語音提示。 </p><p><b> 第一章 設(shè)計說明</b></p><p><b> 1.1 設(shè)計要求</b></p><p> 小車自主避障的設(shè)計 </p><p
11、><b> 語音模塊的設(shè)計</b></p><p> 各種傳感器實現(xiàn)環(huán)境的實施檢測。</p><p> 4、上位機的顯示模塊 </p><p> 5、整個系統(tǒng)的綜合調(diào)試要求</p><p><b> 1.2 設(shè)計方案</b></p><p> 要完成課設(shè)題目
12、要求,系統(tǒng)組成至少包括超聲波避障、語音提示及蜂鳴器報警、串口通信、電機驅(qū)動等幾部分。</p><p> 圖1 智能倉庫機器人內(nèi)部原理圖</p><p> 1. 進行路徑規(guī)劃實現(xiàn)機器人的自主避障以及行走 </p><p> 當機器人在倉庫中行走中,超聲波實施探測機器人前方的路況,當遇到障礙物時,超聲波將信息反饋到STM32 單片機,進行處理,然后單片機告知電機
13、驅(qū)動,使電機停止運行。蜂鳴器報警,語音模塊提示“請注意。前方有障礙”。此時超聲波再進行實施檢測路況,進行自主避障。</p><p> 具體功能:實現(xiàn)機器人的行走,使機器人可以在倉庫里自主行走并且當遇到障礙物時可以實現(xiàn)避障,此時也可以通過語音模塊進行有障礙物的報警提示。</p><p> 2. 安裝報警裝置,并帶有光敏和熱敏傳感器以及煙霧傳感器進行倉庫的災(zāi)情報告</p>
14、<p> 利用各種傳感器如光敏,熱敏,煙霧傳感器等等對倉庫內(nèi)部環(huán)境狀況進行實時檢測,當達到一定設(shè)置范圍時進行報警。由于實驗室現(xiàn)有的資源有限,以及時間的不允許,我們只進行了對溫度傳感器的調(diào)試。在以后的學(xué)習(xí)中我們會繼續(xù)對這個命題進行深入的研究。溫度傳感器對室內(nèi)溫度進行實施檢測,將檢測到的信息通過串口傳送到上位機上。進行實施的觀測。</p><p> 具體功能:其中光敏和熱敏以及煙霧傳感器用于倉庫內(nèi)檢測是
15、否有火災(zāi)煙霧等災(zāi)情。紅外傳感器、聲音傳感器則是檢測倉庫內(nèi)是否有可疑人員的進入。溫度傳感器和濕度傳感器來檢測倉庫里溫度和濕度的變化來檢測倉庫的室內(nèi)環(huán)境。通過收集傳感器的這些信息,記錄下來并實時的反映到主控制室內(nèi)進行調(diào)度控制和火災(zāi)防護。</p><p><b> 第二章 各模塊介紹</b></p><p> 3.1 總體模塊介紹</p><p&g
16、t; 系統(tǒng)由四個主要功能模塊組成:超聲波測距、語音及蜂鳴器報警、溫度測量、電機驅(qū)動、串行通信,等組成</p><p> ?、?超聲波測距、測量路況信息,實現(xiàn)小車的自由行走。</p><p> ?、?語音模塊和蜂鳴器模塊完成報警任務(wù)有路況信息和環(huán)境信息的報警。</p><p> ③ 溫度傳感器完成對環(huán)境溫度的檢測。并實時反饋到上位機上</p><
17、;p> ?、?電機驅(qū)動來控制電機來驅(qū)動小車行走。</p><p> 3.2 STM32單片機介紹</p><p> 圖2 STM32單片機內(nèi)部結(jié)構(gòu)</p><p> 主控芯片是智能倉庫器人的首腦部位,主控芯片的性能直接決定了自主移動式機器人的智能化程度,鑒于對機器人智能化的高度要求,我們選擇了功能強大的ARM STM32芯片,該芯片采用的是MCU內(nèi)核設(shè)
18、計公司ARM最新推出的先進Cortex-M3處理器,具有32位ARM Cortex-M3內(nèi)核,具有8個定時器和很多的中斷資源。提高了信息處理能力和處理速度。</p><p> 與同類的主控芯片相比,它性能穩(wěn)定,操作方便,抗干擾能力強,更適合作為自主移動式機器人的主控芯片。</p><p> 3.3 超聲波模塊介紹</p><p> 本次課程設(shè)計實驗用的超聲模
19、塊型號是DYP-ME007</p><p> DYP-ME007超聲波測距模塊可提供3cm--3.5m的非接觸式距離感測功能,圖1為DYP-ME007外觀,包括超聲波發(fā)射器、接收器與控制電路。其基本工作原理為給予此超聲波測距模塊一觸發(fā)信號后發(fā)射超聲波,當超聲波投射到物體而反射回來時,模塊輸出一回響信號,以觸發(fā)信號和回響信號間的時間差,來判定物體的距離。</p><p> 圖3 DYP
20、-ME007超聲波測距模塊</p><p> 該超聲波模塊時序圖如圖2所示,它的基本工作原理:首先需要提供一個短期的20us脈沖觸發(fā)信號。該模塊會發(fā)出8個40kHz周期電平并檢測回波信號。一旦檢測到有回波信號則輸出回響信號?;仨懶盘柺且粋€脈沖的寬度成正比的距離對象。可通過發(fā)射信號到收到回響信號時間間隔可以計算得到距離。公式:uS/58(或uS*0.01724)=厘米或者uS/148=英寸。而且最好測量周期為60
21、ms以上,以防止發(fā)射信號對回波信號的影響。</p><p> 圖4超聲波模塊時序圖</p><p> 圖5超聲模塊工作原理</p><p> 圖6 超聲波模塊工作流程圖</p><p> 3.4語音模塊和蜂鳴器模塊</p><p> 本次課程設(shè)計實驗使用的是ASR M08-A語音模塊,如圖4為關(guān)于ASR M0
22、8-A語音模塊的實物、供電及接口圖。</p><p> 圖7 ASR M08-A語音模塊的實物、供電及接口圖</p><p> ASR M08-A的供電:</p><p> ASR M08-A支持5~8V的外置電壓供電,可用4節(jié)1.5V干電池供電(標配一個4 節(jié)7 號帶開關(guān)電池盒)。最好采用5V直流電供電,電壓過高內(nèi)部3.3V 穩(wěn)壓器會嚴重發(fā)熱。</p&
23、gt;<p> 可以通過串口預(yù)留的電源端接入3.3V電壓為模塊供電,在這種方式下,電池供電那一端必須斷電。</p><p> 盡量避免電池供電,最好的方式是采取外部5V電壓接入電池供電端供電,或者與控制電路板共用3.3V的電壓供電(在串口端接入,此時電池供電端必須斷電?。?。</p><p> 關(guān)于ASR M08-A的接口</p><p> 串口
24、與單片機相連時接線方式如下:</p><p> 模塊GND----------單片機GND</p><p> 模塊TXD-----------單片機RXD</p><p> 模塊RXD-----------單片機TXD</p><p> 如果模塊和單片機系統(tǒng)共用電源的話:</p><p> 模塊3.3V 端-
25、---------單片機3.3V (此時斷開電池供電端)</p><p> 模塊自帶功放電路輸出,可直接連接8 歐姆0.5 瓦(8Ω 0.5W)的揚聲器。SPK+接揚聲器的正極,SPK-接揚聲器的負極。</p><p> LINE OUT為功放輸出接口,可接入外置功放的輸入端。</p><p> MIC 為外置麥克風(fēng)接口,插入外置麥克風(fēng)時內(nèi)置麥克風(fēng)自動斷路,此
26、時只有外置麥克風(fēng)起作用。</p><p> 在本次課程設(shè)計中,語音模塊實現(xiàn)對小車的實施報警,當遇到障礙物時,語音模塊接收主控芯片的指令,然后發(fā)出“請注意,前方有障礙”的語音提示。此時蜂鳴器也伴隨著報警信息。以提示遇到障礙。</p><p><b> 3.5 溫度測量</b></p><p> 圖8 DS18b20的內(nèi)部結(jié)構(gòu) </p&
27、gt;<p> DS18B20數(shù)字溫度傳感器接線方便,封裝成后可應(yīng)用于多種場合,如管道式,螺紋式,磁鐵吸附式,不銹鋼封裝式,型號多種多樣,有LTM8877,LTM8874等等。主要根據(jù)應(yīng)用場合的不同而改變其外觀。封裝后的DS18B20可用于電纜溝測溫,高爐水循環(huán) 測溫,鍋爐測溫,機房測溫,農(nóng)業(yè)大棚測溫,潔凈室測溫,彈藥庫測溫等各種非極限溫度場合。耐磨耐碰,體積小,使用方便,封裝形式多樣,適用于各種狹小空間 設(shè)備數(shù)字測溫和
28、控制領(lǐng)域。</p><p><b> 1: 技術(shù)性能描述</b></p><p> ?、?、 獨特的單線接口方式,DS18B20在與微處理器連接時僅需要一條口線即可實現(xiàn)微處理器與DS18B20的雙向通訊。</p><p> ?、?、測溫范圍 -55℃~+125℃,固有測溫誤差(注意,不是分辨率,這里之前是錯誤的)1℃。</p>&
29、lt;p> ?、?、支持多點組網(wǎng)功能,多個DS18B20可以并聯(lián)在唯一的三線上,最多只能并聯(lián)8個,實現(xiàn)多點測溫,如果數(shù)量過多,會使供電電源電壓過低,從而造成信號傳輸?shù)牟环€(wěn)定。</p><p> ④、工作電源: 3~5V/DC (可以數(shù)據(jù)線寄生電源)</p><p> ⑤ 、在使用中不需要任何外圍元件</p><p> ?、蕖?測量結(jié)果以9~12位數(shù)字量方式串
30、行傳送</p><p> ?、?、不銹鋼保護管直徑 Φ6</p><p> ?、?、適用于DN15~25, DN40~DN250各種介質(zhì)工業(yè)管道和狹小空間設(shè)備測溫</p><p> ?、?、 標準安裝螺紋 M10X1, M12X1.5, G1/2”任選</p><p> ?、?、PVC電纜直接出線或德式球型接線盒出線,便于與其它電器設(shè)備連接&l
31、t;/p><p> 利用溫度傳感器檢測倉庫的實時信息,對倉庫的信息進行反饋便于操作人員的控制和調(diào)節(jié)。</p><p> 3.6 電機驅(qū)動模塊</p><p> 本次課程設(shè)計實驗使用的電機驅(qū)動模塊是L298電機驅(qū)動模塊,電機驅(qū)動實現(xiàn)小車的自由行走,來協(xié)調(diào)控制直流電機。</p><p><b> 產(chǎn)品技術(shù)參數(shù):</b>&
32、lt;/p><p> 1.驅(qū)動芯片:L298N雙H橋直流電機驅(qū)動芯片</p><p> 2.驅(qū)動部分端子供電范圍Vs:+5V~+35V ; 如需要板內(nèi)取電,則供電范圍Vs:+7V~+35V</p><p> 3.驅(qū)動部分峰值電流Io:2A</p><p> 4.邏輯部分端子供電范圍Vss:+5V~+7V(可板內(nèi)取電+5
33、V)</p><p> 5.邏輯部分工作電流范圍:0~36mA</p><p> 6.控制信號輸入電壓范圍: 低電平:-0.3V≤Vin≤1.5V 高電平:2.3V≤Vin≤Vss</p><p> 7.使能信號輸入電壓范圍: 低電平:-0.
34、3≤Vin≤1.5V(控制信號無效) 高電平:2.3V≤Vin≤Vss(控制信號有效)</p><p> 8.最大功耗:20W(溫度T=75℃時)</p><p> 9.存儲溫度:-25℃~+130℃</p><p> 10.驅(qū)動板尺寸:55mm*50mm*35mm(帶固定銅柱和散熱片高度)</p><p
35、> 11.驅(qū)動板重量:35g</p><p> 12.其他擴展:控制方向指示燈、邏輯部分板內(nèi)取電接口。</p><p><b> 基本原理:</b></p><p> 電機的驅(qū)動: 板上的ENA與ENB為高電平時有效,這里的電平指的是TTL電平。ENA為A1和A2的使能端,ENB為B1和IB2的使能端。BJ接步進電機公共
36、端。</p><p> 電機控制邏輯如下所示,其中A、B、C、D為步進電機的四個線圈,為1表示有電流通過,為0表示沒有電流流過。線圈連線圖如下圖所示(以四相步進電機為例)。</p><p> 表1 電機驅(qū)動的真值表</p><p> 圖9 L298電機驅(qū)動模塊實物圖</p><p><b> 第三章 程序設(shè)計</b&
37、gt;</p><p><b> 4.1串口發(fā)送程序</b></p><p> #include "stm32f10x.h"</p><p> #include "stm32_eval.h"</p><p> #include <stdio.h></p&g
38、t;<p> /*神州III號LED燈相關(guān)定義*/</p><p> #define RCC_GPIO_LED RCC_APB2Periph_GPIOF /*LED使用的GPIO時鐘*/</p><p> #define LEDn 4 /*神舟III號LED數(shù)量*/</p><p
39、> #define GPIO_LED GPIOF /*神舟III號LED燈使用的GPIO組*/</p><p> #define DS1_PIN GPIO_Pin_6 /*DS1使用的GPIO管腳*/</p><p> #define DS2_PIN GPIO_Pin_7/*DS2使用
40、的GPIO管腳*/</p><p> #define DS3_PIN GPIO_Pin_8 /*DS3使用的GPIO管腳*/</p><p> #define DS4_PIN GPIO_Pin_9/*DS4使用的GPIO管腳*/</p><p> vu32 table[10]={0x70,0x6C,0x61,
41、0x79,0x2C,0x30,0x30,0x31,0x2C,0x24};</p><p> vu32 x=0,y=0;</p><p> USART_InitTypeDef USART_InitStructure;</p><p> /* Private function prototypes ---------------------------------
42、--------------*/</p><p> #ifdef __GNUC__</p><p> #define PUTCHAR_PROTOTYPE int __io_putchar(int ch)</p><p><b> #else</b></p><p> #define PUTCHAR_PROTOTY
43、PE int fputc(int ch, FILE *f)</p><p> #endif /* __GNUC__ */</p><p> /* Private functions ---------------------------------------------------------*/</p><p> void Delay(vu32 nCoun
44、t)</p><p><b> {</b></p><p> for(; nCount != 0; nCount--);</p><p><b> }</b></p><p> int main(void)</p><p><b> {</b>
45、</p><p> /*LED管腳初始化*/</p><p> GPIO_InitTypeDef GPIO_InitStructure;</p><p> RCC_APB2PeriphClockCmd(RCC_GPIO_LED, ENABLE);</p><p> GPIO_InitStructure.GPIO_Pin = DS1_P
46、IN|DS2_PIN|DS3_PIN|DS4_PIN ;</p><p> GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;</p><p> GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;</p><p> GPIO_Init(GPIO_LED, &G
47、PIO_InitStructure);</p><p> GPIO_SetBits(GPIO_LED, DS1_PIN|DS2_PIN|DS3_PIN|DS4_PIN);/*關(guān)閉LED燈*/ </p><p> /*串口參數(shù)配置*/</p><p> USART_InitStructure.USART_BaudRate = 115200;
48、/*設(shè)置波特率為115200*/</p><p> USART_InitStructure.USART_WordLength = USART_WordLength_8b; /*設(shè)置數(shù)據(jù)位為8位*/</p><p> USART_InitStructure.USART_StopBits = USART_StopBits_1; /*設(shè)置停止位為1位*/</p><p&
49、gt; USART_InitStructure.USART_Parity = USART_Parity_No; /*無奇偶校驗*/ </p><p> USART_InitStructure.USART_HardwareFlowControl=USART_HardwareFlowControl_None; /*沒有硬件流控*/</p><p> USART_InitStr
50、ucture.USART_Mode = USART_Mode_Rx | USART_Mode_Tx; /*發(fā)送與接收*/</p><p> /*完成串口COM1的時鐘配置、GPIO配置,根據(jù)上述參數(shù)初始化并使能*/</p><p> STM_EVAL_COMInit(COM1, &USART_InitStructure);</p><p>
51、printf("\n\r---------------------------------------------\n ");</p><p> printf("\n\rWWW.ARMJISHU.COM\n ");</p><p> printf("\n\r神舟III號 串口1發(fā)送實驗程序\n");</p>&l
52、t;p><b> while (1)</b></p><p><b> {</b></p><p> GPIO_ResetBits(GPIO_LED, DS1_PIN);</p><p> Delay(0x3FFFFF);</p><p> GPIO_SetBits(GPIO_LED
53、, DS1_PIN);</p><p> Delay(0x3FFFFF); </p><p> for(x=0;x<10;x++)</p><p><b> {</b></p><p> USART_SendData(EVAL_COM1, table[x]);</p><p>
54、while (USART_GetFlagStatus(EVAL_COM1, USART_FLAG_TXE) == RESET);</p><p><b> }</b></p><p> Delay(0x3fffff);</p><p> Delay(0x3fffff);</p><p> Delay(0x3f
55、ffff);</p><p><b> }</b></p><p><b> }</b></p><p> PUTCHAR_PROTOTYPE</p><p><b> {</b></p><p> USART_SendData(EVAL_CO
56、M1, (uint8_t) ch); /*發(fā)送一個字符函數(shù)*/ </p><p> while (USART_GetFlagStatus(EVAL_COM1, USART_FLAG_TC) == RESET)/*等待發(fā)送完成*/</p><p><b> {</b></p><p><b> }</b></p&
57、gt;<p> return ch;</p><p><b> }</b></p><p><b> 4.2定時器程序</b></p><p> #include "stm32f10x_lib.h"</p><p> vu16 CCR1_Val = 400
58、00;/* 初始化輸出比較通道1計數(shù)周期變量*/</p><p> vu16 CCR2_Val = 20000;/* 初始化輸出比較通道2計數(shù)周期變量*/</p><p> vu16 CCR3_Val = 10000;/* 初始化輸出比較通道3計數(shù)周期變量*/</p><p> vu16 CCR4_Val = 5000;/* 初始化輸出
59、比較通道4計數(shù)周期變量*/</p><p> vu32 table[4]={0x01,0x02,0x03,0x04};</p><p><b> vu32 x=0;</b></p><p> #ifdef __GNUC__</p><p> #define PUTCHAR_PROTOTYPE int __io_p
60、utchar(int ch)</p><p><b> #else</b></p><p> #define PUTCHAR_PROTOTYPE int fputc(int ch, FILE *f)</p><p> #endif /* __GNUC__ */</p><p> void Delay(vu32 n
61、Count)</p><p><b> {</b></p><p> for(; nCount != 0; nCount--);</p><p><b> }</b></p><p> /* 自定義函數(shù)聲明 -------------------------------------
62、-------------------*/</p><p> void RCC_Configuration(void);</p><p> void GPIO_Configuration(void);</p><p> void NVIC_Configuration(void);</p><p> void TIM_Configura
63、tion(void);</p><p> void USART_Configuration(void);</p><p> int main(void)</p><p><b> {</b></p><p> RCC_Configuration();/* 設(shè)置系統(tǒng)時鐘 */</p><p
64、> NVIC_Configuration();/* 設(shè)置 NVIC */</p><p> GPIO_Configuration();USART_Configuration(); /* 設(shè)置 GPIO 端口 */</p><p> TIM_Configuration(); /* 設(shè)置 TIM */</p><p> whil
65、e (1);</p><p><b> }</b></p><p> void RCC_Configuration(void)</p><p><b> {</b></p><p> RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM2, ENABLE);//
66、打開 TIM2 時鐘</p><p> RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOF, ENABLE);//打開 APB 總線上的 GPIOA,USART1 時鐘 */</p><p><b> }</b></p><p> void GPIO_Configuration(void)</p&
67、gt;<p><b> {</b></p><p> /* 定義 GPIO 初始化結(jié)構(gòu)體 */</p><p> GPIO_InitTypeDef GPIO_InitStructure;GPIO_InitStructure </p><p> /* 配置 GPIOA.4, GPIOA.5, GPIOA.6, GPIOA.7
68、 為推挽輸出 */</p><p> GPIO_InitStructure.GPIO_Pin = GPIO_Pin_6 | GPIO_Pin_7 | GPIO_Pin_8 | GPIO_Pin_9;</p><p> GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;</p><p> GPIO_InitStruc
69、ture.GPIO_Speed = GPIO_Speed_50MHz;</p><p> GPIO_Init(GPIOF, &GPIO_InitStructure);</p><p><b> }</b></p><p> void TIM_Configuration(void)</p><p><b
70、> {</b></p><p> /* 定義 TIM_TimeBase 初始化結(jié)構(gòu)體 TIM_TimeBaseStructure */</p><p> TIM_TimeBaseInitTypeDef TIM_TimeBaseStructure;</p><p> /* 定義 TIM_OCInit 初始化結(jié)構(gòu)體 TIM_OCInitStr
71、ucture */</p><p> TIM_OCInitTypeDef TIM_OCInitStructure;</p><p> TIM_TimeBaseStructure.TIM_Period = 65535;</p><p> TIM_TimeBaseStructure.TIM_Prescaler = 0;</p><p>
72、 TIM_TimeBaseStructure.TIM_ClockDivision = 0;</p><p> TIM_TimeBaseStructure.TIM_CounterMode = TIM_CounterMode_Up;</p><p> TIM_TimeBaseInit(TIM2 , &TIM_TimeBaseStructure);</p><p
73、> /* 設(shè)置預(yù)分頻值,且立即裝入 */</p><p> TIM_PrescalerConfig(TIM2 , 7199 , TIM_PSCReloadMode_Immediate);</p><p> TIM_OCInitStructure.TIM_OCMode = TIM_OCMode_Timing;</p><p> TIM_OCInitStr
74、ucture.TIM_OutputState = TIM_OutputState_Enable;</p><p> TIM_OCInitStructure.TIM_OCPolarity = TIM_OCPolarity_High;</p><p> TIM_OCInitStructure.TIM_Pulse = CCR1_Val;</p><p> TIM
75、_OC1Init(TIM2, &TIM_OCInitStructure);</p><p> TIM_OCInitStructure.TIM_Pulse = CCR2_Val;</p><p> TIM_OC2Init(TIM2, &TIM_OCInitStructure);</p><p> TIM_OCInitStructure.TIM_
76、Pulse = CCR3_Val;</p><p> TIM_OC3Init(TIM2, &TIM_OCInitStructure);</p><p> TIM_OCInitStructure.TIM_Pulse = CCR4_Val;</p><p> TIM_OC4Init(TIM2, &TIM_OCInitStructure);<
77、;/p><p> /* 禁止預(yù)裝載寄存器 */</p><p> TIM_OC1PreloadConfig(TIM2 , TIM_OCPreload_Disable);</p><p> TIM_OC2PreloadConfig(TIM2 , TIM_OCPreload_Disable);</p><p> TIM_OC3PreloadC
78、onfig(TIM2 , TIM_OCPreload_Disable);</p><p> TIM_OC4PreloadConfig(TIM2 , TIM_OCPreload_Disable);</p><p> TIM_ITConfig(TIM2 , TIM_IT_CC1 | TIM_IT_CC2 | TIM_IT_CC3 | TIM_IT_CC4 , ENABLE); /*
79、使能 TIM 中斷 */</p><p> TIM_Cmd(TIM2 , ENABLE);/* 啟動 TIM 計數(shù) */</p><p><b> }</b></p><p> void NVIC_Configuration(void)</p><p><b> {</b>
80、</p><p> NVIC_InitTypeDef NVIC_InitStructure; /* 定義 NVIC 初始化結(jié)構(gòu)體 */</p><p> /* #ifdef...#else...#endif結(jié)構(gòu)的作用是根據(jù)預(yù)編譯條件決定中斷向量表起始地址*/ </p><p> #ifdef VECT_TAB_RAM </p>
81、<p> /* 中斷向量表起始地址從 0x20000000 開始 */ </p><p> NVIC_SetVectorTable(NVIC_VectTab_RAM , 0x0); </p><p> #else /* VECT_TAB_FLASH */</p><p> /* 中斷向量表起始地址從 0x80000000 開始 */ </
82、p><p> NVIC_SetVectorTable(NVIC_VectTab_FLASH , 0x0); </p><p><b> #endif</b></p><p> /* 選擇優(yōu)先級分組0 */</p><p> NVIC_PriorityGroupConfig(NVIC_PriorityGroup_0
83、);</p><p> /* 開啟 TIM2 中斷, 0級先占優(yōu)先級,0級后占優(yōu)先級 */</p><p> NVIC_InitStructure.NVIC_IRQChannel = TIM2_IRQChannel;</p><p> NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 0;</
84、p><p> NVIC_InitStructure.NVIC_IRQChannelSubPriority = 0;</p><p> NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;</p><p> NVIC_Init(&NVIC_InitStructure);</p><p><
85、;b> }</b></p><p> void USART_Configuration(void)</p><p><b> {</b></p><p> /*串口參數(shù)配置*/</p><p> USART_InitTypeDef USART_InitStructure;</p>
86、<p> USART_InitStructure.USART_BaudRate = 115200; /*設(shè)置波特率為115200*/</p><p> USART_InitStructure.USART_WordLength = USART_WordLength_8b; /*設(shè)置數(shù)據(jù)位為8位*/</p><p> USART_InitStructure.USA
87、RT_StopBits = USART_StopBits_1; /*設(shè)置停止位為1位*/</p><p> USART_InitStructure.USART_Parity = USART_Parity_No; /*無奇偶校驗*/ </p><p> USART_InitStructure.USART_HardwareFlowControl=USART_HardwareFl
88、owControl_None; /*沒有硬件流控*/</p><p> USART_InitStructure.USART_Mode = USART_Mode_Rx | USART_Mode_Tx; /*發(fā)送與接收*/</p><p> /*完成串口COM1的時鐘配置、GPIO配置,根據(jù)上述參數(shù)初始化并使能*/</p><p> USART_Init
89、(USART1, &USART_InitStructure);</p><p> USART_Cmd(USART1,ENABLE);</p><p><b> }</b></p><p><b> 定時器中斷服務(wù)函數(shù)</b></p><p> /* Includes --------
90、----------------------------------------------------------*/</p><p> #include "stm32f10x_it.h"</p><p> extern vu16 CCR1_Val;/* 聲明輸出比較通道1計數(shù)周期變量*/</p><p> extern vu1
91、6 CCR2_Val;/* 聲明輸出比較通道2計數(shù)周期變量*/</p><p> extern vu16 CCR3_Val;/* 聲明輸出比較通道3計數(shù)周期變量*/</p><p> extern vu16 CCR4_Val;/* 聲明輸出比較通道4計數(shù)周期變量*/</p><p> extern vu32 table[4];&l
92、t;/p><p> extern vu32 x;</p><p> void TIM2_IRQHandler(void)</p><p><b> {</b></p><p> vu16 capture = 0; /* 當前捕獲計數(shù)值局部變量 */</p><p> if (TIM_
93、GetITStatus(TIM2, TIM_IT_CC1) != RESET)</p><p><b> {</b></p><p> GPIO_WriteBit(GPIOF,GPIO_Pin_6,(BitAction)(1GPIO_ReadOutputDataBit(GPIOF, GPIO_Pin_6)));</p><p> fo
94、r(x=0;x<4;x++)</p><p><b> {</b></p><p> USART_SendData(USART1, table[x]);</p><p> while (USART_GetFlagStatus(USART1, USART_FLAG_TXE) == RESET);</p><p
95、><b> }</b></p><p> TIM_SetCompare1(TIM2, capture + CCR1_Val);</p><p> TIM_ClearITPendingBit(TIM2, TIM_IT_CC1);</p><p><b> }</b></p><p>
96、else if (TIM_GetITStatus(TIM2, TIM_IT_CC2) != RESET)</p><p><b> {</b></p><p> GPIO_WriteBit(GPIOF,GPIO_Pin_7,(BitAction)(1-GPIO_ReadOutputDataBit(GPIOF, GPIO_Pin_7)));</p>&
97、lt;p> capture = TIM_GetCapture2(TIM2);</p><p> TIM_SetCompare2(TIM2, capture + CCR2_Val);</p><p> TIM_ClearITPendingBit(TIM2, TIM_IT_CC2);</p><p><b> }</b></p&
98、gt;<p> else if (TIM_GetITStatus(TIM2, TIM_IT_CC3) != RESET)</p><p><b> {</b></p><p> GPIO_WriteBit(GPIOF, GPIO_Pin_8, (BitAction)(1 - GPIO_ReadOutputDataBit(GPIOF, GPIO_Pi
99、n_8)));</p><p> capture = TIM_GetCapture3(TIM2);</p><p> TIM_SetCompare3(TIM2, capture + CCR3_Val);</p><p> TIM_ClearITPendingBit(TIM2, TIM_IT_CC3);</p><p><b>
100、 }</b></p><p><b> else {</b></p><p> GPIO_WriteBit(GPIOF, GPIO_Pin_9, (BitAction)(1 - GPIO_ReadOutputDataBit(GPIOF, GPIO_Pin_9)));</p><p> capture = TIM_GetCap
101、ture4(TIM2);</p><p> TIM_SetCompare4(TIM2, capture + CCR4_Val);</p><p> TIM_ClearITPendingBit(TIM2, TIM_IT_CC4);</p><p><b> }</b></p><p><b> }<
102、/b></p><p><b> 第四章 心得體會</b></p><p> 經(jīng)過為期十天的課程設(shè)計,我作為自行命題一個小組的組長,感覺收獲很大,在經(jīng)過這十天的設(shè)計,我們對智能倉庫機器人的結(jié)構(gòu)和全面構(gòu)思,有了深刻的理解和深入,在基于STM32的單片機為核心的智能機器人,完成了自主避障和自動報警已經(jīng)溫度檢測的功能,取得了良好的效果。且硬件電路簡單、工作穩(wěn)定、可
103、靠,體積小巧、線路簡單、成本低、應(yīng)用靈活、測量精度和實時性滿足倉庫的要求。</p><p> 在這十天里,我作為負責人,首先,依據(jù)各個成員的喜好和能力,完成了對任務(wù)的分工,并著重學(xué)習(xí)了STM32單片機,利用大塊的時間,充分的把STM32單片機進行了系統(tǒng)的了解和學(xué)習(xí),通過查閱資料和同學(xué)的幫助,已經(jīng)完成了對STM32單片機的學(xué)習(xí)。這次的課程設(shè)計我不僅加深了對STM32單片機理論的理解,加深了我對所學(xué)單片機C語言命令
104、的理解,以及邏輯性的鍛煉。將理論很好地應(yīng)用到實際當中去,而且我還學(xué)會了如何去培養(yǎng)我們的創(chuàng)新精神,合作精神。從而不斷地戰(zhàn)勝自己,超越自己。但同時,我也從這次課設(shè)中認識到了自己的不足。十天的課設(shè),讓我收獲了很多。為了能實現(xiàn)任務(wù)要求,我自學(xué)了單片機課上老師沒有講過或只略微提過的知識內(nèi)容;研究程序,加深了我對單片機C語言的理解;自己的組織能力和領(lǐng)導(dǎo)能力還需要進一步的提高。在軟件和硬件連接的時候出現(xiàn)了許多問題,這告訴我,做事不要眼高手低,一定要扎
105、實并且具有超強的邏輯性。要理論聯(lián)系實踐,個人覺得課程設(shè)計意義重大,能學(xué)到很多普通理論課上學(xué)不到的東西,對于以后的學(xué)習(xí)和工作,有著很大的積極意義。</p><p> 并且,在此感謝xx老師和xx老師及同學(xué)對我的幫助。</p><p><b> 參考文獻</b></p><p> 1)《微型計算機控制系統(tǒng)》 賴壽宏,機械工業(yè)出版社(教材)&l
溫馨提示
- 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. 眾賞文庫僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 信號處理課程設(shè)計--智能倉庫機器人
- 單片機課程設(shè)計---智能路燈控制
- 單片機課程設(shè)計---智能路燈控制
- 單片機課程設(shè)計---電動智能小車
- 單片機課程設(shè)計--智能小車—硬件設(shè)計
- 單片機課程設(shè)計-單片機課程設(shè)計---電子時鐘
- 單片機課程設(shè)計---智能電子鐘
- 單片機課程設(shè)計-智能溫度控制顯示
- 51單片機課程設(shè)計——智能電風(fēng)扇
- 單片機控制的智能窗簾課程設(shè)計
- 單片機課程設(shè)計智能定時器
- 單片機課程設(shè)計---智能路燈控制.doc
- 單片機課程設(shè)計
- 單片機課程設(shè)計
- 單片機課程設(shè)計
- 單片機課程設(shè)計
- 智能聲控電風(fēng)扇--單片機課程設(shè)計
- 單片機課程設(shè)計--智能搶答計分器
- 單片機課程設(shè)計智能家居系統(tǒng)
- 單片機課程設(shè)計---基于單片機的溫度控制智能電風(fēng)扇
評論
0/150
提交評論