周杰
摘要: 采用 STC89c52作為電腦鼠的控制核心,紅外發(fā)射LED和紅外一體化接收頭HS0038構(gòu)成傳感器模塊完成迷宮路徑掃描,單片機(jī)控制左右334線AB相伺服電機(jī)實(shí)現(xiàn)電腦鼠,前進(jìn)一格,后退一格,左轉(zhuǎn)90°,右轉(zhuǎn)90°的動(dòng)作,根據(jù)設(shè)置的迷宮出口坐標(biāo),能夠完成對(duì)整個(gè)迷宮的搜索,并找到最佳行走路徑。
關(guān)鍵詞:STC89c52;傳感器;電機(jī);迷宮
中圖分類號(hào):TP311 文獻(xiàn)標(biāo)識(shí)碼:A 文章編號(hào):1009-3044(2018)02-0138-03
1 概述
電腦鼠[1-2]是一種機(jī)電一體化裝置,是由單片機(jī)、傳感器、機(jī)電運(yùn)動(dòng)部件組成的一種能在迷宮行走的小型機(jī)器人。本文設(shè)計(jì)和完成了一種基于STC89c52簡(jiǎn)易電腦鼠,電腦鼠可以在不同大小的迷宮[3][4]中自動(dòng)記憶和選擇路徑,完成前進(jìn)一格,后退一格,左轉(zhuǎn)90°,右轉(zhuǎn)90°的動(dòng)作,并可以采用相應(yīng)的算法,快速完成對(duì)整個(gè)迷宮路徑的搜索,進(jìn)而找到最佳的走出迷宮的路線。
2 硬件設(shè)計(jì)
電腦鼠是指由車體、輪子、和驅(qū)動(dòng)軟件構(gòu)成。車體是由STC89c52(相當(dāng)于人體的大腦部分)、傳感器模塊(完成迷宮障礙物的掃描)、電機(jī)模塊(完成相應(yīng)的機(jī)械動(dòng)作)和定時(shí)計(jì)數(shù)器模塊(完成電腦鼠的動(dòng)作修正),組成的一個(gè)綜合的系統(tǒng)。
電腦鼠的基本構(gòu)成如圖1所示:
2.1 電源模塊
STC89c52單片機(jī)的工作電壓為3.3v-5.5v,故可以采用電腦鼠采用單節(jié)鋰離子電池供電。
TP4054是一款完整的單節(jié)鋰離子電池充電器,TP4054可以適用于USB電源,如圖所示當(dāng)充電完成,輸入電壓USB電源被拿掉時(shí),可以自動(dòng)進(jìn)入低電流狀態(tài)。CHNG漏極開(kāi)路狀態(tài)輸出,BAT充電電流輸出。
電腦鼠的電源模塊電路如圖2所示:
2.2 電機(jī)模塊
STC89c52的I/O口電流輸出能力有限,需要將單片機(jī)I/O口弱電流放大到足以驅(qū)動(dòng)電機(jī)的電流。通過(guò)L9110電機(jī)驅(qū)動(dòng)芯片,驅(qū)動(dòng)左右兩個(gè)334線AB相伺服電機(jī),通過(guò)L9110驅(qū)動(dòng)芯片上IA、IB輸入的邏輯值的組合,可以控制AB相伺服電機(jī)停止,正轉(zhuǎn)和反轉(zhuǎn)。
P2.0、P2.1、P2.2、P2.3口是單片機(jī)的輸出口,Left motor1、Left motor2、Right motor1、Right motor2是左右兩個(gè)電機(jī)驅(qū)動(dòng)電路控制引腳,Left motor和Right motor 3腳是電機(jī)光電碼盤A相脈沖輸出,連接到單片機(jī)的定時(shí)/計(jì)數(shù)器外部計(jì)數(shù)引腳,通過(guò)脈沖計(jì)數(shù),可以完成電腦鼠左轉(zhuǎn)90°,右轉(zhuǎn)90°等操作。
電腦鼠電機(jī)模塊電路如圖3所示:
2.3 傳感器組設(shè)計(jì)
電腦鼠設(shè)計(jì)有5組傳感器。這5組傳感器分別安裝于電腦鼠的右前、右、左、左前、前、5個(gè)不同的方向。采用74HC138譯碼器將單片機(jī)的3位二進(jìn)制編碼譯碼為8位控制線,采用分時(shí)檢測(cè)傳感器,使單片機(jī)能夠控制5組傳感器的工作。
傳感器電路由紅外發(fā)射LED和紅外一體化接收頭HS0038構(gòu)成,紅外LED由載波發(fā)生器產(chǎn)生的CLOCK信號(hào)驅(qū)動(dòng)產(chǎn)生38KHz紅外調(diào)制光。RP1為可調(diào)電阻,通過(guò)調(diào)節(jié)RP1來(lái)調(diào)節(jié)紅外LED發(fā)光強(qiáng)度,從而調(diào)整傳感器組檢測(cè)迷宮墻障礙物的距離。Sensor1用于控制該組傳感器是否工作,連接到3-8譯碼選擇電路。紅外調(diào)制光經(jīng)障礙物反射由HS0038紅外一體化接收頭接收,進(jìn)行放大濾波、解調(diào)等處理后輸出,單片機(jī)通過(guò)識(shí)別P2.5口的電平高低來(lái)判斷傳感器前面是否有障礙物。
單片機(jī)傳感器模塊電路如圖4所示:
3 軟件設(shè)計(jì)
3.1 構(gòu)建迷宮
按照IEEE要求,迷宮大小為16*16的單元格組成,單元格格大小為18*18cm,電腦鼠PCB底盤大小為迷宮格一半8*8cm左右,現(xiàn)在模擬現(xiàn)場(chǎng)環(huán)境,將迷宮設(shè)置為8*8,單元格如圖5所示,起點(diǎn)坐標(biāo)為(1,1),終點(diǎn)坐標(biāo)為(8,8)。
3.2 電腦鼠軟件設(shè)計(jì)
電腦鼠是一個(gè)小型智能行走裝置,保證其可靠性取決于硬件和軟件設(shè)計(jì),在電腦鼠的軟件設(shè)計(jì)可以分為兩個(gè)部分:走迷宮算法部分和底層驅(qū)動(dòng)部分。
3.2.1 搜索迷宮算法程序
假設(shè)我們將電腦鼠放在起點(diǎn)坐標(biāo)(1,1),按下啟動(dòng)鍵,然后根據(jù)設(shè)定的終點(diǎn)坐標(biāo)(8,8),通過(guò)到達(dá)終點(diǎn)服務(wù)程序找到終點(diǎn),如果到達(dá)終點(diǎn),蜂鳴器發(fā)出尖銳的報(bào)警聲,表明找到了終點(diǎn)坐標(biāo)。搜索迷宮算法的主流程圖如圖6所示。
在主程序運(yùn)行過(guò)程中,要調(diào)用中斷服務(wù)程序,即到達(dá)終點(diǎn)中斷服務(wù)程序如圖7所示,由于電腦鼠自身沒(méi)有思維能力,只能根據(jù)程序規(guī)則運(yùn)行,電腦鼠到達(dá)終點(diǎn)服務(wù)程序,就是根據(jù)設(shè)定的終點(diǎn)坐標(biāo),采用一定的規(guī)則進(jìn)行迷宮的搜索。常用的搜索法則有:
1) 右手規(guī)則:當(dāng)電腦鼠走到迷宮的某一單元格時(shí),電腦鼠的傳感器開(kāi)始工作,電腦鼠掃描迷宮格擋板信息,優(yōu)先檢測(cè)右方迷宮格是否可行,其次前方,最后才是左方。
2) 左手規(guī)則:左手法則與右手法則類似,當(dāng)電腦鼠走到迷宮的某一單元格時(shí),電腦鼠的傳感器開(kāi)始工作,電腦鼠掃描迷宮格擋板信息,優(yōu)先檢測(cè)左方方迷宮格是否可行,其次前方,最后才是右方。
3) 中右規(guī)則:優(yōu)先檢測(cè)前方迷宮格是否可行,其次右方,最后才是左方。
4) 中左規(guī)則:優(yōu)先檢測(cè)前方迷宮格是否可行,其次左方,最后才是右方。
5) 向心法則[7]:是右手法則,左手法則,中右規(guī)則,中左規(guī)則的結(jié)合,盡可能的朝著距離終點(diǎn)最近的方向前進(jìn)。
本文采用向心手法則進(jìn)行迷宮搜索。如圖7所示:電腦鼠根據(jù)向心法則[7]掃描坐標(biāo)進(jìn)行前進(jìn),當(dāng)?shù)竭_(dá)下一個(gè)迷宮格時(shí),用當(dāng)前迷宮格的坐標(biāo)與終點(diǎn)坐標(biāo)進(jìn)行比較,如果是終點(diǎn),就發(fā)出報(bào)警聲,如果不是就繼續(xù)查找,判斷當(dāng)前坐標(biāo)是否走過(guò),如果走過(guò)則返回上一個(gè)分叉路口,如果沒(méi)有走過(guò)則采用向心法則搜索路徑,直到找到終點(diǎn)坐標(biāo)為止[1][6]記錄下行走路徑,就找到了,迷宮的最短路徑。
3.2.2 底層驅(qū)動(dòng)程序
底層驅(qū)動(dòng)程序主要完成,電腦鼠的基本操作:左轉(zhuǎn)90°,右轉(zhuǎn)90°。當(dāng)電腦鼠需要轉(zhuǎn)彎時(shí),停在當(dāng)前坐標(biāo),做原地90°旋轉(zhuǎn),然后前進(jìn)。如果是左轉(zhuǎn),Left Motor反轉(zhuǎn),Right Motor正轉(zhuǎn)。如果是右轉(zhuǎn),Left Motor正轉(zhuǎn),Right Motor反轉(zhuǎn)。
對(duì)于擋板信息的獲取,調(diào)用5路傳感器,掃描單元格前左右信息,如果有擋板,則該方向返回1,如果沒(méi)有擋板返回0。
如圖9所示,當(dāng)電腦鼠到達(dá)某一點(diǎn)時(shí),應(yīng)該處于該單元格的中心,它距離擋板的距離允許在S±2cm,如果掃描到的距離大于該范圍,則認(rèn)為有擋板返回1。當(dāng)電腦鼠在行進(jìn)過(guò)程中還可以通過(guò)S±2cm對(duì)電腦鼠進(jìn)行姿態(tài)糾正。
4 結(jié)束語(yǔ)
本文給出了基于STC89c52電腦鼠的硬件設(shè)計(jì)方案以及軟件設(shè)計(jì)思路,電源模塊、電機(jī)模塊、傳感器模塊、硬件穩(wěn)定設(shè)計(jì)簡(jiǎn)單,且價(jià)格低廉。由于采用了模塊化設(shè)計(jì)思想,具有思路可移植性,可擴(kuò)展性強(qiáng)等特點(diǎn)。
參考文獻(xiàn):
[1] 齊英鑫.基于80C51 單片機(jī)的智能電動(dòng)小車[J].科技信息,2008(31):36-37.
[2] 周立功.IEEE電腦鼠開(kāi)發(fā)指南[M].廣州:廣州致遠(yuǎn)電子有限公司,2008.
[3] 方金亮.基于 ARM 的IEEE 標(biāo)準(zhǔn)電腦鼠研究與實(shí)現(xiàn)[J].機(jī)械制造與自動(dòng)化,2008(5):99-101.
[4] 周立功.Cortex-M3 開(kāi)發(fā)指南[ M] .廣州:廣州致遠(yuǎn)電子有限公司,2008.
[5] 方建軍, 何廣平.智能機(jī)器人[ M] .北京:化學(xué)工業(yè)出版社,2004.
[6] 鄧美清. 基于 STC12C56 單片機(jī)的電腦鼠設(shè)計(jì)與實(shí)現(xiàn)[J].科協(xié)論壇, 2011 (8) :78-78.
[7] 賀少波.基于向心法則的電腦鼠走迷宮算法設(shè)計(jì)與優(yōu)化[J].計(jì)算機(jī)系統(tǒng)應(yīng)用計(jì)算機(jī)系統(tǒng)應(yīng)用 , 2012 , 21 (9) :79-82.endprint