基于stm32仿生六足機器人畢業(yè)設計_第1頁
已閱讀1頁,還剩43頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、<p><b>  畢業(yè)設計(論文)</b></p><p>  基于STM32仿生六足機器人</p><p>  學院: 電子與信息工程學院</p><p>  專業(yè): XXXXXXXXXXXXXXXX</p><p>  學號: XXXXXXXXXXX</p><p><b&g

2、t;  作者: XXX</b></p><p><b>  指導老師: XXX</b></p><p>  基于STM32仿生六足機器人</p><p>  電子與信息工程學院 XXXXXXXXXXXX專業(yè)</p><p>  作者 XXX 指導教師 XXX</p><p>  

3、【摘 要】在科技高速發(fā)展的信息社會,機器人在工業(yè),軍事,探測等各個領域起著越來越重要和不可替代的位置,機器人研究成為目前世界各國研究的熱點。仿生六足機器人涉及仿生學、機械學、信息技術和傳感技術等眾多學科,是機器人研究的一大分支。仿生六足機器人模仿生物界爬行動物的肢體結構,具有良好的機動性和自適應能力,在軍事運輸、礦山開采、星球探測等眾多領域具有廣闊前景。本設計采用ARM內核結構(Cortex-M3)的STM32F103RBT6為主控芯

4、片,通過內部定時器產生脈寬調制信號,以及使用74HC138進行分時復用來控制六足機器人的關節(jié),即18個MG955舵機。通過BMX-02藍牙轉串口模塊連接手機和機器人,實現(xiàn)手機藍牙遙控。采用UN2003A電機驅動芯片驅動步進電機,并配合紅外傳感器使機器人實現(xiàn)智能避障。由于該機器人擁有18自由度,肢體靈活,還可實現(xiàn)各種類似舞蹈的特殊動作。</p><p>  【關鍵詞】 仿生六足機器人;STM32F103RBT6;舵

5、機控制 </p><p><b>  目錄</b></p><p><b>  1緒論1</b></p><p>  1.1 課題研究背景意義 1</p><p>  1.2 仿生六足機器人的現(xiàn)狀1</p><p>  1.3 本設計系統(tǒng)結構2</p>

6、<p>  1.4 本論文的組織結構2</p><p>  2肢體結構和步態(tài)規(guī)劃3</p><p>  2.1 肢體結構設計3</p><p>  2.2 步態(tài)規(guī)劃3</p><p>  2.2.1 三角步態(tài)3</p><p>  2.3 本章小結4</p><p> 

7、 3硬件設計介紹與系統(tǒng)各部分工作原理5</p><p>  3.1主控芯片STM32F103RBT6簡介5</p><p>  3.2 STM32F103RBT6最小系統(tǒng)電路5</p><p>  3.2.1 主芯片原理圖5</p><p>  3.2.2 晶振電路6</p><p>  3.2.3 復位電路

8、6</p><p>  3.2.4下載電路7</p><p>  3.3 舵機原理與控制7</p><p>  3.3.1 舵機內部結構7</p><p>  3.3.2 舵機的工作原理7</p><p>  3.3.3 舵機控制方法8</p><p>  3.3.4 輝盛MG995

9、舵機相關參數8</p><p>  3.4 舵機驅動電路9</p><p>  3.5 步進電機驅動電路9</p><p>  3.6 藍牙接收電路10</p><p>  3.7 供電系統(tǒng)介紹10</p><p>  3.7.1舵機供電10</p><p>  3.7.2主芯片及其

10、他電路供電10</p><p>  3.8 本章小結10</p><p>  4軟件流程設計與開發(fā)工具介紹10</p><p>  4.1 軟件流程框圖10</p><p>  4.2 PWM脈沖信號的形成11</p><p>  4.3 行走程序介紹13</p><p>  4.4

11、 藍牙上位機設計14</p><p>  4.5 藍牙接收程序介紹15</p><p>  4.6 舞蹈子程序介紹16</p><p>  4.7 避障子程序介紹17</p><p>  4.8 本章小結17</p><p>  5設計制作與調試過程17</p><p>  5.1

12、硬件電路設計17</p><p>  5.1.1 原理圖PCB電路與制作工藝設計18</p><p>  5.1.2 PCB板的檢測18</p><p>  5.2 初步軟件編程與調試18</p><p>  5.3 調試過程中出現(xiàn)的問題18</p><p><b>  6結束語18</b&

13、gt;</p><p><b>  7致謝19</b></p><p><b>  參考文獻20</b></p><p><b>  英文摘要21</b></p><p>  附錄一:原理圖22</p><p>  附錄二:PCB圖25<

14、/p><p>  附錄三:實物圖27</p><p>  附錄四:器件清單28</p><p>  附錄五:部分程序29</p><p><b>  1.緒論</b></p><p>  1.1 課題研究背景意義</p><p>  機器人是集合了電子技術、機械技術、傳感

15、器技術、智能控制技術等于一體的高科技產品。各國現(xiàn)今大力的對它研究,研究機器人的水平在一定程度上反應了該國科技的水平。隨著科技的發(fā)展,人們對機器人的需求也越來越高,人們希望機器人能在復雜環(huán)境中既具有高移動能力,又具有高可靠性。過去的機器人結構多為輪式結構,這種機器人只局限于二維平面的運動,對于那些崎嶇不平以及有高度差的路面將失去靈活性,因此外形類似人類或昆蟲的兩足甚至多足機器人誕生了。</p><p>  仿生六足

16、機器人是基于仿生學原理與電子技術相結合的足式機器人。和輪式或著履帶式的機器人相比較,六足機器人自由度比較多、相對靈活、但結構復雜、控制繁瑣[1]。由于六足機器人的腿部是離散結構,具有較好的機動性,它可以選擇最優(yōu)的立足點來實現(xiàn)自身的平衡,從而實現(xiàn)一些輪式或履帶式機器人無法實現(xiàn)的工作,例如攀爬階梯,橫跨溝,坎等,即使在不平的路面,也能通過控制腿的伸縮使機身保持水平。由于以上的諸多特點,足式的機器人成為當今的科技研究熱點。</p>

17、<p>  1.2 仿生六足機器人的現(xiàn)狀</p><p>  最近在國外科技會展上出現(xiàn)了一款基于仿生學的六足機器人。這款命名為“蟑螂”的機器能夠模仿昆蟲行走,有較強通過性?!癕ANTIS(蟑螂)”行走機器人是由名為micromagic systems的公司制造,駕駛艙內能夠容納一名駕駛員。MANTIS機器人模仿了六足行進模式的昆蟲,六足機器人行走的時候腿分為兩組,不斷的重復腳抬高、前進、落下動作,

18、抬起的三條腿正好連成三角形形狀,這樣就能夠確保行走時的穩(wěn)定性,這種行走方法速度比較慢,但是很適合在復雜的地形行走。</p><p>  圖1-1MANTIS模仿昆蟲行走模式</p><p>  由上海交通大學設計研發(fā)出的“六爪章魚”救援機器人進行了載人試驗?!傲φ卖~”由18個直流電機作為驅動,高度為1米,伸展時的大小能達到4米。它是通過遠程控制,能夠非常靈敏的向各個方向行走,速度最高能達

19、1.2千米/小時,能載重200kg的物體?!傲φ卖~”吸引人的地方不只是它的外表,它的用途主要是用來救援和環(huán)境的探測,能夠在核電站等具有高輻射的惡劣環(huán)境下工作,并且?guī)е鴻z測工具進入危險環(huán)境作業(yè)。同時該機器人還可在火災、水下、地震災區(qū)進行搜索救援任務。</p><p>  圖1-1 2013年5月上海科技 圖1-2 2012年上海工博會,美</p><p>  節(jié)上,小朋友體驗六足機

20、器人 女與機器人大跳“江南style” </p><p>  1.3 本設計系統(tǒng)結構</p><p>  該機器人采用STM32為主控芯片,通過按鍵進行功能選擇。當選擇藍牙控制功能時,機器人將通過藍牙接收電路接收手機端發(fā)來的信號,主芯片對藍牙信號進行處理,使機器人做出相應動作。當選擇避障功能時,主芯片控制步進電機電路使步進電機帶動紅外傳感器旋轉,紅外傳感器對外部環(huán)境掃描并判斷,反饋

21、給主芯片,主芯片對紅外傳感器傳來信息處理并控制舵機轉動,使機器人產生相應動作。當選擇舞蹈功能時,機器人將自動跳出有節(jié)奏的動作。</p><p><b>  圖1-3 系統(tǒng)結構</b></p><p>  1.4本論文的組織結構</p><p>  第一章闡述課題的背景,課題的研究意義,國內外發(fā)展現(xiàn)狀,并介紹了本課題的主要工作內容和系統(tǒng)框圖。&l

22、t;/p><p>  第二章介紹仿生六足機器人的步態(tài)規(guī)劃,詳細介紹三角步態(tài)的原理及機器人實現(xiàn)行走的動作控制,以及機器人的肢體結構。</p><p>  第三章詳細的介紹了系統(tǒng)硬件的具體實現(xiàn)。把硬件部分一一的列舉出來,并分析各個硬件的工作原理,引腳的連接。</p><p>  第四章介紹了軟件開發(fā)工具和軟件的具體實現(xiàn)方法。包括開發(fā)環(huán)境介紹,脈寬調制信號的生成,機器人行走的

23、軟件設計,藍牙信號的接收設計等。</p><p>  第五章總結了系統(tǒng)的工作,以及對整個系統(tǒng)的展望。</p><p>  2.肢體結構設計及步態(tài)規(guī)劃</p><p><b>  2.1肢體結構設計</b></p><p>  一期方案:采用0.8mm鋁板為肢體原料,通過鐵皮剪刀裁剪出機器人肢體的各個部分形狀,通過鐵釘鉆孔

24、,螺絲固定,組裝成肢體架構。此方案完全為自主設計,成本較低,但由于鋁板較薄,硬度不夠,負重能力較差,且鋁板裁剪過程中難免存在誤差,造成機器人靈活性下降。以下為采用方案一制作出的第一版機器人,僅能實現(xiàn)行走。</p><p>  二期方案:在吸取方案一的經驗教訓后,對肢體結構進行改造,采用3mm的硬質支架,從而解決了由于支架造成的影響。</p><p>  圖2-1 方案一支架

25、 圖2-2 方案二支架</p><p>  2.2六足機器人步態(tài)規(guī)劃</p><p>  2.2.1三角步態(tài):</p><p>  為了實現(xiàn)六足機器人的平衡與運動,采用了三角步態(tài)的工作方式 。行走的時后將六條腿劃分成兩組,每組腿構成三角形,不斷的重復著抬起、前進、放下動作,這樣就可以保證行進過程的穩(wěn)定性[2]。</p><p

26、>  六足機器人的舵機分布如圖2-3所示,因為一足的運動需要3個舵機,根據六足的不同位置,將18個舵機進行命名,分別為頭右1,頭右2,頭右3,中右1,中右2,中右3,尾右1,尾右2,尾右3,頭左1,頭左2,頭左3,中左1,中左2,中左3,尾左1,尾左2,尾左3。</p><p>  圖2-3 舵機分布命名</p><p>  前進時每支腿的運動情況如下:</p><

27、;p>  第一步驟:頭右2、尾右2、中左2抬起; </p><p>  第二步驟:頭右1、尾右1、中左1,前轉,同時頭左1、尾左1、中右1歸位;</p><p>  第三步驟:頭左2、尾右2、中右2放下;</p><p>  第四步驟:頭左2、尾左2、中右2抬起;</p><p>  第五步驟:頭左1、尾左1、中右1前移,同時頭右1、尾

28、右1、中左1,歸位;</p><p>  第六步驟:頭左2、尾左2、中右2放下;</p><p>  后退時每支腿的運動情況如下:</p><p>  第一步驟:頭右2、尾右2、中左2抬起; </p><p>  第二步驟:頭右1、尾右1、中左1,后轉,同時頭左1、尾左1、中右1歸位;</p><p>  第三步驟:頭

29、左2、尾右2、中右2放下;</p><p>  第四步驟:頭左2、尾左2、中右2抬起;</p><p>  第五步驟:頭左1、尾左1、中右1后轉,同時頭右1、尾右1、中左1,歸位;</p><p>  第六步驟:頭左2、尾左2、中右2放下;</p><p>  在需要左右移動時,沒有選擇螃蟹橫移法,而是需要先轉向,然后再前進或后退。</

30、p><p>  左轉時每支腿的運動情況如下:</p><p>  第一步驟:頭右2、尾右2、中左2抬起; </p><p>  第二步驟:頭右1、尾右1、中左1,前轉,同時頭左1、尾左1、中右1歸位;</p><p>  第三步驟:頭左2、尾右2、中右2放下;</p><p>  第四步驟:頭左2、尾左2、中右2抬起;&l

31、t;/p><p>  第五步驟:頭左1、尾左1、中右1后轉,同時頭右1、尾右1、中左1,歸位;</p><p>  第六步驟:頭左2、尾左2、中右2放下;</p><p>  右轉時每支腿的運動情況如下:</p><p>  第一步驟:頭右2、尾右2、中左2抬起; </p><p>  第二步驟:頭右1、尾右1、中左1后轉

32、,同時頭左1、尾左1、中右1歸位;</p><p>  第三步驟:頭左2、尾右2、中右2放下;</p><p>  第四步驟:頭左2、尾左2、中右2抬起;</p><p>  第五步驟:頭左1、尾左1、中右1前轉,同時頭右1、尾右1、中左1,歸位;</p><p>  第六步驟:頭左2、尾左2、中右2放下;</p><p&

33、gt;<b>  2.3本章小結</b></p><p>  本章介紹兩種方案的六足機器人肢體結構,經過實踐后分析出兩種方案的利弊,為后續(xù)研究提供可靠的硬件平臺。其次分析了六足機器人的行走步態(tài),采用模仿蜘蛛行走的三角步態(tài),并針對基本的行走動作做了詳細的分析。</p><p>  硬件設計介紹與系統(tǒng)各部分工作原理</p><p>  3.1主控芯

34、片STM32F103RBT6簡介</p><p>  STM32F103RBT6是一款中端32位ARM微控制器,該芯片是由意法半導體(ST)公司生產,其核心是ARM的32位Cortex - M3 CPU 。該芯片F(xiàn)lash大小是容量128K 。芯片集成了USB ,CAN ,有4個定時器,每個定時器都可以產生出4 路PWM脈沖,2個ADC ,SPI,I2C , USB , UART等[3]。</p>

35、<p>  內核:ARM的32位Cortex -M3 CPU ; 最高的工作頻率為72MHZ。</p><p>  內存:閃存程序存儲器128K字節(jié)。</p><p>  低功耗:睡眠,關機和待機模式,VBAT為RTC和后備寄存器。</p><p>  ADC:兩個12位ADC ,1微秒轉換時間(多達16個輸入通道);轉換范圍為0?3.6V;具有保持和雙采

36、樣的功能,含有內部的溫度傳感器。</p><p>  DMA :DMA通道有2個( 七個DMA1通道,5個DMA2通道),2 個DMA的控制器,51個I/O口,所有I / O端口映像到16個外部中斷,幾乎所有的端口可以容忍5V信號。支持外設定時器,ADC ,SPI,USB ,IIC和UART 。</p><p>  調試模式:串行線調試(SWD)和JTAG接口。</p>&l

37、t;p>  計算單位:CRC計算單元,96個新一批的唯一代碼。</p><p>  封裝:ECOPACK封裝。</p><p>  3.2 STM32F103RBT6最小系統(tǒng)電路</p><p>  最小系統(tǒng)電路由主芯片、晶振電路、復位電路、電源電路、下載電路、外部引腳外擴電路組成,各部分介紹如下:</p><p>  3.2.1主芯片

38、原理圖</p><p>  STM32F103RBT6有64個引腳,有PA、PB、PC、PD四組I/O口,其中定時器各個通道所對應的引腳為:</p><p>  TIME1_CH1:PA8 TIME1_CH2:PA9 </p><p>  TIME1_CH3:PA10 TIME1_CH4:PA11</p><p>

39、  TIME2_CH1:PA0 TIME2_CH2:PA1 </p><p>  TIME2_CH3:PA2 TIME2_CH4:PA3</p><p>  TIME3_CH1:PA6 TIME3_CH2:PA7 </p><p>  TIME3_CH3:PB0 TIME3_CH4:PB1</p>

40、;<p>  TIME4_CH1:PB6 TIME4_CH2:PB7 </p><p>  TIME4_CH3:PB8 TIME4_CH4:PB9</p><p>  STM32F103RBT6管腳排列如下:</p><p>  圖3-1 STM32F103RBT6芯片原理圖</p><p>  3

41、.2.2 晶振電路</p><p>  STM32共有5個時鐘源,分別是:</p><p>  HSE時鐘:高速外部時鐘信號,本設計中采用8MHZ外部陶瓷晶振。</p><p>  HSI時鐘:內部高速時鐘信號,是由8MHz的內部RC振蕩器產生的,能夠作為系統(tǒng)時鐘或2分頻之后作為 PLL輸入。</p><p>  PLL 時鐘:內部PL

42、L,能夠倍頻HSI、RC的時鐘輸出或著HSE晶體的時鐘輸出。</p><p>  LSE時鐘:低速外部時鐘信號,LSE的32.768kHz晶體是一種低速外部晶體或陶瓷諧振器[4]。它提供了 低功耗和精確的時鐘源的實時時鐘或其它定時功能。</p><p>  LSI時鐘:低速內部時鐘,LSI 的RC發(fā)揮低功耗時鐘源的作用,它可以保持在關機和待機模式下運行。</p>

43、<p>  LSI的時鐘頻率為40kHz左右(30kHz和60kHz的之間)。</p><p>  以下為HSE時鐘和LSE時鐘電路:</p><p><b>  圖3-2 晶振電路</b></p><p><b>  3.2.3復位電路</b></p><p>  nRST 接主芯片第7

44、腳,按動按鍵K1可使芯片復位,電路原理圖如下所示:</p><p><b>  圖3-3 復位電路</b></p><p><b>  3.2.4下載電路</b></p><p>  STM32支持多種下載方式,本設計采用JTAG及串口下載兩種方式,當使用串口下載時,PA10為RX,PA9為TX,需接RX232電平轉換電路

45、進行下載,下載軟件采用mcuisp,下載方式選擇DTR的低電平復位,RST高電平進BootLoader。當下載完成時應將BOOT0接地,此時程序才可執(zhí)行。原理圖如圖3-4、圖3-5所示:</p><p>  圖3-4 ISP下載電路 圖3-5 JTAG下載電路</p><p>  3.3舵機原理與控制</p><p>  3.

46、3.1舵機內部結構</p><p>  舵機內部包括小型直流電動機,齒輪組,一個可調反饋電位器,電路控制板。直流電動機的高速旋轉,以提供原始動力并帶動減速齒輪組,從而產生一個高輸出扭矩,變速傳動比大的舵機的輸出轉矩也越大,意味著越能承受較大的重量,但是轉速也較低[5]。</p><p>  圖3-6 舵機的內部結構圖</p><p>  3.3.2舵機的工作原理&l

47、t;/p><p>  舵機是一個閉環(huán)的反饋系統(tǒng),其原理可由圖3-7表示:</p><p>  圖3-7 舵機的工作原理圖</p><p>  減速齒輪組是由電機驅動的,它的輸出端有一個線性的比例電位器作為位置的檢測,這個電位器會把轉角所對應的坐標轉換為成相應比例的電壓并反饋給控制線路板,控制線路板將收到的電壓信號同輸入的控制脈沖信號進行對比,就會產生糾正脈沖,同時驅動直

48、流電機正向或反向地轉動,使齒輪組的輸出位置與所期望的數值相同,讓糾正脈沖逐漸的趨于零,通過這種方法使舵機達到精確定位的目的。[6]</p><p>  3.3.3 舵機控制方法</p><p>  MG955舵機有3條引出的導線,分別是電源線、地線、和信號控制線,其中紅色的為電源線,棕色的為地線,橙色的為控制信號線,電源線接5V電壓[7]。 </p><p><

49、;b>  圖3-8 標準舵機</b></p><p>  電源線和地線給舵機內部的直流電機和控制電路供電。電壓范圍為3—7V,本設計采用5V供電,由于該機器人共需舵機18個,每個舵機的驅動電流大約為200毫安到500毫安左右,18個舵機所需電流為2A到10A,因此給舵機供電電源應能提供足夠的功率,本設計采用了臺式電腦電源,保證了足夠的功率??刂凭€要輸入一個周期為20ms的方波脈沖信號[8]。 當

50、方波脈沖的寬度發(fā)生變化的時候,舵機的角度就相應的發(fā)生改變,脈沖的寬度變化和角度的改變是成正比例的。MG955舵機的舵機信號控制圖如圖3-9表示。 </p><p>  圖3-9 舵機信號控制圖</p><p>  3.3.4輝盛MG995舵機相關參數</p><p>  結構材質:采用金屬的銅齒 ,電機采用空心杯電機。連接線 :30CM,信號線(黃色)、電源線(

51、紅色)、地線(暗紅色)。尺寸大?。?0.7mm*19.7mm*42.9mm</p><p>  工作死區(qū):4us重量 :55g轉速和反應:無負載時速度為0.17秒/60度(4.8V時);0.13秒/60度(6V時)扭矩:13KG/cm工作電壓:3.0V-7.2V溫度范圍:負30度到正60度。附件:、固定的螺釘、舵盤。</p><p><b>  3.4

52、舵機驅動電路</b></p><p>  該機器人需要實現(xiàn)6條腿的運動,且各條腿能做出不同動作,每條腿需要3個舵機對其進行控制,因此要求舵機驅動電路能產生18路的pwm脈寬調制信號。由于我采用的主控芯片為STM32F103RBT6,該芯片有TIM1,TIM2,TIM3,TIM4四個定時器,每個定時器可產生4路pwm脈寬調制信號,這樣一共可產生16路pwm。由于不足18路,所以我的控制方法是:腿部的12

53、個舵機每個直接由一路pwm控制,而與機器人身體連接的6個舵機則采用74HC138分時復用方式,由一路pwm控制2個舵機。這樣一共使用了15路的pwm,還剩1路未使用。為防止舵機對主控芯片的影響以及系統(tǒng)工作的穩(wěn)定性,采用光耦對其進行隔離。</p><p>  每個舵機所對應的I/O口為:</p><p>  頭左1:PA8(PC8=0) 頭右1:PA8(PC8=1)</

54、p><p>  中左1:PB6(PD2=0) 中右1:PB6 (PD2=1)</p><p>  尾左1:PB7(PB5=0) 尾右1:PB7(PB5=1)</p><p>  頭左2:PB9 頭右2:PA11</p><p>  中左2:PB8

55、 中右2:PA10</p><p>  尾左2:PA2 尾右2:PA6</p><p>  頭左3:PA0 頭右3:PB0</p><p>  中左3:PA1 中右3:PB1</p><p>  尾左3:PA3

56、 尾右3:PA7</p><p>  其中PC8、PD2、PB5對舵機進行選擇,當為高電平時選擇右端舵機,當為低電平時選擇左端舵機。</p><p>  以下是74HC138[9]復用電路及光耦隔離電路部分原理圖。</p><p>  圖3-10 74HC138復用電路部分原理圖 圖3-11 光耦隔離電路部分原理圖</p>

57、<p>  3.5步進電機驅動電路</p><p>  在避障過程中由于需要紅外傳感器不斷的掃描外部環(huán)境,所以需要步進電機不斷旋轉,步進電機采用ULN2003A驅動,其中IN1接PC3,IN2接PC1,IN3接PC0,IN4接PC2。以下為驅動電路原理圖:</p><p>  圖3-12 步進電機驅動電路</p><p><b>  3.6藍

58、牙接收電路</b></p><p>  藍牙模塊采用英國CSR公司blueCore4-Ext芯片,遵循V2.1+EDR藍牙規(guī)范,支持主從一體,支持SPI編程接口,內置8Mbit Flash,本模塊為3.3V供電,其中使用的引腳為VCC、GND、RX、TX四個引腳。圖3-13為藍牙模塊原理圖。</p><p>  圖3-13藍牙模塊原理圖</p><p>

59、<b>  3.7供電系統(tǒng)介紹</b></p><p>  本設計需要對18個舵機及步進電機供電,還有主芯片,藍牙接收電路,紅外傳感等供電。需要有5V和3.3V電壓。</p><p><b>  3.7.1舵機供電</b></p><p>  由于18個舵機需要2-10A左右的電流,普通電池和7805穩(wěn)壓電路無法驅動,本設

60、計采用廢舊的臺式電腦電源對機器人供電,臺式電腦電源由市電220V經變壓處理后得到5V電壓,該開關電源最大負載電流18A,且電壓平穩(wěn),非常適合給舵機供電。</p><p>  3.7.2主芯片及其他電路供電</p><p>  主芯片及其他電路需要3.3V供電,為了防止舵機對主芯片的影響,必須采用雙電源供電,本設計采用7.4V航模鋰電池,經AMS117穩(wěn)壓芯片降壓為3.3V給主芯片及其他電路

61、供電。</p><p><b>  3.8本章小結</b></p><p>  本章對硬件體系結構進行分解并逐一介紹,包括STM32F103RBT6芯片介紹,及最小系統(tǒng)原理圖介紹,舵機的原理及舵機驅動電路介紹,步進電機驅動電路介紹,藍牙接收電路介紹,供電系統(tǒng)的分析。</p><p>  4.軟件流程設計與開發(fā)工具介紹</p>&l

62、t;p><b>  4.1軟件流程框圖</b></p><p>  由于本設計中的機器人具有多種功能,因此采用按鍵進行模式選擇,可選擇的模式有藍牙遙控模式、舞蹈模式、避障模式。以下通過流程圖方式介紹軟件的設計思路:</p><p>  圖4-1 軟件流程框圖</p><p>  4.2PWM脈沖信號的形成</p><p

63、>  脈沖寬度調制(PWM),是“Pulse Width Modulation”縮寫,簡稱為脈寬調制,它是利用微處理器數字輸出對模擬電路進行控制的一種有效的技術[10]。也就是對脈沖的寬度控制。STM32F103RBT6的定時器TIM1、TIM2、TIM3、TIM4都可以用來分別同時產生4路PWM,所以,STM32F103RBT6最多可以同時產生16路PWM輸出。以下僅介紹TIM3的CH2產生一路PWM輸出。其他路的PWM輸出程序

64、詳見附件。</p><p>  要使STM32F103RBT6的定時器TIM3產生PWM輸出,必須要設置3個寄存器來控制PWM。首先是捕獲/比較模式寄存器(TIMx_CCMR1/2),該寄存器總共有2個,TIMx _CCMR1和TIMx _CCMR2。TIMx_CCMR1控制CH1和CH2,TIMx_CCMR1控制CH3和CH4。</p><p>  圖4-2 TIMx_CCMR1寄存器各

65、位的描述</p><p>  該寄存器在不同模式下有些位的功能會不同,因此上圖就把寄存器分成上下2層,第一層對應輸出而第二層則對應輸入。模式設置位OCxM是由3位組成的,一共能設置成7種模式,本設計是PWM模式,因此這3位要設置成為110/111。這兩種模式的不同之處就是輸出高低電平不同,一個是輸出高,另一個是輸出低。</p><p>  接下來,介紹捕獲/比較使能寄存器(TIMx_CCE

66、R),這個寄存器是用來控制輸入輸出通道開關的[11]。該寄存器的各位描述如下:</p><p>  圖4-3 捕獲/比較使能寄存器各位描述</p><p>  最后是捕獲/比較寄存器(TIMx_CCR1~4),這個寄存器一共有4個,對應的分別是通道1到通道4。這4個寄存器都差不多,這里只介紹TIMx_CCR1,該寄存器的各個位描述如下:</p><p>  圖4-4

67、 捕獲/比較寄存器(TIMx_CCR1~4)各位描述</p><p>  輸出的模式下,該寄存器和CNT值相比,根據比較的結果產生相對應的動作。利用這點,我們只要設置該寄存器,就可能實現(xiàn)PWM的輸出脈寬控制。</p><p>  到這里就把要用到的TIMx相關寄存器介紹完了,接下來就是如何達到設計的要求。要利用TIM3的CH2輸出PWM來控制舵機,就要在軟件上控制TIM3_CH2的PWM輸

68、出。以下介紹達到這個目的5個步驟:</p><p>  1)把PA7設置成為復用輸出功能,打開TIM3的時鐘。</p><p>  要使用TIM3,必須要把TIM3的時鐘打開(通過設置APB1ENR),這里還要把PA7配置為復用輸出,因為TIM3_CH2通道是以IO復用的形式連接到PA7上的,這里要使用復用輸出的功能。</p><p>  2)設置TIM3的ARR和

69、PSC。</p><p>  在打開TIM3的時鐘后,要設置ARR和PSC這兩個寄存器的值來控制輸出PWM周期。這里要設置的PWM周期為20ms。</p><p>  3)設置TIM3_CH2的PWM模式。</p><p>  接下來,把TIM3_CH2設置為PMW模式(這里是默認凍結的),要通過設置TIM3_CCMR1相關的位來控制TIM3_CH2的模式。<

70、/p><p>  4)使能TIM3的CH2輸出,使能TIM3。</p><p>  以上設置完成了以后,通過TIM3_CCER1設置來打開TIM3通道2的輸出。通過設置TIM3_CR1來打開TIM3,是整個TIM3的總開關。配置好這兩個寄存器后,就能在TIM3通道2上看到有PWM波的輸出。</p><p>  5)修改TIM3_CCR2來控制占空比。</p>

71、<p>  經過了以上4步的設置,已經有PWM輸出,但是其周期和占空比都是不變的,需要通過設置TIM3_CCR2來控制輸出的占空比。其中高電平占空比時間為1ms到2ms才能使舵機轉動。</p><p>  以下為PWM輸出初始化部分程序:</p><p>  //PWM輸出初始化</p><p>  //arr:自動重裝值</p><

72、;p>  //psc:時鐘預分頻數</p><p>  void PWM_Init(u16 arr,u16 psc)</p><p>  { </p><p>  RCC->APB1ENR|=1<<1; </p><p>  GPIOA->CRL&=0X00FFFFFF

73、;</p><p>  GPIOA->CRL|=0XBB000000; </p><p>  GPIOA->ODR|=1<<7;</p><p>  GPIOA->ODR|=1<<6;</p><p>  GPIOB->CRL&=0XFFFFFF00;</p><

74、;p>  GPIOB->CRL|=0X000000BB; </p><p>  GPIOB->ODR|=1<<0;</p><p>  GPIOB->ODR|=1<<1;</p><p>  TIM3->ARR=arr;</p><p>  TIM3->PSC=psc;</

75、p><p>  TIM3->CCMR1|=7<<12; </p><p>  TIM3->CCMR1|=1<<11; </p><p>  TIM3->CCMR1|=7<<4; </p><p>  TIM3->CCMR1|=1<<3; </p>&l

76、t;p>  TIM3->CCMR2|=7<<12; </p><p>  TIM3->CCMR2|=1<<11; </p><p>  TIM3->CCMR2|=7<<4; </p><p>  TIM3->CCMR2|=1<<3; </p><p>  T

77、IM3->CCER|=1<<4; </p><p>  TIM3->CCER|=1<<0; </p><p>  TIM3->CCER|=1<<8; </p><p>  TIM3->CCER|=1<<12; </p><p>  TIM3->CR1=

78、0x8000; </p><p>  TIM3->CR1|=0x01; </p><p><b>  } </b></p><p>  設置好初始化程序后,只需在主程序里寫入PWM_Init(14399,99);即設置了自動重裝值和時鐘預分頻數,99是指預分頻數為100,即PWM頻率=72000/100=72Khz,周期為(14399

79、+1)/72khz=20ms,以后只需令PA7=720~1440即可實現(xiàn)舵機從0度到90度轉動。</p><p><b>  4.3行走程序介紹</b></p><p>  通過4.2的介紹,我們知道只需要改變PWM脈寬就可以控制舵機。2.2已經介紹了前進時各個舵機的運動,本節(jié)通過軟件設置各個舵機的PWM輸出,以下截取前進子程序:</p><p&g

80、t;  其中720對應20ms脈沖周期內有1ms的高電平;1440對應20ms脈沖周期內有2ms的高電平,其他依次類推。</p><p>  //******前進子程序*********</p><p>  void forword(void)</p><p><b>  {</b></p><p><b> 

81、 while(1)</b></p><p><b>  {</b></p><p>  //**********頭右2,尾右2,中左2抬起**********</p><p>  PB9=1200; //頭左2 </p><p>  //*****頭右2,尾右2,中左2放下******</p>

82、<p>  PB8=1440; //中左2</p><p>  PA2=1200; //尾左2</p><p>  PA11=720;//頭右2</p><p>  PA10=960;//中右2</p><p>  PA6=720;//尾右2 </p><p>  delay_ms(250);</p&g

83、t;<p>  //*****頭右1,尾右1,中左1前轉,頭左1,尾左1,中右1復位***</p><p><b>  PC8=1;</b></p><p>  PA8=920;//頭右1</p><p><b>  PB5=1;</b></p><p>  PB7=920;//尾右1

84、</p><p><b>  PD2=0;</b></p><p>  PB6=1240; //中左1</p><p>  delay_ms(100);</p><p><b>  PC8=0;</b></p><p>  PA8=1080;//頭左1</p>

85、<p><b>  PD2=1;</b></p><p>  PB6=1080;//中右1</p><p><b>  PB5=0;</b></p><p>  PB7=1080;//尾左1</p><p>  delay_ms(250);</p><p>  //

86、*****頭右2,尾右2,中左2放下******</p><p>  PB9=1200; //頭左2 </p><p>  PB8=1200; //中左2</p><p>  PA2=1200; //尾左2</p><p>  PA11=960;//頭右2</p><p>  PA10=960;//中右2</p&

87、gt;<p>  PA6=960;//尾右2 </p><p>  delay_ms(250);</p><p>  //****頭左,尾左2,中右2抬起********</p><p>  PB9=1440; //頭左2 </p><p>  PB8=1200; //中左2</p><p>  PA2=

88、1440; //尾左2</p><p>  PA11=960;//頭右2</p><p>  PA10=720;//中右2</p><p>  PA6=960;//尾右2 </p><p>  delay_ms(250);</p><p>  //*****頭左1,尾左1,中右1前轉,頭右1,尾右1,中左1復位****

89、*****</p><p><b>  PC8=0;</b></p><p>  PA8=1240;//頭左1</p><p><b>  PB5=0;</b></p><p>  PB7=1240;//尾左1</p><p><b>  PD2=1;</b&

90、gt;</p><p>  PB6=920;//中右1</p><p>  delay_ms(250);</p><p><b>  PC8=1;</b></p><p>  PA8=1080;//頭右1</p><p><b>  PB5=1;</b></p>

91、<p>  PB7=1080;//尾右1</p><p><b>  PD2=0;</b></p><p>  PB6=1080; //中左1</p><p>  delay_ms(250);</p><p>  //******頭左,尾左2,中右2放下******</p><p> 

92、 PB9=1200; //頭左2 </p><p>  PB8=1200; //中左2</p><p>  PA2=1200; //尾左2</p><p>  PA11=960;//頭右2</p><p>  PA10=960;//中右2</p><p>  PA6=960;//尾右2 </p><

93、p>  delay_ms(250);</p><p><b>  }</b></p><p><b>  }</b></p><p>  4.4藍牙上位機設計</p><p>  機器人采用手機藍牙遙控,上位機軟件采用Google公司的一款Android程序云端開發(fā)工具: App Invent

94、or。此款軟件開發(fā)方式類似于VB,同樣是在可視化界面添加控件,然后對控件進行編程。與VB不同的是此款軟件的編程語言為Java,其編程特色就是采用搭積木方式組裝程序,使編程變得簡單易懂。以下是我設計的上位機控制界面:</p><p>  圖4-5藍牙上位機控制界面</p><p>  當按下select server按鍵后,手機將自動搜索附近可識別的藍牙,并列表顯示出來,我們選擇機器人攜帶的

95、藍牙從機。然后按下Connect按鍵后將和機器人藍牙從機建立連接,連接成功后將在中間的文本框中顯示connect succeed。此時便和機器人建立連接,就可以對機器人進行控制了。</p><p>  以下為部分上位機程序:</p><p>  圖4-6 上位機程序</p><p>  4.5藍牙接收程序介紹</p><p>  藍牙接收使用

96、串口接收方式,由于STM32的RX和TX對應的I/O已用來產生PWM輸出,不可再用作串口接收,本設計借用一片STC89C52芯片接收藍牙信號,然后將接收到的信號轉化為I/O口的電平變化,STM32通過讀取52芯片I/O信號,從而執(zhí)行相應程序。以下為52單片機藍牙接收程序:</p><p>  #include<reg52.h></p><p>  #include<int

97、rins.h></p><p>  #define uchar unsigned char[12]</p><p>  #define uint unsigned int</p><p>  sfr T2MOD = 0xC9;</p><p>  uchar tmp; </p><p>  sbit pA

98、12=P1^5;</p><p>  sbit pB10=P2^6;</p><p>  sbit pB11=P2^7;</p><p>  sbit pC4=P1^4;</p><p>  sbit pC5=P2^5;</p><p>  sbit pC6=P3^3;</p><p>  sb

99、it pC7=P3^4;</p><p>  sbit pC9=P3^5;</p><p>  /****程序初始化*****/</p><p>  void init() </p><p><b>  {</b></p><p>  T2MOD=0x00;</p>&

100、lt;p>  T2CON=0x00;</p><p>  TH2 = (65536-100)/256;</p><p>  TL2 = (65536-100)%256; </p><p>  RCAP2H =(65536-100)/256; </p><p>  //上面兩個裝滿則系統(tǒng)會自動的重裝</p><p

101、>  RCAP2L =(65536-100)%256; </p><p>  EA=1; //打開總中斷</p><p>  ET2=1; //打開外部中斷方式2</p><p>  TR2=1;//啟動定時器2 </p><p><b>  }</b></p><p>

102、;  void main()</p><p><b>  {</b></p><p><b>  init();</b></p><p>  /*******開啟外部中斷方式0*********/</p><p>  EX0=1;//開啟外部中斷方式0</p><p><

103、;b>  IT0=1;</b></p><p><b>  EA=1;</b></p><p>  TMOD |= 0x20;// 定時器1工作在8位的自動重加載模式, 產生波特率</p><p>  TH1 = 0xFD;// 波特率設置為9600</p><p>  TL1 = 0xFD;</

104、p><p>  SCON = 0x50;</p><p>  PCON &= 0xef;// 波特率不產生倍增</p><p>  TR1 = 1;// 開啟定時器1</p><p><b>  while(1)</b></p><p><b>  {</b></p

105、><p>  if(RI)// 判斷是否有數據來到</p><p><b>  {</b></p><p><b>  RI = 0;</b></p><p>  tmp = SBUF;//數據接收暫存 </p><p>  switch(tmp)<

106、/p><p><b>  {</b></p><p>  case 0x04:</p><p><b>  {</b></p><p>  pC4=0;pC5=1;pC6=1;</p><p>  pC7=1;pC9=1;</p><p><b>

107、;  } break;</b></p><p>  case 0x05:</p><p><b>  {</b></p><p>  pC4=1;pC5=0;pC6=1;</p><p>  pC7=1;pC9=1;</p><p><b>  }break;</b&g

108、t;</p><p>  case 0x06:</p><p><b>  {</b></p><p>  pC4=1;pC5=1;pC6=0;</p><p>  pC7=1;pC9=1;</p><p><b>  }break;</b></p><p

109、>  case 0x07:</p><p><b>  {</b></p><p>  pC4=1;pC5=1;pC6=1;</p><p>  pC7=0;pC9=1;</p><p><b>  }break;</b></p><p>  case 0x01:<

110、;/p><p><b>  {</b></p><p>  pC4=1;pC5=1;pC6=1;</p><p>  pC7=1;pC9=0;</p><p><b>  }break;</b></p><p><b>  }</b></p>

111、<p><b>  }</b></p><p><b>  }</b></p><p><b>  }[13]</b></p><p>  以下為藍牙接收程序的流程框圖:</p><p>  圖4-7 藍牙程序流程框圖</p><p>  4.

112、6舞蹈子程序介紹</p><p>  舞蹈功能是由多個動作組合完成,每個動作都有各自的程序,以下列舉最經典的俯臥撐程序:</p><p>  void dunxia_qili(void)</p><p><b>  {</b></p><p>  u16 pwmval1=1440;</p><p>

113、;  u16 pwmval2=720;</p><p>  u8 dir1=0;</p><p>  u8 dir2=0;</p><p><b>  while(1)</b></p><p><b>  {</b></p><p>  delay_ms(10);</p

114、><p>  if(dir1)pwmval1++;</p><p>  else pwmval1--;</p><p>  if(pwmval1>=1440)dir1=0;</p><p>  if(pwmval1<=720)dir1=1;</p><p>  if(dir2)pwmval2++;</p&

115、gt;<p>  else pwmval2--;</p><p>  if(pwmval2>=1440)dir2=0;</p><p>  if(pwmval2<=720)dir2=1;</p><p>  PA0=pwmval1;//頭左3 </p><p>  PB1=pwmval2;//中右3 </

116、p><p>  PA3=pwmval1; //尾左3 </p><p>  PB0=pwmval2;//頭右3 </p><p>  PA1=pwmval1;//中左3</p><p>  PA7=pwmval2; //尾右3</p><p>  PB9=pwmval1; //頭左2 </p>

117、<p>  PA10=pwmval2; //中右2</p><p>  PA2=pwmval1; //尾左2</p><p>  PA11=pwmval2; //頭右2 </p><p>  PB8=pwmval1; //中左2</p><p>  PA6=pwmval2; //尾右2</p><p&g

118、t;<b>  }</b></p><p><b>  }</b></p><p>  4.7避障子程序介紹</p><p><b>  以下為避障流程圖:</b></p><p>  圖4-8 避障程序流程框圖</p><p><b>  4

119、.8本章小結</b></p><p>  本章首先采用流程圖方式對整個軟件設計流程進行整體介紹,之后列舉各個部分子程序中最具代表性的程序段進行介紹,包括對PWM實現(xiàn)所需寄存器設置的介紹,機器人實現(xiàn)行走的介紹,藍牙上位機的介紹,藍牙接收程序的介紹,避障程序的介紹,舞蹈程序的介紹等等。</p><p>  5.設計制作與調試過程</p><p>  本次畢業(yè)

120、設計共分為三個階段,首先是資料的收集與設計方案的確定,其次是硬件電路的設計制作,最后是軟件的編寫與系統(tǒng)的調試。</p><p>  5.1 硬件電路設計</p><p>  本設計包括最小系統(tǒng)板和擴展板,其中擴展板包括光耦隔離電路、74HC138復用電路、步進電機驅動電路、藍牙接收電路、電源電路等。具體的設計步驟為:畫原理圖和PCB圖、打印和熱轉印、腐蝕電路板、鉆孔、焊接、硬件調試。<

121、;/p><p>  5.1.1 原理圖PCB電路與制作工藝設計</p><p>  原理圖與PCB電路設計采用Altium Designer軟件,由于原理圖較復雜,引線較多,PCB電路都采用雙層布線,線寬為信號線1mm,電源線和地線1.2mm,焊盤和過孔內徑1mm,外徑2.2mm[14]。其中STM32主控芯片,STC89C52芯片,電源芯片及部分最小系統(tǒng)元件都采用貼片形式,并且是雙層板焊接,

122、因此對焊接技術有很大的考驗。</p><p>  5.1.2 PCB板的檢測</p><p>  PCB電路板焊接后不能馬上進行上電測試,如若馬上上電測試則很容易由于焊接,或板的工藝使得電源與地之間短路,或是其他原因造成PCB電路板的燒毀。因此剛焊好的PCB板要經過較嚴格的檢測。首先要對電源與地之間的檢測,即用萬用表檢測電源與地之間是否短路。再者檢測每個芯片的電源供電通路是否順暢。在排除了

123、這些問題之后,再給芯片燒錄程序,檢測每個模塊的工作是否正常,如若不正常則還需對出問題部分的元器件進行一一排查直至PCB電路板正常工作。</p><p>  5.2 初步軟件編程與調試</p><p>  軟件編譯環(huán)境為Keil uVision3.8,軟件本身帶有軟件仿真功能,對設計帶來很大的方便,在設計過程中,采用仿真來觀察PWM脈沖信號,確保信號輸出的準確性。在編譯軟件編譯形成.HEX文

124、件后,采用mcuisp燒錄軟件將程序燒錄到STM32芯片中。</p><p>  藍牙上位機軟件開發(fā)環(huán)境為App Inventer,該軟件是Google公司的一款Android云端程序開發(fā)工具。軟件具有良好的開發(fā)界面,只需在開發(fā)界面上添加控件,并對控件編程即可下載至手機。</p><p>  5.3制作調試過程中出現(xiàn)的問題</p><p>  在一開始的設計思路中,

125、為了提高每路pwm的利用率,采用了一路pwm分時復用控制一條腿上的三個舵機。此方案已經制成電路板并使用,但是在調試過程中舵機總是不斷顫抖,機器人無法站立。后來分析其原因是:舵機分時復用時,當舵機沒有信號輸入,就沒有反饋電壓,此時舵機是不工作的,不工作的舵機就無法支撐起肢體。所以腿部的舵機不能采用分時復用。在吸收了此次經驗后,我采用了腿部的12個舵機每個直接由一路pwm控制,而與機器人身體連接的6個舵機則采用74HC138分時復用方式,由

溫馨提示

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

評論

0/150

提交評論