open寶貝車培訓-技術講解_第1頁
open寶貝車培訓-技術講解_第2頁
open寶貝車培訓-技術講解_第3頁
open寶貝車培訓-技術講解_第4頁
open寶貝車培訓-技術講解_第5頁
已閱讀5頁,還剩38頁未讀 繼續免費閱讀

下載本文檔

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

文檔簡介

-龍人寶貝Open教育機器人寶貝車簡介雙控制器(C51和AVR)教學板兩個連續旋轉的舵機開放的實驗面包板豐富的傳感器配置教學板內容概述建立編程開發環境安裝調試讓寶貝車動起來利用傳感器導航建立編程開發環境C51單片機

KeiluVision

AVR單片機WINAVRISP程序下載SLISP串口調試工具建立編程開發環境安裝keil,嘗試建立一個新的工程建立編程開發環境安裝ISP下載程序建立編程開發環境串口調試工具建立編程開發環境串口線----連接在電腦的串口,可以通過單片機將信息輸出到串口調試工具中ISP下載線接在電腦的并口上,通過ISP下載軟件可以將程序下載到單片機系統調試接上兩個伺服舵機到教學板的P1_0和P1_1電機口,進行舵機的調零系統調試舵機的特性如何連接舵機有三個連接引腳,一個+5V的電源,一個地,以及一個信號系統調試舵機的特性如何控制在接上+5V電源后,舵機運動的速度和方向由脈沖信號的時序決定,寶貝車上使用的舵機時序特點是高電平從1.3ms到1.5ms,低電平為20ms時電機為順時針旋轉,高電平1.5ms到1.7ms電機逆時針旋轉。高電平持續1.3ms,低電平持續20ms,電機全速順時針旋轉。系統調試舵機的特性如何控制高電平持續1.7ms,低電平20ms,電機全速逆時間旋轉。高電平持續1.5ms,低電平20ms,電機保持不動系統調試關于調零為此我們需要做一下工作給單片機一個程序,讓接電機信號的P1_0和P1_1口按保持不動的脈沖輸出高低電平信號。打開電源,使用我們提供的小十字起輕輕的轉動調零口,使電機靜止下來。剛剛出產的電機并不能正確的按照時序工作,需要調零,調零就是在給定電機高脈沖1.5ms的情況下,保持電機不動。讓寶貝車動起來認識一下AT89S52AT89SC52單片機由4個口,P0,P1,P2,P3來進行外圍擴展和控制。4個P口的每個引腳都可以做普通I/O使用。此外一些引腳還有第二功能。P0和P2口可以組成16位的外部地址總線,用于以總線方式擴展外部器件。P3口I/O引腳都有地二功能,主要有串口收(RXD)發(TXD)信號口;兩個外部中斷信號(INT0和INT1)口;外部脈沖計數信號(T0和T1)口等,具體可以參考相關資料或書籍。讓寶貝車動起來準備好調零的程序打開第二章BothServoClockwise這個例程#include<BoeBot.h>#include<uart.h>intmain(void){ uart_Init(); //初始化串口

printf("TheLEDsconnectedtoP1_0andP1_1areblinking!\n"); while(1) { P1_0=1; //P1_0輸出高電平

P1_1=1; //P1_1輸出高電平

delay_nus(1300); //延時500ms P1_0=0; //P1_0輸出低電平

P1_1=0; //P1_1輸出低電平

delay_nms(20); //延時20ms }}讓寶貝車動起來分析這個程序頭文件#include<BoeBot.h>包含了兩個延時函數#include<uart.h> 包含了串口的驅動串口初始化uart_Init();初始化串口控制部分控制部分在一個while(1)下的無限循環中讓寶貝車動起來根據時序寫程序讓電機引腳為高電平

P1_0

=

1;

P1_1

=

1;讓高電平1.5ms(1500us)

delay_nus(1500);讓電機引腳為低電平

P1_0

=

0;

P1_1

=

0;讓低電平保持20ms

delay_nms(20);循環

讓寶貝車動起來關于單片機C語言編程基于C語言的單片機編程除了要遵守C語言的語法外,針對不同單片機的特點,對C語言做了一些擴展。如:對存儲區間定義的關鍵字data,bdata,idata,pdata,xdata。對中斷行為的關鍵字擴展interrupt

位變量,可重入關鍵字等程序中使用P1_0來表示P0口的第一個引腳,這是因為程序包含的AT89X52.H這個頭文件中將引腳的地址通過宏定義成容易記憶的符號,單片機的其他器件也是這樣表示的,具體請參考AT89X52.H這個頭文件,以及相關資料。讓寶貝車動起來調零將代碼考到我們新建的工程中,修改程序中延時函數參數1300為1500,編譯程序。將生成的.HEX文件下載到單片機。將電源開關打開到2,用十字起分別調整兩個電機的調零口,直到電機完全不轉動為止。根據安裝手冊安裝好寶貝車,接下編寫程序來讓車完成前進、后退、左轉、右轉等基本運動。讓寶貝車動起來編寫基本運動程序目標分析由于兩個電機對稱安裝,只要是兩個是兩個輪子想相反的方向以相同的速度運動,車就會像一個方向像運動。語言實現使右邊電機順時針旋轉,向P1_0口輸出連續的高電平為1.3ms低電平為20ms的脈沖信號使左邊電機逆時針旋轉,向P1_1口輸出連續的高電平為1.7ms低電平為20ms的脈沖信號讓寶貝車動起來編寫程序修改之前的調零程序的電機控制部分重新編譯程序,并將生產的.HEX文件下載到單片機 P1_0=1; //P1_0輸出高電平

delay_nus(1300); //延時500ms P1_0=0; //P1_0輸出低電平

P1_1=1; //P1_1輸出低電平 delay_nus(1500); P1_1=0; //P1_1輸出高電平

delay_nms(20); //延時20ms讓寶貝車動起來建立一個向前的運動函數供以后使用函數命名為ForwardvoidForward(void){ P1_1=1; delay_nus(1700); P1_1=0; P1_0=1; delay_nus(1300); P1_0=0; delay_nms(20);}讓寶貝車動起來編寫其他運動程序,并且封裝成函數要讓小車以不同方式運動,只需要通過調整信號高電平脈沖時間,以控制電機以不同的方向和速度運動即可.左轉,只要兩個高電平同為1300,再通過控制脈沖周期的次數來決定小車左轉的速度.右轉,只要兩個高電平同為1700,再通過控制脈沖周期的次數來決定小車右轉的速度.后退剛好與前進相反即可讓寶貝車動起來用FOR語句控制轉動角度程序在for中執行26次,使小車左轉約90度voidLeft_Turn(void){inti;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); }}讓寶貝車動起來總結在編寫程序的時候我們新明確任務,再逐步分解成我們容易使用的語言描述的任務。現在我們擁有了幾個可以使小車運動的函數。我們可以把這些函數組織起來,做成一個運動的頭文件,以供以后使用。形成自己的函數庫,在編寫程序的時候,我們可以把一些好用的小模塊編寫成通用的函數,以供需要時使用。最后再來看一個完整的例子ForwardLeftRightBackward在開始下一部分之前單片機C語言編程的一些特點總結While(1),很多時候我們希望單片機能夠連續的做一些事情,如讓電機運動,不斷的掃描I/O口以檢測信號,通常在做完一些變量聲明,以及初始化工作后我會將控制程序放在一個無限循環中。Delay函數,單片機很多時候都會用到這個函數以等待一些事情完成,或按照某個時序控制I/O。利用傳感器導航有了基本的運動基礎,現在需要讓小車通過傳感器來感知外部的世界,并完成智能的運動。下面的內容包括以下幾個方面通過外部信息來進行智能的運動的構思使用紅外探測傳感器完成紅外線避障總結利用傳感器導航1、感知外部信息2、分析處理信息3、做出智能決策4、執行決策利用傳感器導航使用紅外線探測器感知外部信息紅外線探測器的原理紅外線接收器像機器人的眼睛,它能夠“看見”

980nm波長的紅外線通過,接收器里面還帶一個濾波器,接受38.5KHZ的電信號。接收到信號后引腳電平由高變低。(10)紅外線發射器在接通電源之后發射980nm波長的紅外線,所以只要使發射器一秒鐘發射38,500次的紅外光就能得到接收器能識別的信號。利用傳感器導航認識需要使用的電子元器件紅外線接收器、發射器三極管利用傳感器導航在面包板上搭建好電路利用傳感器導航編寫紅外線探測器驅動使用紅外線探測器只要使紅外線發射器以38.5khz發射紅外線即可。從時序來分析,只要按照下面的時序來變化引腳電平利用傳感器導航參照調零的程序來寫紅外發射驅動紅外線觸發信號接在P1_3上面發射完成馬上檢查紅外線接收器信號紅外線接收器件接在P1_2上這樣就完成了一次收發過程!for(counter=0;counter<38;counter++){ P1_3=1; delay_nus(13); P1_3=0; delay_nus(13);}irDetectLeft

=

P1_2state();利用傳感器導航delay_nus函數的不精確性由于調用函數本身是要消耗時間,所以為了有更精確,我們要修改一下程序的延時部分。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_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();}_nop_();在intrins.h這個頭文件中。表示執行一條空指令。使用一連串的_nop_();來代替delay_nus();即可。記住加入instrins.h這個頭文件。利用傳感器導航完整的函數voidIRLaunch(unsignedcharIR){intcounter;if(IR=='L') for(counter=0;counter<38;counter++)//左邊發射

{LeftLaunch=1;_nop_();_nop_();_nop_();_nop_();_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')。。。。。。。。。。

利用傳感器導航測試你的紅外線傳感器編譯程序,下載程序到教學板。打開串口調試程序,連接串口線利用傳感器導航寫出完整的程序現在我們將運動部分的函數加到程序中來按照之前的構思一步步完成程序感知外部信息處理得到的信息

IRLaunch('R');//右邊發射

irDetectRight=RightIR;//右邊接收

IRLaunch('L');//左邊發射

irDetectLeft=LeftIR;//左邊接收利用傳感器導航寫出完整的程序分析并處理得到的信息并作出決策得到的信息是左邊和右邊的紅外線接收器的狀態左邊紅外線信號右邊紅外線信號外部狀態分析行為策略11兩邊都沒有檢測的信號前方沒有障礙物。前進10右邊有障礙物左轉一定角度01左邊有障礙物右轉一定角度00兩邊(前方)有障礙物后退一段距離,轉180度利用傳感器導航寫出完整的程序執行決策主要在決策的條件下執行之前的運動函數就可以了,這里我們用了一組if

…..

else

溫馨提示

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

最新文檔

評論

0/150

提交評論