<meter id="pryje"><nav id="pryje"><delect id="pryje"></delect></nav></meter>
          <label id="pryje"></label>

          新聞中心

          EEPW首頁 > 醫(yī)療電子 > 設計應用 > 基于AT89C51單片機設計的簡易智能機器人

          基于AT89C51單片機設計的簡易智能機器人

          ——
          作者:張宏,王德合 時間:2007-01-26 來源:《電子工程師》 收藏


          引言

          本文引用地址:http://www.ex-cimer.com/article/21457.htm

          隨著微電子技術的不斷發(fā)展,微處理器芯片的集成程度越來越高,單片機已可以在一塊芯片上同時集成cpu、存儲器、定時器/計數(shù)器、并行和串行接口、看門狗、前置放大器、a/d轉換器、d/a轉換器等多種電路,這就很容易將計算機技術與測量控制技術結合,組成智能化測量控制系統(tǒng)。這種技術促使機器人技術也有了突飛猛進的發(fā)展,目前人們已經(jīng)完全可以設計并制造出具有某些特殊功能的簡易智能機器人。

          1 設計思想與總體方案

          1.1 簡易智能機器人的設計思想

          本機器人能在任意區(qū)域內(nèi)沿引導線行走,自動繞障,在有光源引導的條件下能沿光源行走。同時,能檢測埋在地下的金屬片,發(fā)出聲光指示信息,并能實時存儲、顯示檢測到的斷點數(shù)目以及各斷點至起跑線間的距離,最后能停在指定地點,顯示出整個運行過程的時間。

          1.2 總體設計方案和框圖

          本設計以at89c5l單片機作為檢測和控制核心。采用紅外光電傳感器檢測路面黑線及障礙物,使用金屬傳感器檢測路面下金屬鐵片,應用光電碼盤測距,用光敏電阻檢測、判斷車庫位置,利用pwm(脈寬調(diào)制)技術動態(tài)控制電動機的轉動方向和轉速。通過軟件編程實現(xiàn)機器人行進、繞障、停止的精確控制以及檢測數(shù)據(jù)的存儲、顯示。通過對電路的優(yōu)化組合,可以最大限度地利用51單片機的全部資源。

          p0口用于數(shù)碼管顯示,p1口用于電動機的pwm驅(qū)動控制,p2,p3口用于傳感器的數(shù)據(jù)采集與中斷控制。這樣做的優(yōu)點是:充分利用了單片機的內(nèi)部資源,降低了總體設計的成本。該方案總體方案見圖1。

          2 系統(tǒng)的硬件組成及設計原理

          此系統(tǒng)的硬件部分由單片機單元、傳感器單元、電源單元、聲光報警單元、鍵盤輸入單元、電機控制單元和顯示單元組成,如圖2所示。

          2.1 單片機單元

          本系統(tǒng)采用at89c51單片機作為中央處理器。其主要任務是掃描鍵盤輸入的信號啟動機器人,在機器人行走過程中不斷讀取傳感器采集到的數(shù)據(jù),將得到的數(shù)據(jù)進行處理后,根據(jù)不同的情況產(chǎn)生占空比不同的pwm脈沖來控制電機,同時將相關數(shù)據(jù)送顯示單元動態(tài)顯示,產(chǎn)生聲光報警信號。其中,p0用于數(shù)碼管動態(tài)顯示,p1.0一p1.5控制2個電機,p1.6、p1.7為獨立式鍵盤接口,p2接傳感器,p3.2接計里程的光電碼盤,p3.7接聲光報警單元,p3.4、p3.5、p3.6接用于顯示斷點數(shù)目的發(fā)光二極管。

          2.2 電機控制單元

          本機器人采用了雙電機雙輪驅(qū)動的小車作為其底座。2個電機分別獨立控制其左右兩邊的車輪,靠兩邊電機的轉速的不同來實現(xiàn)轉彎功能,還可讓其原地轉彎,便于控制。而傳統(tǒng)的小車是靠動力電機和轉向電機驅(qū)動,轉彎角度難以控制,不便于使用。

          電機控制電路采用大功率對管bdl39、bdl40組成的h型驅(qū)動電路,通過單片機產(chǎn)生占空比不同的pwm脈沖,精確調(diào)整電機的轉速。這種電路由于工作在晶體管飽和或截止狀態(tài),避免了在線性放大區(qū)工作時晶體管的管耗,可以最大限度地提高效率;h型電路保證了可以簡單地實現(xiàn)電機轉速和方向的控制;電子開關的速度和穩(wěn)定性也完全可滿足需要,整套驅(qū)動電路是一種被廣泛采用的電機驅(qū)動技術。電路見圖3。

          2.3 傳感器單元

          整個機器人共采用了9個傳感器,分布在整個機器人的不同部位,相互配合起不同的作用,見圖4。

          圖4中各傳感器說明如下:

          傳感器1置于機器人正前方朝下的金屬探測傳感器,用于探測金屬。

          傳感器2置于機器人正前方朝前的超聲波傳感器,用于檢測障礙物。超聲波來源于555產(chǎn)生40 khz的方波信號,經(jīng)超聲波發(fā)射頭發(fā)出。發(fā)射頭不斷發(fā)出信號,當遇到障礙物時,信號會被反射回來,從而接收頭會接受到信號,將信號送入單片機進行相應的判斷和處理。

          傳感器3置于機器人正前方朝下的紅外光電傳感器,用于檢測停止線。紅外發(fā)射管發(fā)出信號,經(jīng)不同的反射介質(zhì)反射,根據(jù)紅外接收管是否接收到信號做出相應的判斷。

          傳感器4、5置于機器人底座下方朝下的紅外光電傳感器,用于檢測地面的引導線,原理同傳感器3。

          傳感器6、7置于機器人正前方朝前的光敏電阻傳感器,用于尋找光源。當機器人前方有光源照射時,光敏電阻的大小將會改變,將2個傳感器的改變量進行比較處理后送入單片機,單片機將會產(chǎn)生相應的調(diào)整信號,使機器人朝光強的方向行走。

          傳感器8置于機器人后方兩側朝外的超聲波傳感器,用于在機器人遇到障礙物時的轉彎處理,判斷機器人是否完全繞開障礙物,原理同傳感器2。

          傳感器9置于機器人正后方的光電碼盤,用于計里程,借助于鼠標原理,選用直徑為2.6 cm的塑料小輪自制光電碼盤,經(jīng)過打磨使其周長為8 cm,再在該小輪上打等距離的8個孔,如圖5所示。最小測距精度可達到1 cm,足以滿足要求,兩側裝上光電傳感器,將其安裝在車尾,使之與車的行駛同步。就實際情況自制出來的各個孔之間的距離無法精確相等,但經(jīng)過具體測量該光電碼盤,能保證行駛50 cm產(chǎn)生50個脈沖,于是采用其作為計算距離的基準單位。在直道區(qū),可由該電路產(chǎn)生的脈沖數(shù),計算出鐵片中心線至起跑線間的距離。

          此外,為了清楚直觀地觀察到各傳感器的工作狀態(tài),電路中還專門為每個傳感器設計了工作指示燈,實時顯示每個傳感器的工作狀態(tài)。

          2.4 鍵盤輸入單元

          鍵盤輸入單元采用獨立式鍵盤,由2個按鍵組成,其中一個為啟動鍵,另一個為顯示切換鍵,當機器人行走完全程后,按下該鍵,將顯示整個行走過程的時間。

          2.5 顯示單元

          顯示單元由2個7段數(shù)碼管組成,為了減少整個系統(tǒng)的功耗,采用了由單片機軟件譯碼,動態(tài)顯示,實時顯示每個斷點到起點的距離以及整個運行過程的時間。

          2.6 聲光報警單元

          用555作為振蕩源,用單片機觸發(fā)振蕩源驅(qū)動電磁訊響器作為聲音指示器和1只發(fā)光二極管作為光指示裝置,從而組成聲光報警單元。

          2.7 電源單元

          本系統(tǒng)采用2套電源分別對電機和控制電路進行單獨供電。系統(tǒng)控制電路采用經(jīng)7805穩(wěn)壓后的輸出供電(5v),電機則采用4節(jié)aa電池來供電。

          3 系統(tǒng)的軟件設計

          該系統(tǒng)配套的軟件程序采用模塊結構,由c語言編寫完成。主要由初始化程序、偏道調(diào)整程序、偏離光源調(diào)整程序、聲光指示子程序、讀傳感器狀態(tài)、顯示程序、定時器0的中斷服務程序、定時器1的中斷服務程序、外部中斷0的服務程序、停車處理等模塊組成。系統(tǒng)的主體流程如圖6所示。

          4 結束語

          該機器人在認為設定的跑道上經(jīng)過多次實驗,達到了預期的效果,但是其智能化程度還遠遠不夠。隨著人工智能和神經(jīng)網(wǎng)絡技術的不斷研究和深入,智能機器人的發(fā)展前景將會越來越廣闊。



          關鍵詞:

          評論


          相關推薦

          技術專區(qū)

          關閉
          看屁屁www成人影院,亚洲人妻成人图片,亚洲精品成人午夜在线,日韩在线 欧美成人 (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })();