open寶貝車培訓(xùn)--技術(shù)講解_第1頁
open寶貝車培訓(xùn)--技術(shù)講解_第2頁
open寶貝車培訓(xùn)--技術(shù)講解_第3頁
open寶貝車培訓(xùn)--技術(shù)講解_第4頁
open寶貝車培訓(xùn)--技術(shù)講解_第5頁
已閱讀5頁,還剩38頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1、Open教育機(jī)器人 寶貝車簡(jiǎn)介u雙控制器(C51和 AVR)教學(xué)板u兩個(gè)連續(xù)旋轉(zhuǎn)的舵機(jī)u開放的實(shí)驗(yàn)面包板u豐富的傳感器配置教 學(xué) 板內(nèi)容概述建立編程開發(fā)環(huán)境安裝調(diào)試讓寶貝車動(dòng)起來利用傳感器導(dǎo)航建立編程開發(fā)環(huán)境C51單片機(jī) Keil uVision AVR單片機(jī) WINAVRISP程序下載 SLISP串口調(diào)試工具建立編程開發(fā)環(huán)境安裝keil,嘗試建立一個(gè)新的工程建立編程開發(fā)環(huán)境安裝ISP下載程序建立編程開發(fā)環(huán)境串口調(diào)試工具建立編程開發(fā)環(huán)境串口線 -連接在電腦的串口,可以通過單片機(jī)將信息輸出到串口調(diào)試工具中ISP下載線接在電腦的并口上,通過ISP下載軟件可以將程序下載到單片機(jī)系統(tǒng)調(diào)試接上兩個(gè)伺服舵

2、機(jī)到教學(xué)板的P1_0和P1_1電機(jī)口,進(jìn)行舵機(jī)的調(diào)零系統(tǒng)調(diào)試舵機(jī)的特性 如何連接舵機(jī)有三個(gè)連接引腳,一個(gè)+5V的電源,一個(gè)地,以及一個(gè)信號(hào)系統(tǒng)調(diào)試舵機(jī)的特性 如何控制在接上+5V電源后,舵機(jī)運(yùn)動(dòng)的速度和方向由脈沖信號(hào)的時(shí)序決定,寶貝車上使用的舵機(jī)時(shí)序特點(diǎn)是高電平從1.3ms到1.5ms,低電平為20ms時(shí)電機(jī)為順時(shí)針旋轉(zhuǎn),高電平1.5ms到1.7ms電機(jī)逆時(shí)針旋轉(zhuǎn)。高電平持續(xù)1.3ms,低電平持續(xù)20ms,電機(jī)全速順時(shí)針旋轉(zhuǎn)。系統(tǒng)調(diào)試舵機(jī)的特性 如何控制高電平持續(xù)1.7ms,低電平20ms,電機(jī)全速逆時(shí)間旋轉(zhuǎn)。高電平持續(xù)1.5ms,低電平20ms,電機(jī)保持不動(dòng)系統(tǒng)調(diào)試關(guān)于調(diào)零為此我們需要做一下

3、工作給單片機(jī)一個(gè)程序,讓接電機(jī)信號(hào)的P1_0和P1_1口按保持不動(dòng)的脈沖輸出高低電平信號(hào)。打開電源,使用我們提供的小十字起輕輕的轉(zhuǎn)動(dòng)調(diào)零口,使電機(jī)靜止下來。剛剛出產(chǎn)的電機(jī)并不能正確的按照時(shí)序工作,需要調(diào)零,調(diào)零就是在給定電機(jī)高脈沖1.5ms的情況下,保持電機(jī)不動(dòng)。讓寶貝車動(dòng)起來認(rèn)識(shí)一下AT89S52AT89SC52單片機(jī)由4個(gè)口,P0,P1,P2,P3來進(jìn)行外圍擴(kuò)展和控制。4個(gè)P口的每個(gè)引腳都可以做普通I/O使用。此外一些引腳還有第二功能。P0和P2口可以組成16位的外部地址總線,用于以總線方式擴(kuò)展外部器件。P3口I/O引腳都有地二功能,主要有串口收(RXD)發(fā)(TXD)信號(hào)口;兩個(gè)外部中斷信

4、號(hào)(INT0和INT1)口;外部脈沖計(jì)數(shù)信號(hào)(T0和T1)口等,具體可以參考相關(guān)資料或書籍。讓寶貝車動(dòng)起來準(zhǔn)備好調(diào)零的程序打開第二章BothServoClockwise這個(gè)例程#include#includeint main(void)uart_Init(); /初始化串口初始化串口printf(The LEDs connected to P1_0 and P1_1 are blinking!n );while(1)P1_0=1; /P1_0輸出高電平輸出高電平P1_1=1;/P1_1輸出高電平輸出高電平delay_nus(1300); /延時(shí)延時(shí)500msP1_0=0; /P1_0輸出低電平

5、輸出低電平P1_1=0; /P1_1輸出低電平輸出低電平delay_nms(20); /延時(shí)延時(shí)20ms讓寶貝車動(dòng)起來分析這個(gè)程序頭文件#include 包含了兩個(gè)延時(shí)函數(shù)#include 包含了串口的驅(qū)動(dòng)串口初始化uart_Init(); 初始化串口控制部分控制部分在一個(gè)while(1)下的無限循環(huán)中讓寶貝車動(dòng)起來根據(jù)時(shí)序?qū)懗绦蜃岆姍C(jī)引腳為高電平P1_0 = 1; P1_1 = 1; 讓高電平1.5ms(1500us)delay_nus(1500);讓電機(jī)引腳為低電平P1_0 = 0; P1_1 = 0;讓低電平保持20ms delay_nms(20);循環(huán) 讓寶貝車動(dòng)起來關(guān)于單片機(jī)C語言編

6、程基于C語言的單片機(jī)編程除了要遵守C語言的語法外,針對(duì)不同單片機(jī)的特點(diǎn),對(duì)C語言做了一些擴(kuò)展。如:對(duì)存儲(chǔ)區(qū)間定義的關(guān)鍵字 data,bdata,idata,pdata,xdata。對(duì)中斷行為的關(guān)鍵字?jǐn)U展 interrupt 位變量,可重入關(guān)鍵字等程序中使用P1_0來表示P0口的第一個(gè)引腳,這是因?yàn)槌绦虬腁T89X52.H這個(gè)頭文件中將引腳的地址通過宏定義成容易記憶的符號(hào) ,單片機(jī)的其他器件也是這樣表示的,具體請(qǐng)參考AT89X52.H這個(gè)頭文件,以及相關(guān)資料。讓寶貝車動(dòng)起來調(diào)零將代碼考到我們新建的工程中,修改程序中延時(shí)函數(shù)參數(shù)1300為1500,編譯程序。將生成的 .HEX文件下載到單片機(jī)。

7、將電源開關(guān)打開到2,用十字起分別調(diào)整兩個(gè)電機(jī)的調(diào)零口,直到電機(jī)完全不轉(zhuǎn)動(dòng)為止。根據(jù)安裝手冊(cè)安裝好寶貝車,接下編寫程序來讓車完成前進(jìn)、后退、左轉(zhuǎn)、右轉(zhuǎn)等基本運(yùn)動(dòng)。讓寶貝車動(dòng)起來編寫基本運(yùn)動(dòng)程序目標(biāo)分析由于兩個(gè)電機(jī)對(duì)稱安裝,只要是兩個(gè)是兩個(gè)輪子想相反的方向以相同的速度運(yùn)動(dòng),車就會(huì)像一個(gè)方向像運(yùn)動(dòng)。語言實(shí)現(xiàn)使右邊電機(jī)順時(shí)針旋轉(zhuǎn),向P1_0口輸出連續(xù)的高電平為1.3ms低電平為20ms的脈沖信號(hào)使左邊電機(jī)逆時(shí)針旋轉(zhuǎn),向P1_1口輸出連續(xù)的高電平為1.7ms低電平為20ms的脈沖信號(hào)讓寶貝車動(dòng)起來編寫程序修改之前的調(diào)零程序的電機(jī)控制部分重新編譯程序,并將生產(chǎn)的 .HEX文件下載到單片機(jī)P1_0=1; /

8、P1_0輸出高電平輸出高電平delay_nus(1300); /延時(shí)延時(shí)500msP1_0=0; /P1_0輸出低電平輸出低電平P1_1=1; /P1_1輸出低電平輸出低電平 delay_nus(1500); P1_1=0;/P1_1輸出高電平輸出高電平delay_nms(20); /延時(shí)延時(shí)20ms讓寶貝車動(dòng)起來建立一個(gè)向前的運(yùn)動(dòng)函數(shù)供以后使用函數(shù)命名為Forwardvoid Forward(void) P1_1=1;delay_nus(1700); P1_1=0;P1_0=1;delay_nus(1300);P1_0=0;delay_nms(20);讓寶貝車動(dòng)起來編寫其他運(yùn)動(dòng)程序,并且封裝

9、成函數(shù)要讓小車以不同方式運(yùn)動(dòng),只需要通過調(diào)整信號(hào)高電平脈沖時(shí)間,以控制電機(jī)以不同的方向和速度運(yùn)動(dòng)即可.左轉(zhuǎn),只要兩個(gè)高電平同為1300,再通過控制脈沖周期的次數(shù)來決定小車左轉(zhuǎn)的速度.右轉(zhuǎn),只要兩個(gè)高電平同為1700,再通過控制脈沖周期的次數(shù)來決定小車右轉(zhuǎn)的速度.后退剛好與前進(jìn)相反即可讓寶貝車動(dòng)起來用FOR語句控制轉(zhuǎn)動(dòng)角度程序在for中執(zhí)行26次,使小車左轉(zhuǎn)約90度void Left_Turn(void) int i; for(i=1;i=26;i+)P1_1=1;delay_nus(1300); P1_1=0;P1_0=1;delay_nus(1300);P1_0=0;delay_nms(20

10、);讓寶貝車動(dòng)起來總結(jié)在編寫程序的時(shí)候我們新明確任務(wù),再逐步分解成我們?nèi)菀资褂玫恼Z言描述的任務(wù)?,F(xiàn)在我們擁有了幾個(gè)可以使小車運(yùn)動(dòng)的函數(shù)。我們可以把這些函數(shù)組織起來,做成一個(gè)運(yùn)動(dòng)的頭文件,以供以后使用。形成自己的函數(shù)庫,在編寫程序的時(shí)候,我們可以把一些好用的小模塊編寫成通用的函數(shù),以供需要時(shí)使用。最后再來看一個(gè)完整的例子ForwardLeftRightBackward在開始下一部分之前單片機(jī)C語言編程的一些特點(diǎn)總結(jié)While(1),很多時(shí)候我們希望單片機(jī)能夠連續(xù)的做一些事情,如讓電機(jī)運(yùn)動(dòng),不斷的掃描I/O口以檢測(cè)信號(hào),通常在做完一些變量聲明,以及初始化工作后我會(huì)將控制程序放在一個(gè)無限循環(huán)中。De

11、lay函數(shù),單片機(jī)很多時(shí)候都會(huì)用到這個(gè)函數(shù)以等待一些事情完成,或按照某個(gè)時(shí)序控制I/O。利用傳感器導(dǎo)航有了基本的運(yùn)動(dòng)基礎(chǔ),現(xiàn)在需要讓小車通過傳感器來感知外部的世界,并完成智能的運(yùn)動(dòng)。下面的內(nèi)容包括以下幾個(gè)方面通過外部信息來進(jìn)行智能的運(yùn)動(dòng)的構(gòu)思使用紅外探測(cè)傳感器完成紅外線避障總結(jié)利用傳感器導(dǎo)航利用傳感器導(dǎo)航使用紅外線探測(cè)器 感知外部信息紅外線探測(cè)器的原理紅外線接收器像機(jī)器人的眼睛,它能夠“看見” 980 nm波長(zhǎng)的紅外線通過,接收器里面還帶一個(gè)濾波器,接受38.5KHZ的電信號(hào)。接收到信號(hào)后引腳電平由高變低。(10)紅外線發(fā)射器在接通電源之后發(fā)射980nm波長(zhǎng)的紅外線,所以只要使發(fā)射器一秒鐘發(fā)射

12、38,500次的紅外光就能得到接收器能識(shí)別的信號(hào)。利用傳感器導(dǎo)航認(rèn)識(shí)需要使用的電子元器件紅外線接收器、發(fā)射器三極管利用傳感器導(dǎo)航在面包板上搭建好電路利用傳感器導(dǎo)航編寫紅外線探測(cè)器驅(qū)動(dòng)使用紅外線探測(cè)器只要使紅外線發(fā)射器以38.5khz發(fā)射紅外線即可。從時(shí)序來分析,只要按照下面的時(shí)序來變化引腳電平利用傳感器導(dǎo)航參照調(diào)零的程序來寫紅外發(fā)射驅(qū)動(dòng)紅外線觸發(fā)信號(hào)接在P1_3上面發(fā)射完成馬上檢查紅外線接收器信號(hào)紅外線接收器件接在P1_2上這樣就完成了一次收發(fā)過程!for(counter=0;counter38;counter+)P1_3=1;delay_nus(13);P1_3=0; delay_nus(1

13、3);irDetectLeft = P1_2state();利用傳感器導(dǎo)航delay_nus函數(shù)的不精確性由于調(diào)用函數(shù)本身是要消耗時(shí)間,所以為了有更精確,我們要修改一下程序的延時(shí)部分。Int i = 39;While(-i) RightLaunch=1; _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); RightLaunch=0; _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop

14、_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); 在intrins.h這個(gè)頭文件中。表示執(zhí)行一條空指令。使用一連串的_nop_();來代替delay_nus();即可。記住加入instrins.h這個(gè)頭文件。利用傳感器導(dǎo)航完整的函數(shù)void IRLaunch(unsigned char IR) int counter; if(IR=L) for(counter=0;counter38;counter+)/左邊發(fā)射 LeftLaunch=1; _nop_(); _nop_(); _nop_(); _nop_()

15、; _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); LeftLaunch=0; _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); if(IR=R)。利用傳感器導(dǎo)航測(cè)試你的紅外線傳感器編譯程序,下載程序到教學(xué)板。打開串口調(diào)試程序,連接串口線利用傳感器導(dǎo)航寫出完整的程序現(xiàn)在我們將運(yùn)動(dòng)部分的函數(shù)加到程序中來按照之前的構(gòu)思一步步完成程序感知外部

16、信息處理得到的信息IRLaunch(R); /右邊發(fā)射 irDetectRight = RightIR;/右邊接收 IRLaunch(L); /左邊發(fā)射 irDetectLeft = LeftIR;/左邊接收利用傳感器導(dǎo)航寫出完整的程序分析并處理得到的信息并作出決策得到的信息是左邊和右邊的紅外線接收器的狀態(tài)左邊紅外左邊紅外線信號(hào)線信號(hào)右邊紅外右邊紅外線信號(hào)線信號(hào)外部狀態(tài)分析外部狀態(tài)分析行為策略行為策略11兩邊都沒有檢測(cè)的信號(hào)前方?jīng)]有障礙物。前進(jìn)10右邊有障礙物左轉(zhuǎn)一定角度01左邊有障礙物右轉(zhuǎn)一定角度00兩邊(前方)有障礙物后退一段距離,轉(zhuǎn)180度利用傳感器導(dǎo)航寫出完整的程序執(zhí)行決策主要在決策的條件下執(zhí)行之前的運(yùn)動(dòng)函數(shù)就可以了,這里我們用了一組if . else if else 結(jié)構(gòu) 最后別忘了while(1);我將繼續(xù)之前的過程。利用傳感器導(dǎo)航if(irDetectLeft=0)&(irDetectRight=0)/兩邊同時(shí)接收到紅外線 i = 0;Backward(); Left_Turn(); Left_Turn();i = 1; else if(irDetectLeft=0)/只有左邊接收到紅外線Backward();Right_Turn(); else if(irDetectRight=0)/只有右邊接收到紅外線Backward();Left_Tu

溫馨提示

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

評(píng)論

0/150

提交評(píng)論