智能小車設計畢業(yè)論文
摘 要智能作為現(xiàn)代社會的新產(chǎn)物,是以后的發(fā)展方向它可以按照預先設定的模塊在一個特定的環(huán)境里自動的運作,無需人為管理,便可以完成預期所要達到的或更高的目標。本文設計是基于AT89s52微處理器的機器人車體系統(tǒng)和XL02-232AP1微功率無線透明傳輸模塊的無線通信系統(tǒng),以此實現(xiàn)小車的前進、后退、停止、及直角特別是圓弧形拐彎,本設計主要體現(xiàn)多功能小車的智能模式,設計中的理論方案、分析方法及特色與創(chuàng)新點等可以為自動運輸機器人、采礦機器人、家用自動清潔機器人,特別是智能足球機器人的設計與普及有一定的參考意義。同時小車可以作為玩具的發(fā)展方向,為中國玩具市場技術含量的缺乏進行一定的彌補,實現(xiàn)經(jīng)濟收益,形成商業(yè)價值。關鍵詞:單片機,智能小車,AT89s52,XL02-232AP1ABSTRACTAs a new product of modern society,intelligence is the trend in future development.It can work in some specific environment according to the mode which sets in advance.Dispensing with behavior adjustment management,but it can achieve the expected,even higher goal. This design is based on the robot body AT89s52 microprocessor system and XL02-232AP1 transparent micro-power wireless transmission module of the wireless communication system,to achieve the car forward, backward, stop, especially the arc-shaped bend at right angles The design mainly reflected a smart-car model,The theoretical scheme,analysis method,uniqueness and innovation etc.that pointed in this paper,I think they are will be certain reference value in design an popularity of automatic or semi-automatic robot such as automatic transportation robot,prospecting robot,cleaning household robot, especially intelligent soccer robot.This car can be used as a model of development of toy,to make up the deficiency of technical content in the Chinese toy market,to realize economic profit and to form commercial value.KEY WORDS:MCU,smart-car robot, AT89s52,XL02-232AP1前 言1第1章 設計環(huán)境建設411 硬件環(huán)境41.1.1 硬件系統(tǒng)鋪設41.1.2 硬件設備41.2 軟件環(huán)境5第2章 智能小車車體62.1 智能小車的硬件結構62.1.1 主控芯片的選擇62.1.2 主要芯片介紹62.1.3 小車控制板電路圖112.1.4 小車電路板成品樣圖112.2 智能小車關鍵代碼122.3 智能小車程序介紹122.3.1 上位機程序介紹122.3.2 下位機程序介紹13第3章 無線收發(fā)模塊203.1 無線模塊的選擇203.1.1 XL02-232AP1的端口定義及連接示意圖203.1.2 無線模塊的性能223.2 配置接口通訊協(xié)議243.2.1 接口253.2.2 命令253.3 參數(shù)范圍263.4 發(fā)送串口控制命令26第4章 電機驅(qū)動模塊274.1 電機方案的論證與比較274.2 電機驅(qū)動芯片27第5章 經(jīng)驗總結與展望295.1 設計中解決的問題295.2 總結與展望30致 謝31參考文獻32附錄一:原理圖33附錄二:上位機主要程序代碼:34第IV頁前 言1、課題背景及意義 機器人學是一門與機器人設計、制造和應用相關的科學。機器人學又稱為機器人技術或機器人工程學,主要研究機器人的控制與被處理物體之間的相互關系。機器人學涉及的專業(yè)領域很多,主要內(nèi)容有運動學和動力學、系統(tǒng)結構、傳感技術、控制技術、行動規(guī)劃和應用工程等。智能車是機器人學中的一類,是具有自主性、適應性和交互性等于一體的綜合系統(tǒng),它融合了自動控制、人工智能、機械工程、信息融合、傳感器技術、圖像處理技術以及計算機等多門學科的最新研究成果,對智能車的研究不僅具有理論意義而且具有實際價值。智能車在我們的現(xiàn)實生活中的應用意義極大。人類的研究活動已擺脫了地球生物圈的束縛而廣泛地進入外層空間和海洋深處。對月球和太陽系其他行星的探測,對太陽系以外的宇宙進行考察,對數(shù)千米以下的海底的研究,都是目前單靠人力所不能及的。智能機器人正在代替人們完成這些任務。在戰(zhàn)場上的軍事活動中,在惡劣環(huán)境條件下的生產(chǎn)勞動中,凡不宜由人直接承擔的任務,均可由智能機器人代替,如智能小車可以適應不同環(huán)境,不受溫度、濕度等條件的影響,完成危險地段、人類無法介入等特殊情況下的任務。本設計是智能小車的運動軌跡的研究,是智能小車研究領域的重要組成部分,初步實現(xiàn)了多學科領域的綜合研究。2、國內(nèi)外研究及現(xiàn)狀 從20世紀70年代,歐美等發(fā)達國家開始進行無人駕駛車的研究,大致可以分為三個階段:軍事用途、高速公路和城市環(huán)境。在軍事用途方面,早在80年代初期,美國國防部就資助自主陸地車輛ALV(AutonomousLandVehicle)的研究。進入21世紀,美國國防部連續(xù)舉辦大挑戰(zhàn)(Grand Challenge)比賽 活動,對促進智能車輛技術交流與創(chuàng)新起到很大激勵作用。隨著現(xiàn)實需要,智能車輛的研究逐漸轉(zhuǎn)向民用領域,最早實現(xiàn)在高速公路應用領域。高速公路無人駕駛研究的典型代表有美國CMU大學的NavLab-5系統(tǒng),意大利帕爾瑪大學的ARGO系統(tǒng)和德國聯(lián)邦國防大學的VAMP系統(tǒng)。在城市交通方面,歐洲Yamaba公司推出了旅游接待智能車輛CyberCab 。在2005年日本愛知世博會上,豐田公司成功演示了ITMS無人駕駛公交系統(tǒng)。美國在城市環(huán)境智能車輛研發(fā)方面起步較晚,目前與歐洲和日本存在一些差距。由于起步較晚,國內(nèi)智能車研究水平總體上與發(fā)達國家相比存在不小的距離。但經(jīng)過各高校和研究單位的不懈努力,仍取得了階段行的成果。國內(nèi)清華大學、國防科技大學、上海交通大學、西安交通大學、吉林大學、同濟大學和南京理工大學等都有過智能車的研究項目。我國的智能車發(fā)展也主要運用在軍事用途、高速公路和城市交通三個領域?!鞍宋濉薄ⅰ熬盼濉逼陂g由國內(nèi)六所重點大學聯(lián)合研制成功了我國第一輛智能車ALVLAB1和第二代智能車ALVLAB2。目前,我國正在組織研究第三代的陸地自主車ALVLAB3。THMR-V(TsingHua Mobile Robot V)清華V型智能車是一個比較成功的范例。它由清華大學計算機系智能技術與系統(tǒng)國家重點實驗室在中國科學院院士張鈸主持下研制的新一代智能移動機器人,兼有面向高速公路和一般道路的功能 。除了清華大學,越來越多的研究機構、學者也加入到這一新興學科中來。比如上海交通大學設計的自動駕駛汽車,能根據(jù)道路彎曲程度的變化,實時計算出車輛的轉(zhuǎn)向盤角度輸入,控制車輛按預設道路行駛。3、課題研究內(nèi)容智能車的研究是紛繁復雜的,而無論是怎樣的功能,車體的運動系統(tǒng)是可少的。本文設計方案以多功能的智能小車作為載體,以單片機AT89S52為核心,以XL02-232AP1微功率無線透明傳輸模塊為輔助系統(tǒng),由驅(qū)動執(zhí)行電路完成小車的行駛,通過計算機的控制對小車狀態(tài)作出實時反應,并輸出相應的控制指令;能夠?qū)崿F(xiàn)小車的前進,停止,后退,三個等級的左右轉(zhuǎn)向,以及小車的弧形運動。是智能車的基礎研究領域。 第1章 設計環(huán)境建設11 硬件環(huán)境要迅速反應、精確計算高效率的完成復雜功能,就需要一個運作穩(wěn)定良好的硬件環(huán)境。而提升硬件環(huán)境質(zhì)量。高質(zhì)量的硬件可以提供更加清晰豐富的數(shù)據(jù),收集足夠而標準的有用信息。當然,硬件系統(tǒng)牢固的架構與良好的信息傳導性能,將會極大地提高整個系統(tǒng)的信息傳遞速率與系統(tǒng)穩(wěn)定性,也是提高系統(tǒng)有效信息傳遞效率的可靠保證。硬件系統(tǒng)鋪設過程中要預留有足夠的調(diào)試空間,要有目的有計劃的建設系統(tǒng)關鍵節(jié)點,足夠而適當?shù)恼{(diào)試空間可以提升系統(tǒng)的各方面適應性和可靠性。1.1.1 硬件系統(tǒng)鋪設計算機無線收發(fā)模塊智能小車決策系統(tǒng)串口操作指令 圖1-11.1.2 硬件設備本設計中用到的硬件設備包括:可執(zhí)行串口控制指令的智能小車一輛,無線收發(fā)模塊一套,USB轉(zhuǎn)串口設備一套,軟件開發(fā)包一套,電池、導線若干。1.2 軟件環(huán)境 設計中用到的軟件操作系統(tǒng)是windows xp,編程中用到了vc,在模擬仿真中用到了Keil C,protel,proteus等。第2章 智能小車車體 智能小車車體是整個設計中的核心,它是這個系統(tǒng)運作的最終執(zhí)行者。它表現(xiàn)了整個智能小車設計的系統(tǒng)執(zhí)行效率。2.1 智能小車的硬件結構2.1.1 主控芯片的選擇 方案一:采用單個單片機作為主控芯片。由于AT89S52具有32個I/O口,能滿足小車各部分對I/O口的需求,另外只用一個單片機可以很好的控制小車。方案二:采用雙單片機作為主控芯片。利用兩塊AT89S52分別對小車的各部分進行檢測和控制,雖然減輕了單個單片機的負擔,提高了系統(tǒng)的工作效率,但是存在很多的I/O的資源浪費,并且兩個單片機不容易控制,所以不采用該方案。使用方案一。2.1.2 主要芯片介紹A AT89S52芯片 圖2-1AT89S52 是一種低功耗、高性能CMOS8位微控制器,具有 8K 在系統(tǒng)可編程Flash 存儲器。使用Atmel 公司高密度非 易失性存儲器技術制造,與工業(yè)80C51 產(chǎn)品指令和引腳完全兼容。片上Flash允許程序存儲器在系統(tǒng)可編程,亦適于 常規(guī)編程器。在單芯片上,擁有靈巧的8 位CPU 和在系統(tǒng) 可編程Flash,使得AT89S52為眾多嵌入式控制應用系統(tǒng)提 供高靈活、超有效的解決方案。AT89S52具有以下標準功能: 8k字節(jié)Flash,256字節(jié)RAM, 32 位I/O 口線,看門狗定時器,2 個數(shù)據(jù)指針,三個16 位 定時器/計數(shù)器,一個6向量2級中斷結構,全雙工串行口, 片內(nèi)晶振及時鐘電路。另外,AT89S52 可降至0Hz 靜態(tài)邏 輯操作,支持2種軟件可選擇節(jié)電模式??臻e模式下,CPU 停止工作,允許RAM、定時器/計數(shù)器、串口、中斷繼續(xù)工 作。掉電保護方式下,RAM內(nèi)容被保存,振蕩器被凍結, 單片機一切工作停止,直到下一個中斷或硬件復位為止。 P0 口:P0口是一個8位漏極開路的雙向I/O口。P1 口:P1 口是一個具有內(nèi)部上拉電阻的8 位雙向I/O 口,p1 輸出緩沖器能驅(qū)動4 個 TTL 邏輯電平。 此外,P1.0和P1.1分別作定時器/計數(shù)器2的外部計數(shù)輸入(P1.0/T2)和定時器/計數(shù)器2 的觸發(fā)輸入(P1.1/T2EX)。 在flash編程和校驗時,P1口接收低8位地址字節(jié)。 P2 口:P2 口是一個具有內(nèi)部上拉電阻的8 位雙向I/O 口,P2 輸出緩沖器能驅(qū)動 4 個 TTL 邏輯電平。 P3 口:P3 口是一個具有內(nèi)部上拉電阻的8 位雙向I/O 口,p3 輸出緩沖器能驅(qū)動4 個 TTL 邏輯電平。 此外,P3口還接收一些用于FLASH閃存編程和程序校驗的控制信號。 RST:復位輸入。當振蕩器工作時,RST引腳出現(xiàn)兩個機器周期以上高電平將是單片機復位。 ALE/PROG:當訪問外部程序存儲器或數(shù)據(jù)存儲器時,ALE(地址鎖存允許)輸出脈沖用于鎖存地址的低8位字節(jié)。一般情況下,ALE仍以時鐘振蕩頻率的1/6輸出固定的脈沖信號,因此它可對外輸出時鐘或用于定時目的。要注意的是:每當訪問外部數(shù)據(jù)存儲器時將跳過一個ALE脈沖。對FLASH存儲器編程期間,該引腳還用于輸入編程脈沖(PROG)。如有必要,可通過對特殊功能寄存器(SFR)區(qū)中的8EH單元的D0位置位,可禁止ALE操作。該位置位后,只有一條MOVX和MOVC指令才能將ALE激活。此外,該引腳會被微弱拉高,單片機執(zhí)行外部程序時,應設置ALE禁止位無效。 PSEN:程序儲存允許(PSEN)輸出是外部程序存儲器的讀選通信號,當AT89S52由外部程序存儲器取指令(或數(shù)據(jù))時,每個機器周期兩次PSEN有效,即輸出兩個脈沖,在此期間,當訪問外部數(shù)據(jù)存儲器,將跳過兩次PSEN信號。 EA/VPP:外部訪問允許,欲使CPU僅訪問外部程序存儲器(地址為0000H-FFFFH),EA端必須保持低電平(接地)。需注意的是:如果加密位LB1被編程,復位時內(nèi)部會鎖存EA端狀態(tài)。如EA端為高電平(接Vcc端),CPU則執(zhí)行內(nèi)部程序存儲器的指令。FLASH存儲器編程時,該引腳加上+12V的編程允許電源Vpp,當然這必須是該器件是使用12V編程電壓Vpp。 XTAL1:振蕩器反相放大器和內(nèi)部時鐘發(fā)生電路的輸入端。 XTAL2:振蕩器反相放大器的輸出端。B L293D芯片圖2-2L293D通過內(nèi)部邏輯生成使能信號。H-橋電路的輸入量可以用來設置馬達轉(zhuǎn)動方向,使能信號可以用于脈寬調(diào)整(PWM)。另外,L293D將2個H-橋電路集成到1片芯片上,這就意味著用1片芯片可以同時控制2個電機。每1個電機需要3個控制信號EN1、EN2、IN1、IN2,其中EN1、EN2是使能信號,IN1、IN2為電機轉(zhuǎn)動方向控制信號,IN1、IN2分別為1,0時,電機正轉(zhuǎn),反之,電機反轉(zhuǎn)。選用一路PWM連接EN12引腳,通過調(diào)整PWM的占空比可以調(diào)整電機的轉(zhuǎn)速。選擇一路I/O口,經(jīng)反向器74HC14分別接IN1和IN2引腳,控制電機的正反轉(zhuǎn)。L293D額定工作電流為1A,最大可達1.5A,Vss電壓最小4.5V,最大可達36V;Vs電壓最大值也是36V,但經(jīng)過實驗,Vs電壓應該比Vss電壓高,否則有時會出現(xiàn)失控現(xiàn)象。L293D內(nèi)部集成了續(xù)流二極管,因此可以直接驅(qū)動感性負載,如線圈和電機。表2-1是其使能、輸入引腳和輸出引腳的邏輯關系:表2-1EN A(B)IN1(IN3)IN2(IN4)電機運行情況HHL正轉(zhuǎn)HLH反轉(zhuǎn)H同IN2(IN4)同IN1(IN3)快速停止LXX停止C MAX232芯片MAX232芯片(如圖2-3)是美信公司專門為電腦的RS-232標準串口設計的單電源電平轉(zhuǎn)換芯片,使用+5v單電源供電。 圖2-3引腳介紹:第一部分是電荷泵電路。由1、2、3、4、5、6腳和4只電容構成。功能是產(chǎn)生+12v和-12v兩個電源,提供給RS-232串口電平的需要。 第二部分是數(shù)據(jù)轉(zhuǎn)換通道。由7、8、9、10、11、12、13、14腳構成兩個數(shù)據(jù)通道。其中13腳(R1IN)、12腳(R1OUT)、11腳(T1IN)、14腳(T1OUT)為第一數(shù)據(jù)通道。8腳(R2IN)、9腳(R2OUT)、10腳(T2IN)、7腳(T2OUT)為第二數(shù)據(jù)通道。TTL/CMOS數(shù)據(jù)從T1IN、T2IN輸入轉(zhuǎn)換成RS-232數(shù)據(jù)從T1OUT、T2OUT送到電腦DB9插頭;DB9插頭的RS-232數(shù)據(jù)從R1IN、R2IN輸入轉(zhuǎn)換成TTL/CMOS數(shù)據(jù)后從R1OUT、R2OUT輸出。 第三部分是供電。15腳GND、16腳VCC(+5v)。 主要特點:(1)符合所有的RS-232C技術標準 (2)只需要單一 +5V電源供電 (3)片載電荷泵具有升壓、電壓極性反轉(zhuǎn)能力,能夠產(chǎn)生+10V和-10V電壓V+、V- (4)功耗低,典型供電電流5mA (5)內(nèi)部集成2個RS-232C驅(qū)動器 (6)內(nèi)部集成兩個RS-232C接收器2.1.3 小車控制板電路圖涉及到的主要配件有:300rad/min直流電機,ATmega8515L芯片,MAX232芯片,濾波器,電容,電阻,二級管,串口接口,開關等,智能小車的原理圖詳見附錄1。2.1.4 小車電路板成品樣圖圖2-4 智能小車車體及無線接收模塊 圖2-5 無線發(fā)射模塊 圖2-6 USB轉(zhuǎn)串口模塊2.2 智能小車關鍵代碼(見附錄2)本程序在Icc AVR仿真調(diào)試IDE中由C語言編寫后生成 .Hex文件,再由雙龍MCU下載程序SLISP下載到小車單片機上。它的功能為接受串口傳入的16位控制命令01、02、03、04、05,并根據(jù)接收到的16位控制命令實現(xiàn)小車的前進、后退、左轉(zhuǎn)、右轉(zhuǎn)及停止功能。此程序不具有應答反饋和路徑判斷功能,屬于完全被動的執(zhí)行上位機命令的客戶端程序。2.3 智能小車程序介紹 本設計程序分為上位機和下位機,上位機主要通過MFC控制窗口對小車發(fā)送運動指令,上位機通過MFC讀取指令,由計算機的串口發(fā)送給XL02-232AP1無線發(fā)送模塊。無線接收模塊接收命令后進行分析解碼,傳送給單片機AT89S52,單片機讀取指令,發(fā)送控制命令給電動機驅(qū)動芯片L293D,驅(qū)動電機運轉(zhuǎn),從而實現(xiàn)智能小車的運動。2.3.1 上位機程序介紹 上位機是用MFC寫成的應用程序,主要目的為通過COM口向串口發(fā)送數(shù)據(jù)到無線發(fā)送模塊,經(jīng)接收模塊接收后控制小車的運行軌跡。例如:小車的左直角拐彎的控制代碼如下void CRobot2Dlg:OnButton7() / TODO: Add your control notification handler code hereCSerial ser;char buf1;buf0=Rob_left_one;ser.Open(com,9600);ser.SendData(buf,com);ser.Close();通過運行程序,點擊此按鈕可以實現(xiàn)小車的左轉(zhuǎn)彎的運動。2.3.2 下位機程序介紹A 主要功能及實現(xiàn)本設計主要實現(xiàn)了只能小車在運動過程中的直行,后退,停止及轉(zhuǎn)彎,下面詳細介紹各功能的實現(xiàn)情況。sbit input1=P13;sbit input2=P12;sbit input4=P10; sbit input3=P11;sbit en=P36;分別定義input1,input2,input4,input3為P1口的第3,2,0,1位,以便進行位操作,定義en為p3口的第六位。首先進行單片機的初始化。TMOD=0x22;TH0=0x38;TL0=0x38;TH1=0xfd;TL1=0xfd;TR0=1;TR1=1;REN=1;SM0=0;SM1=1;EA=1;ES=1;ET0=1;對定時器方式選擇寄存器TMOD的操作,確定是按定時器的工作模式,TH0和TL0分別是定時器0的高低8位,賦初值為0x38,TH1和TL1分別是定時器1的高低八位,賦初值為0xfd。TR0=1,TR1=1表示分別啟動T0和T1計數(shù)器REN為接收控制位,REN=1表示允許接收。SM0=0,SM1=1表示單片機的串行口的通信方式是10位異步收發(fā)方式,所用的波特頻率則由定時器控制完成。在中斷初始化方面,EA=1表示開單片機所有中斷,ES=1開串行口中斷,ET0=1開TO中斷,初始化完畢,進入主程序循環(huán)。 主程序中,建立void carmov(uchar left,uchar right)函數(shù),方便主程序循環(huán)語句while()的調(diào)用。 利用switch語句的判斷,例如小車的右轉(zhuǎn):case 0x06: carmov(UF,US);break;/小車原地case 0x07: carmov(UF,UL);break;/小車右轉(zhuǎn)弧形拐彎1級case 0x08: carmov(UF,UM);break;/小車右轉(zhuǎn)弧形拐彎2級單片機對接收到的指令通過上述語句進行判斷,若收到的為0x08,則執(zhí)行第三條語句,調(diào)用carmov函數(shù),函數(shù)的兩個初始值分別為UF和UM,在程序中已定義#define UF 1,#define UM 2,運行carmov函數(shù),首先進行左輪運動情況的判斷,在此例中,我們選擇左輪的初值為UF。if(left=UF) input1=1;input2=0; input1和input2分別賦值為1和0,表示小車左輪全速前進。 繼續(xù)運行程序進行小車的右輪運動情況的判斷,此例中,我們選擇右輪的初值為UM。else if(right=UM) if(num<60) input4=1;input3=0;elseinput4=1;input3=1; 首先判斷num是否小于60,若小于,則將input4和input3分別賦值為1及0,既右輪前進,否則將二者賦值為1和1,右輪停止。通過左右輪的單獨控制,完成小車的向右2級弧形拐彎。在本程序設計中,巧用定時器中斷模擬產(chǎn)生了PWM信號,以實現(xiàn)控制舵機。void tim0() interrupt 1num+;if(num>=90)num=0; 簡單介紹單片機模擬產(chǎn)生PWM信號。單片機系統(tǒng)實現(xiàn)對電機的控制,必須首先完成兩個任務:首先是產(chǎn)生基本的PWM周期信號;其次是脈寬的調(diào)整,即單片機模擬PWM信號的輸出,并且調(diào)整占空比。在此,我們設計num初值為0,num自加,如果num>=90時,則將num變?yōu)?繼續(xù)中斷程序運行,在此我們用定時器中斷模擬出PWM波,將其分成90等份,在小車轉(zhuǎn)動過程中,可以限制num值的大小而調(diào)整PWM波中高電平的占空比,從而實現(xiàn)小車電機在一個PWM周期波中的轉(zhuǎn)數(shù)控制,達到小車拐彎角度的控制。具體的設計過程:例如想讓小車轉(zhuǎn)向左極限的角度,它的正脈沖為2ms,則負脈沖為脈沖周期20ms-2ms=18ms,所以開始時在控制口發(fā)送高電平,然后設置定時器在2ms后發(fā)生中斷,中斷發(fā)生后,在中斷程序里將控制口改為低電平,并將中斷時間改為18ms,再過18ms進入下一次定時中斷,再將控制口改為高電平,并將定時器初值改為2ms,等待下次中斷到來,如此往復實現(xiàn)PWM信號輸出到電機。用修改定時器中斷初值的方法巧妙形成了脈沖信號,調(diào)整時間段的寬度便可使小車運動。為保證軟件在定時中斷里采集其他信號,并且使發(fā)生PWM信號的程序不影響中斷程序的運行(如果這些程序所占用時間過長,有可能會發(fā)生中斷程序還未結束,下次中斷又到來的后果),所以需要將采集信號的函數(shù)放在長定時中斷過程中執(zhí)行,也就是說每經(jīng)過兩次中斷執(zhí)行一次這些程序,執(zhí)行的周期還是20ms。 B 程序流程圖開始中斷返回定時器初始化開定時器中斷改變定時時間輸出管腳取反運行其他中斷程序有中斷是否為長中斷圖2-7 產(chǎn)生PWM信號流程圖開始接收中斷標志位RI清零讀取數(shù)據(jù)結束圖2-8 串口中斷程序流程圖開始結束num+num>=90?num=0是否圖2-9 定時器中斷流程圖開始初始化前進原地左轉(zhuǎn)向左弧形轉(zhuǎn)彎向右弧形轉(zhuǎn)彎原地右轉(zhuǎn)后退停止圖2-10 主程序流程圖第3章 無線收發(fā)模塊在小車系統(tǒng)中,控制系統(tǒng)的基本任務是:接收系統(tǒng)通過無線通信發(fā)射裝置傳來的運動控制指令,然后根據(jù)接收到的運動指令控制小車左、右輪的停止或轉(zhuǎn)動以實現(xiàn)規(guī)劃的運動。機器人能否正確接收運動控制指令,決定于無線通信系統(tǒng)的性能。所以通信速率高、集成度好、可靠性高、抗干擾能力強的無線通信系統(tǒng)對于正確實現(xiàn)小車的運動規(guī)劃具有重要的意義。3.1 無線模塊的選擇本設計中采用一款低功耗超高頻的XL02-232AP1數(shù)據(jù)收發(fā)模塊,它具有通信速率高、性能可靠、體積小的優(yōu)點,只接少許外圍電路即可工作,使用非常方便,既可發(fā)送又可接收。其特點主要有:300米傳輸距離 工作頻率在428.8435.1MHz,(默認433.92MHZ) 可設置ID:范圍065535,默認ID:12345 串口速率1.2K-38.4KBPS.(默認9.6KBPS) 數(shù)據(jù)格式8N1 方便快捷的參數(shù)設置3.1.1 XL02-232AP1的端口定義及連接示意圖A 端口定義:表3-1管腳定義說明電平備注 1VCC電源+5v模塊的第一方形焊盤2 GND 地GND3 TXD模塊數(shù)據(jù)輸出TTL4 RXD模塊數(shù)據(jù)輸入TTL 5 SET設置時拉低,平時懸空進入設置模塊時,請先將此端口拉低,再給模塊上電,此時綠燈長亮 6 GND地GND 7 NC不連接B 連接示意圖圖3-1圖3-23.1.2 無線模塊的性能A 通信方式在智能小車運動過程中,機器人的無線通信協(xié)議采用廣播式通信方式。上位機通過無線通信設備,發(fā)出數(shù)據(jù),小車從數(shù)據(jù)串中確定出發(fā)給自己的命令B 程序小車無線接收程序是串行通信中斷服務程序,其流程框圖見圖3-3“串行通信中斷程序流程”。開始同步標志1?幀頭1-55H?同步標志2?同步標志3?幀頭3-55H?幀頭2-FAH?置同步標志-1置同步標志-3置同步標志-0置同步標志-2置同步標志-0開始接收數(shù)據(jù),送到暫存區(qū),數(shù)據(jù)和CRC校驗最后字節(jié)-CRC?最后一個字節(jié)?置同步標志-0置新接收成功標志-1置同步標志-0恢復現(xiàn)場返回NNNYYYNNNNNYYYYY圖3-3 串行口通信中斷程序流程由流程圖3-3可知,必須通過啟始同步碼3道關驗證,才能開始接收數(shù)據(jù)。一幀數(shù)據(jù)接收完后,字節(jié)還要進行CRC(循環(huán)冗余校驗)。CRC校驗字節(jié)是每個數(shù)據(jù)字節(jié)相互異或后的結果。接收到的數(shù)據(jù)校驗正確則接收,否則放棄這幀數(shù)據(jù)。C 干擾與噪聲造成無線通信系統(tǒng)可靠性不高的原因很多,主要原因是存在著各種噪聲和干擾。它們的來源不同,有電臺干擾、通信信號干擾及驅(qū)動左右輪的直流電機產(chǎn)生的干擾,以及系統(tǒng)設備本身所產(chǎn)生的各種噪聲等。 為了抑制系統(tǒng)干擾及噪聲,應盡可能提高無線模塊的工作電壓和發(fā)射功率。發(fā)射器是通過通信線纜與上位機相連的,發(fā)射器輸入端加上光電隔離電路,以排除上位機的干擾。使用的發(fā)射和接收天線的長度保持一致,且均垂直于水平面向上。通信中出現(xiàn)失誤的情況是難以避免的,因此在通信協(xié)議中加入起始幀頭和校驗碼,通過抗干擾方法設計接收軟件程序,提高數(shù)據(jù)接收的準確性。3.2 配置接口通訊協(xié)議圖3-4操作步驟:按圖3-4中標識,把無線模塊插入轉(zhuǎn)接板相對位置。將無線發(fā)射模塊接到計算機串口上面,并將無線接收模塊接到小車串口上。首次使用無線收發(fā)模塊要進行調(diào)試:將電源開關置于ON,電源指示燈紅燈亮,再將設置開關置于ON,設置狀態(tài)燈綠燈亮。此時,可以用相關軟件調(diào)試無線收發(fā)模塊通信協(xié)議。本設計中,采用RF-Magic調(diào)試無線模塊。在正常通訊情況下,設置開關置于OFF。3.2.1 接口通訊接口: RS232 TTL通訊速率: 9600bps通訊格式: 1 start bit , 8 data bits , no parity bit , 1 stop bit 注意:在配置模式下串口恒為以上格式。 配置使能:config pin 低電平進入配置模式config pin 高電平進入正常模式 頻率計算:x = 設置RF頻率參數(shù) TX = 6.4Mhz * (67 + x/65535) 例如:頻率高字節(jié) = 0xcc;頻率低字節(jié) = 0xcc;則 x = 0xccccTX = 6.4Mhz * (67 + 0xcccc/0xffff) = 6.4Mhz * (67 +0.8) = 433.92Mhz例如:頻率高字節(jié) = 0xaa;頻率低字節(jié) = 0x00;則 x = 0xaa00TX = 6.4Mhz * (67 + 0xaa00/0xffff) = 6.4Mhz * (67 +0.664) = 433.05Mhz3.2.2 命令 (1)寫命令:0xF8 (2)數(shù)據(jù)格式: 主機發(fā)送: 0xF8+串口速率+RF發(fā)射功率+ RF頻率高字節(jié)+RF頻率低字節(jié)+ ID高字節(jié)+ID低字節(jié)+和校驗字節(jié) 注:和校驗字節(jié) = 所有參數(shù)累加和的低字節(jié)(不包括命令字節(jié)) 模塊應答:配置成功應答0xAA,否則無應答3.3 參數(shù)范圍表3-2功率01-04 ;0dbm,5dbm,10dbm,15dbmRS232速率01-06;1.2kbps,2.4kbps,4.8kbps,9.6kbps,19.2kbps,38.4kbps頻率428.8MHZ 435.1MHZ; 0x0000 0xfbffID0x0000 0xffff3.4 發(fā)送串口控制命令無線模塊接口為串口,采用9600波特率通信,串口控制程序?qū)崿F(xiàn)串口的開啟,發(fā)送命令,接收回饋信息,關閉串口等復雜過程,確保無線通信的穩(wěn)定性和可靠性。第4章 電機驅(qū)動模塊本次設計中采用了L293D驅(qū)動兩臺獨立直流電機分別控制小車的左后輪和右后輪,向小車發(fā)送左轉(zhuǎn)或右轉(zhuǎn)指令時,可以分別控制兩輪的轉(zhuǎn)速,使程序簡潔,方便。前輪則用一個可自由旋轉(zhuǎn)360度的小輪代替,無論是停止還是轉(zhuǎn)向,前輪都可以隨之改變,方便操作,簡化了程序的復雜性。電機驅(qū)動芯片方面,采用的是L293D驅(qū)動直流電機轉(zhuǎn)動,既方便簡潔,又實惠耐用。4.1 電機方案的論證與比較 方案一:采用步進電機,精確度較高,一般步進電機的精度為步進的3%-5%,且不積累,缺點是體積較大,速度較慢,且價格較高。 方案二:采用直流電機,直流電機運轉(zhuǎn)平穩(wěn),可以保證小車運行的精度,雖然其控制的精確度沒有直流電機的高,但完全可以滿足本設計中的要求,而且價格也比較合理。4.2 電機驅(qū)動芯片L293D采用16引腳DIP封裝,其內(nèi)部集成了雙極型H-橋電路,所有的開量都做成n型。這種雙極型脈沖調(diào)寬方式具有很多優(yōu)點,如電流連續(xù);電機可四角限運行;電機停止時有微振電流,起到“動力潤滑”作用,消除正反向時的靜摩擦死區(qū):低速平穩(wěn)性好等。L293D芯片的詳細介紹請參照論文中的2.1.1-b圖4-1第5章 經(jīng)驗總結與展望5.1 設計中解決的問題首先遇到的問題是小車CPU芯片的選擇,在權衡各種問題及考慮到自己掌握的知識等問題后,選擇使用了AT89S52。首先,這個芯片與89C51類似,而89C51使我們已經(jīng)學過的單片機,其次,AT89S52的功能及引腳完全可以滿足此次設計的需要。在進行上位機與下位機傳輸?shù)膯栴}上,經(jīng)過上網(wǎng)搜索與老師的答疑,選擇了一款低功耗超高頻的XL02-232AP1數(shù)據(jù)收發(fā)模塊,它可以解決在無線模塊中干擾最大的噪聲問題,既方便又實惠。在電機驅(qū)動模塊上,選擇了兩個直流電機分別單獨控制小車的左右輪,解決了在轉(zhuǎn)彎時單片機程序控制同時控制小車左右輪不同轉(zhuǎn)速的問題。設計小車弧形拐彎時遇到的最大問題是怎樣實現(xiàn)小車兩輪的不同轉(zhuǎn)速,在咨詢老師和查閱相關書籍后得知,可以用單片機模擬實現(xiàn)PWM波,PWM波可控制電機的運轉(zhuǎn)。我們可以巧妙的利用定時器的中斷來實現(xiàn)單片機模擬PWM波的產(chǎn)生,利用變量num的大小調(diào)整可以調(diào)整一個波形周期內(nèi)高電平所占的占空比,從而實現(xiàn)車輪在一個周期內(nèi)的轉(zhuǎn)數(shù),從宏觀上即可實現(xiàn)小車的弧形拐彎。上位機的程序也是比較苦難的,由于平時很少接觸MFC窗口的編程,開始編寫上位機程序時遇到了不小的阻力,但是指導老師適時的給我們輔導了這方面的知識,使我在編程中解決了不小的困難。電源選擇方面,無線驅(qū)動用的電池必須滿足6V以上方可實現(xiàn)其正常運行。由于用到的電機耗電量比較大,六節(jié)干電池只用了十幾分鐘就耗完了,剛開始不知道,以為是編程出現(xiàn)了問題,不能滿足程序的長時間運行,在考慮并調(diào)試之后,終于發(fā)現(xiàn)了這一個問題,問題得到圓滿的解決。5.2 總結與展望 智能小車的設計一直是我所想做的,它不但滿足了我的興趣愛好,而且還能將大學四年中的知識很好的應用到設計中。 此次設計主要是嵌入式方面的內(nèi)容,用到的軟件知識有MFC,VC等,在模擬實現(xiàn)過程中也用到了protel和protus等,硬件方面用到了了單片機的相關知識。設計中很好的將這些知識聯(lián)系統(tǒng)一起來,做到融會貫通。最重要的是在此次設計中,解決了很多平時理論學習匯總很少遇到的實際問題,例如小車電源的選擇過程中,費了很大的周折,最讓我記憶深刻的是小車電機電池的問題。還有就是USB轉(zhuǎn)串口的問題,雖然最后未能圓滿解決此問題,但是解決問題的過程中還是收獲不少。隨著科技的迅猛發(fā)展,智能已經(jīng)成為了現(xiàn)在的高科技的熱詞,智能機器人可以解決無數(shù)人類無法或者是很難解決的難題。智能是大勢所趨,而智能車作為智能機器人中一類必不可少的組成部分,最近幾年發(fā)展更是迅速,各個國家更是投入大量資金。它廣泛涉及人工智能、計算機視覺、自動控制、精密儀器、傳感和信息等一系列學科的創(chuàng)新研究,其研究成果可廣泛應用于工業(yè)、農(nóng)業(yè)、醫(yī)藥、軍事、航空、信息技術等實際領域,集中反映出一個國家的高科技水平和綜合國力,是國家綜合國力強大的標志,也是人類文明進步的標志。致 謝 此次設計過程中,非常感謝 老師對我的悉心教導,正是由于老師的細心指導,才讓我在遇到很多問題是能夠豁然開朗,能夠找到解決的辦法,讓我不氣餒,最終走向成功。另外還要感謝我們宿舍的郭勤寶同學,在遇到問題是能夠第一時間給予我解決問題的建議,能夠為我找到另一條路。感謝本設計小組的全體同學,在我準備論文過程中做過的有益的探討,感謝系領導和老師在我大學四年中無微的關懷,讓我順利完成自己的大學學習。最后,我還要感謝養(yǎng)育我的父母和一直關心我、愛護我的親人和朋友,是他們深切的鼓勵和鞭策使我一直保持前進的動力和希望,在此獻上我最衷心的謝意和最誠摯的祝福!參考文獻1船倉一郎,土屋堯,崛桂太郎(日).機器人控制電子學.北京:科技出版社.2004.11122陳繼榮.智能電子制作創(chuàng)新制作-機器人制作入門.北京:科學出版社.2007.66713Rowel O.Atienza,Marcelo H.Ang Jr. A Flexible Control Architecture for Mobile Robots:An Application for a Walking Robot.Journal of Intelligent and Robotic Systems,Springer Netherlands.2001.29484V.E.Pavlovsky,S.A.Polivtseev,T.S.Khashan.Intelligent Technical Audition and Vision Sensors for Walking Robot Realizing Telepresence Functions.Climbing and Walking Robots,2006,Vol.10:3873975江晉劍,錢萌.一種基于AT89S52的簡易智能小車設計:科技論文.成都:電子科技大學高能所,2007.971006胡漢才.單片機原理及接口技術(第二版).北京:清華大學出版社,2004.6165.206207.337338 7肖偉,武強,閆秀桃,劉根.L293D在護士移動機器人主控電路板設計中的應用.國外電子元器件,2007,Vol.11:64668趙負圖.光電檢測控制電路手冊.北京:化學工業(yè)出版社.2001.34399趙負圖.無線電接收發(fā)射應用集成電路手冊.北京:化學工業(yè)出版社.2003.455410何立民. MCS-51系列單片機應用系統(tǒng)設計系統(tǒng)配置與接口技術.北京:北京航空航天大學出版社,2001.8190附錄一:原理圖附錄二:上位機主要程序代碼:void CRobot2Dlg:OnUp() /實現(xiàn)小車的向前移動CSerial ser;char buf1;buf0=Roa_forward;ser.Open(com,9600);ser.SendData(buf,com);ser.Close();void CRobot2Dlg:OnLeft() /實現(xiàn)小車的向左直角拐彎CSerial ser;char buf1;buf0=Roa_left_one;ser.Open(com,9600);ser.SendData(buf,com);ser.Close();void CRobot2Dlg:OnDown() / 實現(xiàn)小車的向后移動CSerial ser;char buf1;buf0=Roa_back;ser.Open(com,9600);ser.SendData(buf,com);ser.Close();void CRobot2Dlg:OnStoper() / 小車停止CSerial ser;char buf1;buf0=Roa_stop;ser.Open(com,9600);ser.SendData(buf,com);ser.Close();void CRobot2Dlg:OnRignt() / 小車向右弧形拐彎2級CSerial ser;char buf1;buf0=Roa_right_three;ser.Open(com,9600);ser.SendData(buf,com);ser.Close();void CRobot2Dlg:OnButton7() /小車向左直角拐彎char buf1;buf0=Rob_left_one;ser.Open(com,9600);ser.SendData(buf,com);ser.Close();void CRobot2Dlg:OnButton6() / 小車向左弧形拐彎2級CSerial ser;char buf1;buf0=Rob_left_three;ser.Open(com,9600);ser.SendData(buf,com);ser.Close();下位機主要程序代碼:#include<reg52.h>#define uchar unsigned char#define UF 1#define UM 2#define UL 3#define BL 4#define ST 5#define BF6#define US 7#define BM 8#define BS 9sbit input1=P34;sbit input2=P20;sbit input4=P36; sbit input3=P21;sbit enlef=P35;sbit enrig=P37;uchar rec,nub;void init() /初始化操作nub=0;rec=0;enlef=0;enrig=0;TMOD=0x22;TH0=0x38;TL0=0x38;TH1=0xfd;TL1=0xfd;TR0=1;TR1=1;REN=1;SM0=0;SM1=1;EA=1;ES=1;ET0=1;void carleft(uchar k_lef,uchar cnt_lef)if(k_lef=1)input1=1;input2=0;else if(k_lef=2)input1=0;input2=1;if(nub<cnt_lef) enlef=1;elseenlef=0;void carright(uchar k_rig,uchar cnt_rig)if(k_rig=1)input4=1;input3=0;else if(k_rig=2)input4=0;input3=1;if(nub<cnt_rig)enrig=1;elseenrig=0;void carmov(uchar left,uchar right) /左輪運動判斷 switch(left) case UF: carleft(1,90); break;case UM: carleft(1,60); break;case UL: carleft(1,30); break;case US: carleft(1,18); break;case ST: carleft(0,0); break;default: break; /右輪運動判斷 switch(right) case UF: carright(1,90); break;case UM: carright(1,60); break;case UL: carright(1,30); break;case US: carright(1,18); break;case ST: carright(0,0); break;default: break; void main() init(); while(1) switch(rec) case 0x11: carmov(BF,BF); break;/小車后退case 0x12: carmov(UF,UF);break;/小車前進case 0x13: carmov(US,UF);break;/小車直角左轉(zhuǎn)case 0x14: carmov(UL,UF);break;/小車弧形左轉(zhuǎn)1級case 0x15: carmov(UM,UF);break;/小車弧形左轉(zhuǎn)2級case 0x16: carmov(UF,US);break;/小車直角右轉(zhuǎn)case 0x17: carmov(UF,UL);break;/小車弧形右轉(zhuǎn)1級case 0x18: carmov(UF,UM);break;/小車弧形右轉(zhuǎn)2級case 0x19: carmov(ST,ST);break;/小車停止default: break; void ser() interrupt 4 RI=0; rec=SBUF; void time0() interrupt 1nub+;if(nub>=90)nub=0;第41頁