|
基于單片機的超聲波避障小車設計 本文完成了基于單片機STC89C52的超聲波避障小車的設計,程序使用KEIL開發工具編寫,硬件部分的核心元件有超聲波傳感器和電機驅動模塊。當小車向前行駛時,超聲波傳感器發送脈沖檢測小車與障礙物間的距離。當單片機偵測到前方障礙物進入到危險距離時,即低于設定的安全距離,報警裝置發出報警信號,同時根據預先設置的規則及障礙物具體位置信息輸出PWM波控制電機轉動、調速,控制小車的轉彎、后退,完成自動避障。 隨著社會的不斷發展,科技的進步和人力成本的增加,創新型、科技型甚至傳統型的企業都開始把目光放在智能小車、智能機器人等一切智能裝備的發展,京東研發了智慧物流基地,智能機器人分揀快遞,智能小車運送快遞到指定位置;蘇寧研發無人重卡,用以支撐物流配送;亞馬遜研發智能倉儲;阿里建立智慧一號倉庫等,智能小車與智能機器人將成為自動化物流最重要的一員,將完成很多工作。企業對自動化技術的要求也越來越高,智能避障是智能小車自主工作的第一步,因此,研究智能小車避障技術對于完善智能小車的功能是至關重要的。 自動避障小車其技術內容涵蓋了計算機、機電、自動化控制和傳感器技術等多個學科的知識領域,設計自動避障小車對于自動化專業本科畢業生來說具有一定的實踐價值,有利于學生把學到的知識運用到實踐中去。本設計結合前人的研究成果,利用單片機技術,設計智能避障小車模型,最終完成小車的自動避障。 1 避障小車總體設計 本設計小車的核心裝置是STC89C52單片機,小車的行駛情況由單片機控制輸出信號,經過驅動模塊輸出PWM波控制電機轉動、調速。超聲波智能避障小車設計的功能核心在于智能小車避障功能的實現,設計的關鍵點是要解決單片機與超聲波模塊的通信問題,超聲波模塊主要負責測量周邊的環境數據,單片機則是負責將超聲波模塊反饋的信息進行處理判斷,通過電機驅動模塊控制小車的轉彎、后退等避障功能的完成。 圖1為避障小車系統設計框圖 本系統主要由STC89C52單片機、超聲波測距模塊、數碼管驅動模塊、按鍵模塊、電源模塊、L298N電機驅動模塊、數碼管顯示模塊和聲光報警模塊構成。 超聲波智能避障小車基本功能為小車能前進與自主避障。電機L298N驅動模塊在這方面起至關重要的作用。正是因為有了它,可以更方便的驅動電機。直流電機帶動輪子,實現了雙驅的行駛。在小車的后面,裝上萬向輪可以更好配合雙驅行駛。 2 避障小車硬件設計 本設計使用51系列的STC89C52單片機。此類單片機主要是在8051內核的基礎上進行優化升級的單片機,兼容了8051的全部功能,運行速度與8051相比,速度快,并且因為它帶有ADC, 4路的PWM,兩個串口,不存在兩個同樣的ID號,加密性強,抗干擾好。 STC89C52的工作電壓為3.3-5.5V,工作頻率不高于40MHZ。 圖2 單片機最小系統圖 STC89C52擁有32個通用IO口,不同的端口,結構和功能也不盡相同,大部分的端口不僅可以寫入也可以輸出,如圖2所示。 P0端口因為內部沒有上拉電阻,當P0作為總部拓展,可直接使用,無需添加外部部件;當被用作IO口使用時,需要加上外部上拉電阻。再者,該單片機具有EEPROM及看門狗功能, 512字節的RAM、 8K字節FLASH、全雙工串行口、 3個16位定時器/計數器。 STC89C52存在兩種中斷:定時器中斷和外部中斷。定時器中斷是當時間到達設定時間時,系統中斷。當外部輸入信號有下降沿時,會發生外部中斷;當外部電路為低電平電路時,后發生外部中斷,低電平電路還可以讓單片機從掉電模式中恢復過來。 與單片機RST引腳連接的那部分電路就為復位電路,由于給單片機RST引腳高電平持續2us就可以實現復位。復位電路是單片機RST經電容接VCC,經電阻接地,電容處可并聯按鍵按鈕。當用戶輕擊一下開關按鍵, VCC、電容和開關形成回路,導致短路給電容充電,單片機RST引腳得到高電平,因此達到手動復位的目的。 2.2 超聲波模塊 采用超聲波模塊HC-SR04,其由超聲波發射器、接收器和控制電路組成,最大射程為4m,最小射程為2cm,測距精度可達3mm。本模塊性能穩定,測度距離精確,模塊高精度,盲區小。通常用于機器人避障、物體測距、公共安防和停車場檢測等項目。 HC-SR04超聲波模塊如圖3所示,有四個引腳,包括觸發信號Trig,回響信號Echo,供電VCC和GND,測量周期60ms以上。當Trig接收到10us以上的脈沖時, HC-SR04內部8個40kHZ的電平并檢測回波。 Echo剛收到回波時置1(超出一定范圍收到的信號不夠HC-SR04置1定時器不計數),單片機定時器開始計算次數,直到Echo沒有收到信號,則置0,記了TH+TL次機器周期,一個機器周期需要12個振蕩周期,由此時間就可以計算出來,再用時間與聲速相乘就可以獲得距離S。 圖3 HC-SR04超聲波模塊 2.3 電機驅動模塊 本設計采用L298N電機驅動模塊,該模塊控制兩個直流電機完成小車避障行駛。 L298N電機驅動模塊不僅可以驅動兩路直流電機,還能夠驅動二相四線步進電機、四相五線,四相六線步進電機。如采用兩個電源供電,則單片機與L298N模塊共地,這樣L298N才能正常工作,給電機賦能。電機賦能之后,緊接著是通過控制四個信號IN1, IN2, IN3, IN4的輸入控制電機制動、變速等。若對直流電機進行PWM調速,需對使能端輸出PWM( Pulse Width Modulation)脈沖,即可實現調速。 L298N有四路輸入,四路輸出。輸入口接單片機的P0, IN1和IN3為高電平時左右電機正轉,根據ENA、 ENB口輸入的PWM信號的占空比調整小車的行駛快慢。當小車右側遇到障礙物的時候,控制小車左轉,左側電機停轉,右側電機在PWM信號調制下變速轉動。當小車左側遇到障礙物時,控制小車右轉,右側電機停轉,左側電機在PWM信號調制下變速轉動。當左右都有障礙物時,通過IN2和IN4端口輸入高電平, IN1, IN3端口輸入低電平控制小車后退,然后再執行下一步操作,如左轉或右轉。 圖4 L298N電機驅動模塊 3 避障小車軟件設計 超聲波測距程序流程如圖5所示。超聲波測距程序,程序代碼如下:定義了一個send_wave()函數,給HC-SR04的Trig高電平10uS時間,使超聲波模塊發出超聲波,接著給定時器清零,啟動定時器,收到返回的聲波后關閉定時器,通過定時器時間測算出距離,實現超聲波測距。 圖5 超聲波測距程序流程圖 圖6 主程序流程圖 4 結論 本設計在某些部分做了一定的工作,但設計還不夠完美,還需要繼續完善,如果設計轉化成實際應用的產品還需要不斷的改進和提高。 |