摘要:采用Freescale公司的MC9SDG128單片機進行控制,使用ROHM公司生產的發(fā)送接收一體化反射型光電傳感器RPR220,設計了一種新型迷宮機器人。該迷宮機器人能夠在程序中嚴格控制光電傳感器的開關,同時用軟件消除外界干擾,取得了很好的探測效果。
關鍵詞:迷宮機器人;光電傳感器;RPR220;MC9SDG128;干擾
引言
迷宮機器人走迷宮競賽是一項綜合性十分強的競賽,它涉及的學科包括了計算機學、機械學、電工學、嵌入式開發(fā)知識以及算法的實現等。迷宮機器人是一種人工智能的機器人,又稱為電腦鼠(Micromouse)。它擁有靈活的“雙腿”,銳利的“眼睛”,還有聰明的“大腦”用于控制“眼睛”和“雙腿”協(xié)調工作,最終走出IEEE標準迷宮。迷宮由256個方塊(單元)組成,每個方塊的大小為18 cm見方,排成16行×16列。
迷宮機器人在迷宮中要能按照一定規(guī)則完成行走,所以機器人必須具備以下幾種能力:
◆穩(wěn)定且快速的行走能力;
◆正確判斷能力;
◆記憶路徑的能力。
很明顯,這些能力必須建立在迷宮墻壁能夠被準確探知的基礎上,這就要求迷宮機器人要有很強的“觀察力”,即具有一雙“慧眼”。現實中,能夠進行避障的傳感器有很多,如CCD攝像頭、超聲波傳感器、光電傳感器等。從設計成本和使用方面綜合考慮,本設計采用紅外式光電傳感器。紅外傳感器的功能有兩個:一是判斷迷宮墻壁的有無,確定迷宮機器人的行進方向;二是根據傳感器獲得的數值判斷迷宮機器人和墻壁之間的距離,從而對迷宮機器人的姿態(tài)進行調整,避免迷宮機器人和墻壁發(fā)生碰撞。
1 光電傳感器原理
紅外光電傳感器工作原理如圖1所示。發(fā)送器對準目標發(fā)射光束,發(fā)射的光束一般來源于半導體光源、發(fā)光二極管(LED)、激光二極管及紅外發(fā)射二極管。光束不間斷地發(fā)射,或者改變脈沖寬度。接收器由光電二極管、光電三極管、光電池組成。在接收器的前面裝有光學元件(如透鏡和光圈等);在接收器后面的是檢測電路,用于濾除無效信號,以及對有效信號進行利用。
隨著車體和墻壁的距離不同,接收管接收到的信號的強弱也不同。當車體距離墻壁較近時,大量發(fā)射的紅外光線經墻壁反射后被接收管接收,產生的電壓較高;反之,車體距離墻壁較遠時,反射的紅外光線在傳播過程中會損耗,被接收管接收到的信號較弱,產生的電壓也就較低。根據接收管產生電壓的強弱,可以判斷車體與墻壁之間的距離,為迷宮機器人避障提供數據。
2 光電傳感器的選用
光電傳感器的特點:不受電磁波的干擾,非噪聲源,可實現非接觸性測量;受環(huán)境的影響非常大,物體的顏色、方向、周圍的光線都可能導致測量誤差;由于發(fā)射光線是光而不是聲音,可以在相當短的時間內獲得較多的紅外線傳感器測量值;測距范圍較近,大致為40 cm以內。紅外傳感器發(fā)射管和接收管的類型很多,其工作光波長約為800~1100 nm。通常在小功率條件下的工作電壓為1.5~5 V左右,工作電流為3~10 mA左右。在本設計中選用了日本ROHM公司生產的發(fā)送接收一體化反射型光電傳感器RPR220。該光電管功率為80 mW,工作波長為800 nm,完全滿足迷宮機器人的使用要求。
3 光電傳感器應用電路
在本設計中,采用Freescale公司的16位單片機MC9S12DG128對光電傳感器進行控制。單片機的A/D模塊進行信號采集,獲知當前的墻壁信息和車體的位置信息。單片機采集到A/D數值后,通過RS232傳到PC機上。然后根據傳感器采得的數值為電機指定相應的動作信號,控制迷宮機器人在迷宮中的姿態(tài),并且實時記錄迷宮墻壁有無的信息,為建立迷宮地圖提供數據。
3.1 傳感器電路
傳感器電路是獲知迷宮信息的主要途徑,其電路設計的好壞直接影響著機器人的工作。一般來說,傳感器電路由控制電路、發(fā)射管、接收管和信號處理電路構成。陽光譜中含有紅外成分,所以在迷宮機器人中要想方設法將紅外光譜消除,才能保證迷宮機器人的正常運行。
本設計使用了5路傳感器,分置于迷宮機器人的正前、偏左45°、左側、偏右45°、右側。每一路的打開與關閉由處理器控制,如圖2所示。
本設計中的傳感器電路如圖3所示。CTR1為傳感器的開關控制口,CTR1置高時,發(fā)射管兩端沒有電壓差,所以傳感器不會對外發(fā)射紅外信號;CTR1置低時,發(fā)射管和傳感器均工作,對外發(fā)射紅外光譜信號。當發(fā)射的紅外光譜經迷宮墻壁發(fā)射反射回迷宮機器人時,接收管會產生感應電流。此時,RPR220的3號端口的電阻將該端的電動勢拉高。如果電流增大,那么3號端口輸出的地電動勢也會相應增大,從而實現對迷宮環(huán)境的信息探測。
3.2 傳感器電路的使用
從前面的分析可以知道,傳感器采集信號時存在著陽光干擾。在設計期間,我們也進行了相應的干擾實驗。結果表明,陽光的干擾十分強烈,完全可以使得紅外傳感器失去作用。因此,在傳感器電路的使用過程中必須考慮陽光對光電傳感器的干擾,可從硬件和軟件兩方面去消除陽光的影響。
在本設計中,采用了軟件消除誤差的方法。首先,CTR1置高,也就是傳感器發(fā)射管處于關閉狀態(tài)。這時使用處理器的A/D采集模塊對接收管的信號進行采集,作為基值AD1。然后,將CTR1置低,將發(fā)射管打開,再一次用處理器的A/D采集功能進行信號采集。這時采得的數據為AD2,是反射光譜和陽光紅外譜的混合信號,而真正的A/D值應為AD=AD2-AD1。軟件消除陽光紅外光誤差的流程如圖4所示。
本設計采用MC9S12DG128處理器的PB0~PB4控制5個傳感器的開斷。實驗表明,軟件消除陽光紅外光誤差的方法效果較好。
3.3 實驗結果
該實驗使用RS232通信接口,將處理器采集獲得的A/D數值實時傳到上位機,然后改變車體與墻壁之間的距離,記錄各個點的A/D數值,利用MATLAB繪制出A/D值與距離之間的關系圖。
實驗表明,該方法能夠有效地在迷宮中進行距離的探測,最大探測距離達到20 cm,在1 cm處傳感器飽和,而迷宮機器人的要求能夠探測的最大距離為18 cm,飽和距離不能大于2 cm。顯然,該電路完全滿足使用要求。實驗程序如下所示:
實驗結果如圖5所示,可見距離與A/D采樣值成反比。
4 結論
本文設計了一款新型迷宮機器人,其中光電傳感器的設計部分采用RPR220實現。實驗表明,本設計的探測距離完全滿足迷宮機器人的使用要求。其創(chuàng)新點是使用軟件的方法進行干擾消除,有效地避免了陽光紅外信號的干擾,提高了迷宮機器人走迷宮的成功率,機器人的可靠性也得到了大幅的提升。