紅外遙控六足爬蟲機器人設計_第1頁
紅外遙控六足爬蟲機器人設計_第2頁
紅外遙控六足爬蟲機器人設計_第3頁
紅外遙控六足爬蟲機器人設計_第4頁
紅外遙控六足爬蟲機器人設計_第5頁
已閱讀5頁,還剩15頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1 六足爬蟲機器人設計 設計人:李海鷹 日期: 2004 年 9 月 30 日 2 目 錄 前言 . 3 (一)、機器人的大腦 . 3 (二)、機器人的眼睛耳朵 . 3 (三)、 機器人的腿 驅(qū)動器與驅(qū)動輪 . 4 (四)、機器人的手臂 機械傳動專制 . 5 (五)、機器人的心臟 電池 . 5 一、 AT89S51 單片機簡介 . 6 (一)、 AT89S51 主要功能列舉如下: . 6 (二)、 AT89S51 各引腳功能介紹: . 6 二、控制系統(tǒng)電路圖 . 9 三、微型伺服馬達原理與控制 . 10 (一)、微型伺服馬達內(nèi)部結構 . 10 (二)、微行伺服馬達的工作原理 . 10 (三)、伺服馬達的控制 .11 (四)、選用的伺服馬達 .11 四、紅外遙控 . 12 (一)、 紅外遙控系統(tǒng) . 12 (二)、 遙控發(fā)射器及其編碼 . 12 (三)、紅外接收模塊 . 13 (四)、紅外解碼程序設計 . 13 五、控制程序 . 14 六、六足爬蟲機器人結構設計圖 . 20 3 前言 今 年年初,學校為參加中央電視臺舉辦的第三屆全國大學生機器人電視大賽,組建了機器人制作小組。我積極參加,有幸成為了其中的一員。因為我們以前沒有參加過類似的比賽,也沒有制作機器人的經(jīng)驗。可以說我們什么都是從零開始,邊學習邊制作。通過這半年多的制作過程,我從中學到了很多書本上學不到的東西,也得到了很好的學習與鍛煉的機會。 最初,我們組建了機器人制作實驗室。到五金機電市場購買了必要的工具和一些制作材料。然后開始制作實驗機器人的身體 框架。 實驗機器人的框架我們是使用輕型萬能角鋼制作的,這種角鋼的兩側都有間隔均勻的孔 槽,可以很方便的用螺栓進行連接。用不同長度的角鋼組合后,就可以得到不同大小的立方體和長方體及多邊形。機器人身體的框架就搭建好了。在它的上面將裝上:機器人的大腦 可編程控制器、機器人的眼睛耳朵 傳感器、機器人的腿 驅(qū)動輪、機器人的手臂 機械傳動專制、機器人的心臟 電池之所以使用輕型萬能角鋼,主要是因為是在制作試驗機型,而 輕型萬能角鋼安裝拆 卸方便和便于修改長度,調(diào)整設計。 實驗機器人定型后,就照其尺寸用不銹鋼方管焊接制作機器人的身體。再在上面進行打孔等工作,后就可以將機器人的其它部分安裝上去。這樣 一個機器人就制作好了。 下面我介紹一下機器人的基本 組成部分: (一)、機器人的大腦 它可以有很多叫法,可以叫做: 可編程控制器、 微控制器,微處理器,處理器或者計算器等,不過這都不要緊,通常微處理器是指一塊芯片,而其它的是一整套控制器,包括微處理器和一些別的元件。任何一個機器人大腦就必須要有這塊芯片,不然就稱不上機器人了。在選擇微控制器的時候,主要要考慮:處理器的速度,要實現(xiàn)的功能, ROM 和 RAM 的大小, I/O 端口類型和數(shù)量,編程語言以及功耗等。 其主要類型有:單片機、 PLC、工控機、 PC 機等。 單有這些硬件是 不夠的,機器人的大腦還無法運行。只有在程序的控制下,它才能按我們的要求去工作??梢哉f程序就是機器人的靈魂了。而程序是由編程語言所編寫的。 編程語言是一個控制器能夠接受的語言類型,一般有 C 語言,匯編語言或者basic 語言等,這些通常能被高級一點的控制器直接執(zhí)行,因為在高級控制器里面內(nèi)置了編譯器能夠直接把一些高級語言翻譯成機器碼。微處理器將執(zhí)行這些機器碼,并對機器人進行控制。 (二)、機器人的眼睛耳朵 傳感器,是機器人的感覺器官,是機器人和現(xiàn)實世界之間的紐帶,使機器人 4 能感知周圍的環(huán)境情況。其主要有:光電傳感器、 紅外傳感器、力傳感器、超聲波傳感器、位置和姿態(tài)傳感器等等。下面我將就幾種常用傳感器進行介紹: 1、光電傳感器:光電傳感器的原理是光電效應。其主要用途是顏色識別(機器人就可以沿著地上的線條行進了)和光電編碼等。 2、 紅外傳感器:紅外傳感器是用來測量距離和感知周圍情況的。因為發(fā)射出去的紅外信號在一定距離內(nèi)遇到物體就會反射回來。通過發(fā)送紅外線信號,并接收反射回來的信號,機器人就可以感知前方或身體周圍的情況,做出相應的調(diào)整(如:倒退或繞行等)。 3、 力傳感器:力傳感器是用來檢測碰撞或者接觸信號的,比如機械手的應用, 當你放一個東西到機械手的時候,機械手自動抓住它,它就需要力傳感器檢測東西抓的緊不緊。典型的力傳感器是微動開關和壓敏傳感器。微動開關其實就是一個小開關,通過調(diào)節(jié)開關上的杠桿長短,能夠調(diào)節(jié)觸動開關的力的大小。用來做碰撞檢測這是最好不過了。但是這種傳感器必須事先確定好力的閥值,也就是說只能實現(xiàn)硬件控制(開還控制)。而壓敏傳感器是能根據(jù)受力大小,自動調(diào)節(jié)輸出電壓或者電流,從而可以實現(xiàn)軟件控制(閉環(huán)控制)。 4、超聲波傳感器:超聲波傳感器是從蝙蝠那里學來的,通過把發(fā)射出的信號與接收到的信號進行對比,就可以測定周圍是否 有障礙物,及障礙物的距離,也屬于距離探測傳感器,能提供交遠的探測范圍,而且還能提供在一個范圍內(nèi)的探測而不是一條線的探測。 5、位置和姿態(tài)傳感器:機器人在移動或者動作的時候必須時時刻刻知道自己的姿態(tài)動作,否則就會產(chǎn)生控制中的一個開環(huán)問題,沒有反饋,無法獲知運動是否正確。 位置傳感器和姿態(tài)傳感器就是用來解決這個問題的。常用的有光電編碼器,由于機器人的執(zhí)行機構一般是電機驅(qū)動,通過計算電機轉(zhuǎn)的圈數(shù),可以得出電機帶動部件的大致位置,編碼器就是這樣一種傳感器,它一般和電機軸或者轉(zhuǎn)動部件直接連接,電機或者轉(zhuǎn)動部件轉(zhuǎn)了多少 圈或者角度能夠通過編碼器讀出,控制軟件再根據(jù)讀出數(shù)據(jù)進行位置估計計算。還有一種是陀螺儀,這是利用陀螺原理制作的傳感器,主要可以測得移動機器人的移動加速度,轉(zhuǎn)過的角度等信息。 (三)、 機器人的腿 驅(qū)動器與驅(qū)動輪 驅(qū)動器就是驅(qū)動機器人的動的部件。最常用的是電機了。當然還有液壓,氣動等別的驅(qū)動方式。一個機器人最主要的控制量就是控制機器人的移動,無論是自身的移動還是手臂等關節(jié)的移動,所以機器人驅(qū)動器中最根本和本質(zhì)的問題就是控制電機,控制電機轉(zhuǎn)的圈數(shù),就可以控制機器人移動的距離和方向,機械手臂的彎曲的程度或者移動的 距離等。所以,第一個要解決的問題就是如何讓電機能根據(jù)自己的意圖轉(zhuǎn)動。一般來說,有專門的控制卡和控制芯片來進行控制的。有了這些控制卡和芯片,我們所要做的就是把微控制器和這些連接起來,然后就可以用程序來控制電機了。第二個問題是控制電機的速度,在機器人上的實際表現(xiàn)就是機器人或者手臂的實際運動速度了,機器人走的快慢全靠電機的轉(zhuǎn)速,這樣,我們就要求控制卡對電機有速度控制。電機目前常用的有兩種,步進電機和直流電機。下面我將就這兩種電機進行介紹: 5 1、 直流電機:這是最最普通的電機了。直流電機最大的問題是你沒法精確控制電機 轉(zhuǎn)的圈數(shù),也就前面所說的位置控制。你必須加上一個編碼盤,來進行反饋,來獲得實際轉(zhuǎn)的圈數(shù)。但是直流電機的速度控制相對就比較簡單,用一種叫 PWM(脈寬調(diào)速)的調(diào)速方法可以很輕松的調(diào)節(jié)電機速度?,F(xiàn)在也有很多控制芯片帶調(diào)速功能的。選購時要考慮的參數(shù)是電機的輸出力矩,電機的功率,電機的最高轉(zhuǎn)速。 2、 步進電機:看名字就知道了,它是一步一步前進的。也就是說,它可以一個角度一個角度旋轉(zhuǎn),不象直流電機,你可以很輕松的調(diào)節(jié)步進電機的轉(zhuǎn)角位置,如果你發(fā)一個轉(zhuǎn) 10 圈的指令,步進電機就不會轉(zhuǎn) 11 圈,但是如果是直流電機,由于 慣性作用,它可能轉(zhuǎn) 11 圈半。步進電機的調(diào)速是通過控制電機的頻率來獲得的。一般控制信號頻率越高,電機轉(zhuǎn)的越快,頻率越低,轉(zhuǎn)的越慢。選購時要考慮的參數(shù)是電機的輸出力矩,電機的功率,每個脈沖電機的最小轉(zhuǎn)角。 還有就是關于輸出的動力,要說明一下: 一般情況下,電機都沒法直接帶動輪子或者手臂,因為速度過高力矩不夠大,所以我們需要加上一個減速箱來增加電機的輸出力矩,但是代價是電機速度的減小,比如一個 1: 250 的齒輪箱,會讓你電機的輸出力矩增大 250 倍,但是速度只有原來的 1/250 了。首先計算出機器人所需要的速度與 力矩大小,然后根據(jù)速度與力矩去選擇電機與減速器。 (四)、機器人的手臂 機械傳動專制 機械傳動專制就是,由電機驅(qū)動的一些桿件和機構(如:凸輪機構、螺桿機構等),用以實現(xiàn)機械手臂的上升、下降、伸縮、彎曲等動作。通常運用的機構有四桿機構、凸輪機構、螺桿機構、搖臂等。 (五)、機器人的心臟 電池 電池為機器人的控制系統(tǒng)與驅(qū)動系統(tǒng)提供能源供應。主要有:電瓶及可充電電池、電池。 前面介紹了機器人的一些基本知識,但這是遠遠不夠的。 機器人學科,是在多學科基礎上發(fā)展起來的綜合性技術。機器人技術涉及機械、電子、計算機、語言學和人工智能等許多學科?,F(xiàn)在機器人已經(jīng)應用在人類社會生活的各個領域,發(fā)揮著越來越重要的影響。 我利用暑假的時間設計了一個六足爬蟲機器人,用日立( HITACHI)的錄像機遙控器來對它進行控制?;驹硎牵哼b控器發(fā)出紅外學號,機器人通過紅外接收器接收倒紅外信號后,對信號進行解碼,并以存儲的代碼進行比較,確定指令的含義,后可以實現(xiàn)前進、后退、左轉(zhuǎn)、右轉(zhuǎn)及發(fā)聲等功能??刂葡到y(tǒng)我使用的是 AT89S51 單片機,編程語言使用的是匯編語言,動力系統(tǒng)使用的是微型伺服馬達,能源系統(tǒng)使用的是 9V 電池。下面我將就具體設計進行介紹 。 6 一、 AT89S51 單片機簡介 AT89S51 為 ATMEL 所生產(chǎn)的可電氣燒錄清洗的 8051 相容單芯片,其內(nèi)部程序代碼容量為 4KB (一)、 AT89S51 主要功能列舉如下: 1、為一般控制應用的 8 位單芯片 2、晶片內(nèi)部具時鐘振蕩器(傳統(tǒng)最高工作頻率可至 12MHz) 3、內(nèi)部程式存儲器( ROM)為 4KB 4、內(nèi)部數(shù)據(jù)存儲器( RAM)為 128B 5、外部程序存儲器可擴充至 64KB 6、外部數(shù)據(jù)存儲器可擴充至 64KB 7、 32 條雙向輸入輸出線,且每條均可以單獨做 I/O 的控制 8、 5 個中斷向量源 9、 2 組獨立的 16 位定時器 10、 1 個全多工串行通信端口 11、 8751 及 8752 單芯片具有數(shù)據(jù)保密的功能 12、單芯片提供位邏輯運算指令 (二)、 AT89S51 各引腳功能介紹: VCC: AT89S51 電源正端輸入,接 +5V。 VSS: 電源地端。 XTAL1: 單芯片系統(tǒng)時鐘的反相放大器輸入端。 XTAL2: 系統(tǒng)時鐘的反相放大器輸出端,一般在設計上只要在 XTAL1 和 XTAL2 上接上一只石英振蕩晶體系統(tǒng)就可以動作了,此外可以在兩引腳與地之間加入一 20PF 的小電容,可以使系統(tǒng)更穩(wěn)定,避免噪聲干擾而死機。 RESET: AT89S51 的重置引腳,高電平動作,當要對晶片重置時,只要對此引腳電平提升至高電平并保持兩個機器周期以上的時間, AT89S51 便能完成系統(tǒng)重置的各項動作,使得內(nèi)部特殊功能寄存器之內(nèi)容均被設成已知狀態(tài),并且至地址A T 8 9 S 5 1 7 0000H 處開始讀入程序代碼而執(zhí)行程序。 EA/Vpp: EA為英文 External Access的縮寫,表示存取外部程序代碼之意,低電平動作,也就是說當此引腳接低電平后,系統(tǒng)會取用外部的程序代碼(存于外部EPROM 中)來執(zhí)行 程序。因此在 8031 及 8032 中, EA 引腳必須接低電平,因為其內(nèi)部無程序存儲器空間。如果是使用 8751 內(nèi)部程序空間時,此引腳要接成高電平。此外,在將程序代碼燒錄至 8751 內(nèi)部 EPROM 時,可以利用此引腳來輸入 21V 的燒錄高壓( Vpp)。 ALE/PROG: ALE 是英文 Address Latch Enable的縮寫,表示地址鎖存器啟用信號。AT89S51 可以利用這支引腳來觸發(fā)外部的 8 位鎖存器(如 74LS373),將端口 0的地址總線( A0 A7)鎖進鎖存器中,因為 AT89S51 是以多工的方式送出地址及 數(shù)據(jù)。平時在程序執(zhí)行時 ALE 引腳的輸出頻率約是系統(tǒng)工作頻率的 1/6,因此可以用來驅(qū)動其他周邊晶片的時基輸入。此外在燒錄 8751 程序代碼時,此引腳會被當成程序規(guī)劃的特殊功能來使用。 PSEN: 此為 Program Store Enable的縮寫,其意為程序儲存啟用,當 8051 被設成為讀取外部程序代碼工作模式時( EA=0),會送出此信號以便取得程序代碼,通常這支腳是接到 EPROM 的 OE腳。 AT89S51 可以利用 PSEN 及 RD 引腳分別啟用存在外部的 RAM 與 EPROM,使得數(shù)據(jù)存儲器與程序存儲器可以合并在一起而 共用 64K 的定址范圍。 PORT0( P0.0 P0.7): 端口 0 是一個 8 位寬的開路汲極( Open Drain)雙向輸出入端口,共有 8 個位, P0.0 表示位 0, P0.1 表示位 1,依此類推。其他三個 I/O 端口( P1、 P2、 P3)則不具有此電路組態(tài),而是內(nèi)部有一提升電路, P0 在當做 I/O 用時可以推動 8個 LS 的 TTL 負載。如果當 EA 引腳為低電平時(即取用外部程序代碼或數(shù)據(jù)存儲器), P0 就以多工方式提供地址總線( A0 A7)及數(shù)據(jù)總線( D0 D7)。設計者必須外加一鎖存器將端口 0 送出的地址栓鎖住成為 A0 A7,再配合 端口 2所送出的 A8 A15 合成一完整的 16 位地址總線,而定址到 64K 的外部存儲器空間。 PORT2( P2.0 P2.7): 端口 2 是具有內(nèi)部提升電路的雙向 I/O 端口,每一個引腳可以推動 4 個 LS的 TTL 負載,若將端口 2 的輸出設為高電平時,此端口便能當成輸入端口來使用。 P2 除了當做一般 I/O 端口使用外,若是在 AT89S51 擴充外接程序存儲器或數(shù)據(jù)存儲器時,也提供地址總線的高字節(jié) A8 A15,這個時候 P2 便不能當做 I/O來使用了。 PORT1( P1.0 P1.7): 端口 1 也是具有內(nèi)部提升電路的雙向 I/O 端口,其 輸出緩沖器可以推動 4 個LS TTL 負載,同樣地若將端口 1 的輸出設為高電平,便是由此端口來輸入數(shù)據(jù)。如果是使用 8052 或是 8032 的話, P1.0 又當做定時器 2 的外部脈沖輸入腳,而P1.1 可以有 T2EX 功能,可以做外部中斷輸入的觸發(fā)腳位。 PORT3( P3.0 P3.7): 端口 3 也具有內(nèi)部提升電路的雙向 I/O 端口,其輸出緩沖器可以推動 4 個TTL 負載,同時還多工具有其他的額外特殊功能,包括串行通信、外部中斷控制、 8 計時計數(shù)控制及外部數(shù)據(jù)存儲器內(nèi)容的讀取或?qū)懭肟刂频裙δ堋?其引腳分配如下: P3.0: RXD,串行通 信輸入。 P3.1: TXD,串行通信輸出。 P3.2: INT0,外部中斷 0 輸入。 P3.3: INT1,外部中斷 1 輸入。 P3.4: T0,計時計數(shù)器 0 輸入。 P3.5: T1,計時計數(shù)器 1 輸入。 P3.6: WR:外部數(shù)據(jù)存儲器的寫入信號。 P3.7: RD,外部數(shù)據(jù)存儲器的讀取信號。 9 二、控制系統(tǒng)電路圖 控制系統(tǒng)電路圖 10 三、微型伺服馬達原理與控制 (一)、微型伺服馬達內(nèi)部結構 一個微型伺服馬達內(nèi)部包括了一個小型直流馬達;一組變速齒輪組;一個反饋可調(diào)電位器;及一塊電子控制板。其中,高速轉(zhuǎn)動的直流馬達提供了原始動力,帶動變速(減速)齒輪組,使之產(chǎn)生高扭力的輸出,齒輪組的變速比愈大,伺服馬達的輸出扭力也愈大,也就是說越能承受更大的重量,但轉(zhuǎn)動的速度也愈低。 (二)、微行伺服馬達的工作原理 一個微型伺服馬達是一個典型閉環(huán)反饋系統(tǒng),其原理可由下圖表示: 減速齒輪組由馬達驅(qū)動,其終端(輸出端)帶動一個線性的比例電位器作位置檢測,該電位器把轉(zhuǎn)角坐標轉(zhuǎn)換為一比 例電壓反饋給控制線路板,控制線路板將其與輸入的控制脈沖信號比較,產(chǎn)生糾正脈沖,并驅(qū)動馬達正向或反向地轉(zhuǎn)動,使齒輪組的輸出位置與期望值相符,令糾正脈沖趨于為 0,從而達到使伺服馬達精確定位的目的。 微型伺服馬達內(nèi)部結構圖 微行伺服馬達工作原理圖 11 (三)、伺服馬達的控制 標準的微型伺服馬達有三條控制線,分別為:電源、地及控制。電源線與地線用于提供內(nèi)部的直流馬達及控制線路所需的能源,電壓通常介于 4V 6V 之間,該電源應盡可能與處理系統(tǒng)的電源隔離(因為伺服馬達會產(chǎn)生噪音)。甚至小伺服馬達在重負載時也會拉低放大器的電壓,所以整個系統(tǒng)的電源供應的比例必須合理。 輸入 一個周期性的正向脈沖信號,這個周期性脈沖信號的高電平時間通常在1ms 2ms 之間,而低電平時間應在 5ms 到 20ms 之間,并不很嚴格,下表表示出一個典型的 20ms 周期性脈沖的正脈沖寬度與微型伺服馬達的輸出臂位置的關系: (四)、選用的伺服馬達 我選用的伺服馬達為 TowPro 的,型號為 SG303。其主要技術參數(shù)如下: 轉(zhuǎn)速: 0.23 秒 60 度。 力矩: 3.2kg cm。 尺寸: 40.4mm 19.8mm 36mm。 重量: 37.2g。 5V 電源供電。 控制周期脈沖寬度為 20ms。送出不同 的正脈沖寬度是,就可以得到不同的控制效果??刂普}沖寬度如下: 正脈沖寬度為 0.3ms 時,伺服馬達反轉(zhuǎn)。 正脈沖寬度為 2.5ms 時,伺服馬達正轉(zhuǎn)。 正脈沖寬度為 1.4ms 時,伺服馬達回到中點。 12 四、紅外遙控 家中許多的電器產(chǎn)品都有遙控的功能,例如電視機、錄像機、 VCD、空調(diào)等家電產(chǎn)品,它們都是以紅外遙控的方式進行遙控。 (一)、 紅外遙控系統(tǒng) 通用紅外遙控系統(tǒng)由發(fā)射和接收兩大部分組成,應用編 /解碼專用集成電路芯片來進行控制操作,如圖 1 所示。發(fā)射部分包括鍵盤矩陣、編碼調(diào)制、 LED 紅外發(fā)送器;接收部分包括光、電 轉(zhuǎn)換放大器、解調(diào)、解碼電路。 (二)、 遙控發(fā)射器及其編碼 遙控發(fā)射器專用芯片很多,根據(jù)編碼格式可以分成兩大類,這里我們以運用比較廣泛,解碼比較容易的一類來加以說明,現(xiàn)以日本 NEC的 uPD6121G 組成發(fā)射電路為例說明編碼原理。當發(fā)射器按鍵按下后,即有遙控碼發(fā)出,所按的鍵不同遙控編碼也不同。這種遙控碼具有以下特征: 采用脈寬調(diào)制的串行碼,以脈寬為 0.565ms、間隔 0.56ms、周期為 1.125ms的組合表示二進制的 “0” ;以脈寬為 0.565ms、間隔 1.685ms、周期為 2.25ms的組合表示二進制的 “ 1” ,其波形如圖 2 所示。 上述 “0” 和 “1” 組成的 32 位二進制碼經(jīng) 38kHz 的載頻進行二次調(diào)制以提高發(fā)射效率,達到降低電源功耗的目的。然后再通過紅外發(fā)射二極管產(chǎn)生紅外線向空間發(fā)射。 遙控編碼是連續(xù)的 32 位二進制碼組,其中前 16 位為用戶識別碼,能區(qū)別不同的電器設備,防止不同機種遙控碼互相干擾。該芯片的用戶識別碼固定為十六進制 01H;后 16 位為 8 位操作碼 (功能碼)及其反碼。 UPD6121G 最多額 128 種不同組合的編碼,如圖 3 所示。 13 遙控器在按鍵按下后,周期性地發(fā)出同一種 32 位二進制碼,周期約為 108ms。一組碼本身的持續(xù)時間隨它包含的二進制 “0” 和 “1” 的個數(shù)不同而不同,大約在 45 63ms 之間,圖 4 為發(fā)射波形圖。 (三)、紅外接收模塊 左圖為一常用的紅外接收模塊。其內(nèi)部含有高頻的濾波電路,專門用來濾除紅外線合成信號的載波信號( 38KH),并送出接收到的信號。當紅外線合成信號進入紅外接收模塊,在其輸出 端便可以得到原先發(fā)射器發(fā)出的數(shù)字編碼,只要經(jīng)過單片機解碼程序進行解碼,便可以得知按下了哪一個按鍵,而做出相應的控制處理,完成紅外遙控的動作。 (四)、紅外解碼程序設計 紅外解碼程序主要工作為等待紅外線信號出現(xiàn),并跳過引導信號,開始收集連續(xù) 32 位的表面數(shù)據(jù),存入內(nèi)存的連續(xù)空間。位信號解碼的原則是:以判斷各個位的波寬信號來決定高低信號。位解碼原理如下: 解碼為 0:低電平的寬度 0.56ms+高電平的寬度 0.56ms。 解碼為 1:低電平的寬度 1.68ms+高電平的寬度 0.56ms。 程序中必須設計一精確的 0.1ms 延時時間作為基礎時間,以計數(shù)實際的波形寬度,若讀值為 5 表示波形寬度為 0.5ms,若讀值為 16 表示波形寬度為 1.6ms,以此類推。高電平的寬度 1.12ms 為固定,因此可以直接判斷低電平的寬度的計數(shù)值 5 或時 16,來確定編碼為 0 或是 1。程序中可以減法指令 SUBB 來完成判斷,指令“ SUBB A, R2”中若 R2 為計數(shù)值, A 寄存器設為 8,就可如下: 當“ 8 R2”有產(chǎn)生借位,借位標志 C=1,表示編碼為 1。 當“ 8 R2”無產(chǎn)生借位,借位標志 C=0,表示編碼為 0。 將借位標志 C 經(jīng)過右移指令“ RRC A”轉(zhuǎn)入 A 寄 存器中,再經(jīng)由 R0 寄存器間接尋址存入內(nèi)存中。 詳細解碼程序請參看“紅外遙控爬蟲機器人 ASM 程序”中的“紅外解碼子程序”。 紅外接收模塊 14 五、控制程序 ; 紅外遙控爬蟲機器人 ASM 程序 ;- HOME EQU 14 ;伺服馬達回 到中點時間常數(shù) BACK EQU 3 ;伺服馬達反轉(zhuǎn)時間常數(shù) FOR EQU 25 ;伺服馬達正轉(zhuǎn)時間常數(shù) ; - ;遙控器按鍵 1 6 比較碼 CODE_K1 EQU 19H ;機器人前進比較碼 CODE_K2 EQU 18H ;機器人后退比較碼 CODE_K3 EQU 0AH ;機器人左轉(zhuǎn)比較碼 CODE_K4 EQU 09H ;機器人右轉(zhuǎn)比較碼 CODE_K5 EQU 0BH ;機器人回到中點比較碼 CODE_K6 EQU 14H ;機器人行走啟動進比較碼 ; - IRCOM EQU 30H ;紅外線信號解碼數(shù)據(jù)放置變量起始地址 COM EQU 32H ;比較第 3 字節(jié)變量 ; - IRIN EQU P3.2 ;紅外線 IR 信號輸入位引腳定義 WLED EQU P3.7 ;發(fā)光二極管引腳定義 SPK EQU P3.4 ;壓電喇叭引腳定義 DJZ EQU P1.0 ;中間伺服馬達引腳定義 DJL EQU P1.1 ;左側伺服馬達引腳定義 DJR EQU P1.2 ;右側伺服馬達引腳定義 ; - ORG 0H ;程序代碼由地址 0 開始執(zhí)行 JMP BEGIN ;進入主程序 ; - BEGIN: CLR DJZ ;關閉中間伺服馬達 CLR DJL ;關閉左側伺服馬達 CLR DJR ;關閉右側伺服馬達 CLR SPK ;關閉壓電喇叭 CALL LED_BL ;發(fā)光二極管閃爍,表示程序開始執(zhí)行 CALL BZ ;壓電喇叭發(fā)出嘀的一聲 CALL GO_HOME ;全部伺服馬達回到中點 CALL LED_BL ;發(fā)光二極管閃爍,表示機器人準備完畢 CALL BZ ;壓電喇叭發(fā)出嘀的一聲 CALL QD ;運行行走啟動子程序,擺好行走姿態(tài) SETB IRIN ;紅外線信號 IR 輸入位設為高電平,準備接收紅外信號 LOOP: MOV R0,#IRCOM ;設置 IR 解碼起始地址 CALL IR_IN ;進行 IR 解碼 CALL OP ;進行解碼比較,并控制機器人動作 JMP LOOP ;繼續(xù)循環(huán)執(zhí)行 ; - DELAY: MOV R6,#50 ; 10ms 延時子程序 D1: MOV R7,#99 DJNZ R7,$ DJNZ R6,D1 DJNZ R5,DELAY RET ; - LED_BL: MOV R1,#4 ;發(fā)光二極管閃爍子程序 LE1: CPL WLED ;發(fā)光二極管反向 MOV R5,#10 CALL DELAY ;進行 100ms 延時 DJNZ R1,LE1 RET ; - BZ: MOV R6,#0 ;壓電喇叭發(fā)聲子程序 15 B1: SETB SPK ;壓電喇叭得電,開始發(fā)聲 DJNZ R6,B1 MOV R5,#5 CALL DELAY ;進行 50ms 延時 CLR SPK ;關閉壓電喇叭 RET ; - DEL: ; 0.1ms 延時子程序 MOV R5,#1 DELAY1: MOV R6,#2 E1: MOV R7,#22 E2: DJNZ R7,E2 DJNZ R6,E1 DJNZ R5,DELAY1 RET ; - IR_IN: ;紅外解碼子程序 I1: JNB IRIN,I2 ;等待紅外 IR 信號出現(xiàn) JMP I1 I2: MOV R4,#20 ;發(fā)現(xiàn)紅外 IR 信號,延時一下 I20: CALL DEL DJNZ R4,I20 JB IRIN,I1 ;確認紅外 IR 信號出現(xiàn) I21: JB IRIN,I3 ;等待 IR 變?yōu)楦唠娖?CALL DEL JMP I21 I3: MOV R3,#0 ; 8 位數(shù)清 0 LL: JNB IRIN,I4 ;等待 IR 變?yōu)榈碗娖?CALL DEL JMP LL I4: JB IRIN,I5 ;等待 IR 變?yōu)楦唠娖?CALL DEL JMP I4 I5: MOV R2,#0 ; 0.1ms 計數(shù) L1: CALL DEL JB IRIN,N1 ;等待 IR 變?yōu)楦唠娖?MOV A,#8 ;設置減數(shù)為 8 CLR C ;清除借位標志 C SUBB A,R2 ;判斷高低位 MOV A,R0 ;取出內(nèi)存中原先數(shù)據(jù) RRC A ;右移指令,將借位標志 C 右移進入 A 寄存器中 MOV R0, A ;將數(shù)據(jù)寫入內(nèi)存中 INC R3 ;處理完成一位, R3+1( R3 計數(shù)) CJNE R3,#8, LL ;循環(huán)處理 8 位 MOV R3,#0 ; R3 清 0 INC R0 ;處理完成 1 個字節(jié), R0+1( R0 計數(shù)) CJNE R0,#34H, LL ;循環(huán)收集到 4 個字節(jié) JMP OK ;至完成返回 N1: INC R2 ; R2+1( R2 計數(shù)) CJNE R2,#30, L1 ; 0.1ms 計數(shù)過長,時間到自動離開 OK: RET ;完成返回 ; - OP: 執(zhí)行解碼動作子程序 MOV A,COM CJNE A,#CODE_K5, A1 ;對解碼進行比較,看是否是 回到中點指令,否就轉(zhuǎn)至下一項比較 CALL LED_BL ;發(fā)光二極管閃爍 CALL BZ ;壓電喇叭發(fā)出嘀的一聲 CALL GO_HOME ;執(zhí)行回到中點 CALL LED_BL ;發(fā)光二極管閃爍 CALL BZ ;壓電喇叭發(fā)出嘀的一聲 RET A1: 16 MOV A,COM CJNE A,#CODE_K1, A2 ;對解碼進行比較,看是否是前進指令,否就轉(zhuǎn)至下一項比較 CALL BZ ;壓電喇叭發(fā)出嘀的一聲 CALL GO_FOR ;執(zhí)行前進 RET A2: MOV A,COM CJNE A,#CODE_K2, A3 ;對解碼進行比較,看是否是后退指令,否就轉(zhuǎn)至下一項比較 CALL BZ ;壓電喇叭發(fā)出嘀的一聲 CALL GO_BACK ;執(zhí)行后退 RET A3: ;L MOV A,COM CJNE A,#CODE_K3, A4 ;對解碼進行比較,看是否是左轉(zhuǎn)指令,否就轉(zhuǎn)至下一項比較 CALL BZ ;壓電喇叭發(fā)出嘀的一聲 CALL GO_L ;執(zhí)行左轉(zhuǎn) RET A4: ;R MOV A,COM CJNE A,#CODE_K4, A5 ;對解碼進行比較,看是否是右轉(zhuǎn)指令,否就轉(zhuǎn)至下一項比較 CALL BZ ;壓電喇叭發(fā)出嘀的一聲 CALL GO_R ;執(zhí)行右轉(zhuǎn) RET A5: MOV A,COM CJNE A,#CODE_K6, A6 ;對解碼進行比較,看是否是行走啟動指令,否就轉(zhuǎn)至下一項 CALL LED_BL ; 發(fā)光二極管閃爍 CALL BZ ;壓電喇叭發(fā)出嘀的一聲 CALL QD ;執(zhí)行行走啟動 CALL LED_BL ;發(fā)光二極管閃爍 CALL BZ ;壓電喇叭發(fā)出嘀的一聲 RET A6: RET ;返回 ; - HOME1: SETB DJZ

溫馨提示

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

最新文檔

評論

0/150

提交評論