新聞中心

        EEPW首頁 > 嵌入式系統 > 設計應用 > 基于51單片機的紅外避障自動車的實現

        基于51單片機的紅外避障自動車的實現

        作者: 時間:2012-09-18 來源:網絡 收藏
        最近學校放假三天,于是有了大段的時間,參考了自己學過的單片機,模電等知識,決定開始第一個正式電子制作——《基于的實現》。最終獲得了成功,整車調試達到了理想效果,實現了紅外避障功能。視頻以上傳到優酷網,視頻地址http://v.youku.com/v_show/id_XMTYzNDc4MjA4.html歡迎大家觀看,探討,提出意見和建議。

        下面是一些基本資料:

        —————————————————————小車參數——————————————————————————

        障礙檢測方式:(探測模塊功耗7mA)

        車模幾何尺寸:149 x 102 x 59 (mm)

        車 模 輪 距:120 (mm)

        測 障 精 度:75 cm

        電 源 系 統:4 x 1.5 v 干電池/4 x 1.2 v 充電電池及其穩壓輸出

        電機:直流減速電機,1~12V工作電壓,傳動比:71.2:1

        主 控 芯 片:STC89C52MCU

        其 他 芯 片:LM7806 LM7805 STC11F01等

        —————————————————————小組資料——————————————————————————

        小組成員:

        王太杰:0804211班,擅長于硬件,焊接技術強,硬件知識充足,在本次制作中負責電機驅動部分建與調試。

        孫學軍:0904211班,擅長于編程,C語言功底扎實,思路開闊,在本次制作中負責程序驅動部分程序調試。

        李相華:0804211班,在本次制作中負責電源部分。

        小組優勢:

        硬件與程序搭配協調,每人負責各自模塊,只提供最終模塊接口,使隊友不必關注對方模塊內部結構,只需將接口連接完成即可,大大減少了每人負責的內容,提高了效率。

        —————————————————————制作流程與時間———————————————————————

        2010年4月3日(周六):

        小組成員對各模塊電路進行了選擇、優化,并進行了電路搭建、焊接,各模塊調試,確定模塊交互接口;主控程序思路成型,并編寫了測試程序,對軟硬件進行了測試。最后各模塊交互,整體調試,主程序確定及細節敲定。

        2010年4月4日(周日):

        模塊交互,整體調試,主控程序細節修改;經布局后各硬件模塊轉移至車體,最終焊接,整車成型。主控程序下載,調試,最終成功。

        —————————————技術資料———————————————————

        設計思路:

        為便節省電機數量和電路復雜程度,紅外避障小車(以下簡稱小車)采用前輪主動,后輪從動原理。前輪采用雙電機驅動,利用差速法實現車身轉向。

        檢測部分利用紅外發射管發射紅外光,遇障礙物后經反射被紅外接受管接收,產生電平轉換,利用單片機I/O口檢測紅外檢測模塊電平輸出,以此判斷前方障礙物有無,檢測到障礙物后,經單片機I/O口控制電機驅動電路,經由電機驅動電路輸出不同電壓,產生差速,實現轉向,最終以達到避障的目標。

        電源模塊:

        考慮到小車行駛的靈活性,我們拋棄了采用交流電的方案。在制作調試過程中,我們采取了4節1.5V5號南孚電池,經電池盒串聯后可獲得5.9~6.5V穩定電壓輸出,直接給電機驅動電路供電。但考慮到工作電壓為4.5V~5.5V,且其對工作電壓要求比較嚴格。對此,我們設想采取基于LM7805穩壓芯片的穩壓芯片輸出5V恒定電壓。電源電路圖見附件,由于在制作中手頭只有一片LM7806,于是我們在輸出端串聯了一個IN4007二極管,產生0.7V壓降,最終獲得5.2V~5.3V穩定電壓輸出,給單片機供電。以提高系統穩定性。

        在最終整車成型時我們采用了5V穩壓二極管穩定電壓,原因有二:一是降低了電源電路功耗,二是降低了制作成本。考慮到一次性干電池的不可利用性,我們在整車成型時采用了4節可充電電池經電池盒串聯的方案,以降低后續制作成本。考慮到電壓輸出端的單一性,我們考慮采用10V穩壓管另做一路電源輸出,為電機提供工作電壓,在一定程度上可提高電機功率,提高整車運行速度。

        電機驅動模塊:

        考慮到電機驅動集成芯片的價格比較高(18~30元/片),我們舍棄了采用電機驅動芯片驅動的方案,轉而尋求分立元件模擬電路驅動,經最終選擇我們采取了利用雙三極管控制開關電路,利用三極管的反應靈敏性,并將其一端接在MCU的I/O口上,可以通過控制I/O口輸出0、1脈沖數量比來控制三極管開關,以達到控制輸出電壓的目的。驅動電路圖見附件。

        主控程序:

        為了降低程序復雜性,我們使用了3個I/O口,一個I/O口用來接收紅外部分電平轉換,檢測障礙物,另外兩個I/O口端接電機驅動電路,用程序使其產生0、1脈沖數量比來控制驅動電路開關。最終實現速度差以實現轉向避障。

        主控程序如下:
        /* *****************************
        程序開發環境Keil uVision3
        語言:C
        編寫者:孫學軍
        時間:2010/04/04
        ***************************** */



        /* *****************************
        主程序及注釋如下:

        ***************************** */
        #includereg52.h> //添加函數庫
        #define uint unsigned int //宏定義
        #define uchar unsigned char //宏定義
        sbit s=P3^5;      //定義紅外避障檢測端口
        sbit m1=P3^4;     //定義電機M1電平輸出端口
        sbit m2=P3^6;     //定義電機M2電平輸出端口
        void delay_ms(uint z); //聲明延時函數


        main()         //主函數
        {
        uint i=0;       //初始值設定
        m1=1;
        m2=1;
        while(1)        //無限循環
        {
        if(s==0)      //S=0表示前方有障礙物 進行轉向
        {
        for(i=0;i5;i++)
        {
        m1=0;
        m2=1;
        delay_ms(15);    //狀態保持15ms
        m1=1;
        m2=1;
        delay_ms(5);    //狀態保持5ms
        }
        }
        if(s==1)     //S=1表示前方無障礙物 直線行駛
        {
        m1=1;
        m2=1;
        delay_ms(10);    //狀態保持10ms
        }
        }
        }



        void delay_ms(uint z) //延時函數 循環嵌套原理
        {
        uint x,y;
        for(x=z;x>0;x--)
        for(y=110;y>0;y--);
        }

        /* *****************************

        程序結束,經測試程序符合硬件,功能達到預期目標。

        ***************************** */


        ————————————————————功能擴展——————————————————————————

        1:本車人機交互性不強,車體速度無顯示、障礙物有無顯示不明顯,無轉向燈提示
        預期可以增加速度測量以及液晶或數碼管顯示模塊,顯示模塊可以附在車體本身,也可以單獨成模塊,利用無線傳輸將數據從車體發送到終端顯示。

        2:增加自動循跡功能

        3:增加自動剎車功能

        4:遙控功能

        ————————————————————完畢————————————————————————————

        歡迎探討,大家共同學習進步,歡迎高手指點!

        燃氣報警器相關文章:燃氣報警器原理


        評論


        相關推薦

        技術專區

        關閉
        主站蜘蛛池模板: 临猗县| 阿合奇县| 涿鹿县| 静宁县| 临猗县| 乐东| 盐山县| 克东县| 康定县| 敦化市| 昆山市| 隆德县| 阿合奇县| 宣化县| 广宁县| 什邡市| 德阳市| 五指山市| 北海市| 山阳县| 澄城县| 眉山市| 广丰县| 巍山| 丹寨县| 炉霍县| 临朐县| 宁德市| 即墨市| 河曲县| 剑川县| 新乡市| 涿鹿县| 保康县| 无棣县| 金塔县| 江阴市| 北碚区| 石屏县| 元江| 高尔夫|