在线看毛片网站电影-亚洲国产欧美日韩精品一区二区三区,国产欧美乱夫不卡无乱码,国产精品欧美久久久天天影视,精品一区二区三区视频在线观看,亚洲国产精品人成乱码天天看,日韩久久久一区,91精品国产91免费

<menu id="6qfwx"><li id="6qfwx"></li></menu>
    1. <menu id="6qfwx"><dl id="6qfwx"></dl></menu>

      <label id="6qfwx"><ol id="6qfwx"></ol></label><menu id="6qfwx"></menu><object id="6qfwx"><strike id="6qfwx"><noscript id="6qfwx"></noscript></strike></object>
        1. <center id="6qfwx"><dl id="6qfwx"></dl></center>

            新聞中心

            EEPW首頁 > 嵌入式系統(tǒng) > 設計應用 > 經典款嵌入式智能小車的設計技巧,提供硬件選型

            經典款嵌入式智能小車的設計技巧,提供硬件選型

            作者: 時間:2017-06-03 來源:網絡 收藏
            1. 前言

            傳統(tǒng),特別是嵌入式系統(tǒng),一般都是基于單片機或者ARM的嵌入式系統(tǒng),基本上都由軟件系統(tǒng)和硬件系統(tǒng)組成的,硬件系統(tǒng)方面,跟傳統(tǒng)的搭建硬件環(huán)境一樣,只能做相對裁剪和功能拓展,但是,本項目的課題是通過xilinx的開發(fā)板搭建嵌入式的硬件環(huán)境,從最小系統(tǒng)到IP核的添加,都是根據(jù)需要進行拓展的,實現(xiàn)一對一的拓展,不浪費資源,而且基于的嵌入式系統(tǒng)的最大有優(yōu)點是,既有PFGA的并行執(zhí)行效率,又有嵌入式軟件的邏輯過程分析控制。

            本文引用地址:http://www.biyoush.com/article/201706/346849.htm

            1. 總體方案設計

            圖1 系統(tǒng)硬件結構框圖

            使用的XC6SLX16 CSQ234 作為主控制器,傳感器使用攝像頭ov6620圖像采集模塊(兼測路徑),使用超聲波模塊(HCSR04)測距,由于兩者具有互補特性,所以能夠很好的控制小車的運行狀態(tài),采用模糊算法計算出電機所需要的轉速,和舵機的轉角,從而實現(xiàn)穩(wěn)步漸進。

            1. 1主控制器的選擇

            解決方案:采用可編程邏輯器件作為控制器。FPGA可以實現(xiàn)復雜的邏輯功能,規(guī)模大,密度高,體積小,穩(wěn)定性高,IO資源豐富,易于外圍功能擴展,隨著FPGA的成本逐步降低,而且基于FPGA的嵌入式系統(tǒng)的搭建也成為可行,既有傳統(tǒng)嵌入式的軟件靈活性,也有FPGA的并行快速執(zhí)行效率。

            綜上所述,我們選用的Nexys3 作為系統(tǒng)的主控制器。

            1. 2的選擇

            本系統(tǒng)中,主控制器。

            解決方案:由于直流電機的功耗大,決定采用7.2V,2000mAh的電池為供電源,采用LM25xx系列單片集成開關電源作為降壓芯片,可以提供大功率的輸出,轉換效率高,性能穩(wěn)定。

            1. 3電機驅動選擇

            解決方案:采用BTS7960B搭建,可以滿足大功率的輸出,分別驅動兩個電機。

            驅動模塊電路

            1. 攝像頭模塊的選擇

            方案:采用數(shù)字攝像頭ov6620,控制簡單,價格合適,信號穩(wěn)定。

            1. 系統(tǒng)硬件設計
            1. 1車體模型

            實物如下圖所示。


            圖2 車體實際模型

            攝像頭尋找黑線,指引小車循跡,超聲波測距,指引小車自控速度。

            1. 2電源

            其原理圖如圖三所示:

            7.2V的輸入,穩(wěn)定輸出5V

            1. 3Ov6620攝像頭傳感器模塊

            OV6620 時序分析

            OV6620的同步信號時序如下:場同步信號VSYN 為兩個正脈沖之間掃描一幀的定時,即

            完整的一幀圖像在兩個正脈沖之間;行同步信號HREF 掃描該幀圖像中各行像素的定時,

            即高電平時為掃描一行像素的有效時間;像素同步信號 PCLK為讀取有效像素值提供同步信

            號,高電平時輸出有效圖像數(shù)據(jù)。下圖為OV6620 VSYN、HREF、PCLK三個同步信號之

            間的時序關系:

            VYNSC是判斷是否一幅圖像開始,周期是 20ms, 其中高電平持續(xù)時間很短;HREF 是判

            斷是否一行圖像的開始,周期是 63us 左右,其中高電平持續(xù)時間為 40US,低電平持續(xù)

            時間 23US,那么我們對照時序圖可以計算一下 OV6620 的分辨率:20ms/63us=317,

            當然實際上沒有這么多,消隱和無效信號去掉之后只有 292行;有效的灰度數(shù)據(jù)是在行中

            斷之后的上升沿內,所以不要在行中斷后的 23US 后采集。計算一下一行 OV6620 有多

            少個點: 40us/110ns=363, 消隱和無效信號去掉之后只有 356 個點。足以證明

            OV6620的分辨率為 356*292。通過示波器觀察,PCLK 的周期只有 150ns,依照單片

            機的總線,根本無法捕捉到這個信號,此時PCLK 的波形已經變?yōu)榧獠ǎ耆珱]有意義捕捉

            這個信號,采集圖像時盡快地一個點一個點的取就行了。

            1. 4直流電機驅動

            系統(tǒng)中采用了BTS7960B搭建,可以滿足大功率的輸出,分別驅動兩個電機。

            BTS7960B 的芯片內部為一個半橋。INH引腳為高電平,使能BTS7960。IN引腳用于確定哪個MOSFET 導通。IN=1 且INH=1 時,高邊MOSFET 導通,OUT 引腳輸出高電平;IN=0 且INH=1 時,低邊MOSFET 導通,OUT 引腳輸出低電平。SR 引腳外接電阻的大小,可以調節(jié)MOS管導通和關斷的時間,具有防電磁干擾的功能。

            3.5下圖是由FPGA構建的最小嵌入式系統(tǒng),是根據(jù)xilinx官方的EDK要求搭建的。

            最小系統(tǒng)

            4系統(tǒng)軟件設計

            軟件設計主要分為三部分,第一部分是最小系統(tǒng)的搭建(軟件初始化),第二部分是外部硬件的驅動,第三部分是核心算法。

            1. 1最小系統(tǒng)的搭建(軟件初始化):

            利用EDK工具,搭建最小的嵌入式系統(tǒng)。

            1. 2外部硬件驅動:

            外部硬件驅動,選擇以IP核的形式添加到最小系統(tǒng)歷來,用硬件描述語言編寫驅動核心代碼,然后軟件通過寄存器驅動外部硬件。

            1. 3核心算法:

            這部分是整個系統(tǒng)的核心,它的結構框圖如下圖所示:

            圖10 軟件結構框圖

            5系統(tǒng)調試和測試

            調試過程:

            5.1硬件平臺的方案測試

            在EDK設計中,可以新建測試代碼,自動生成測試代碼,通過串口打印驗證結果。

            5.2 超聲波模塊的使用

            在增加IP核過程中,需要根據(jù)超聲波的時序要求,用硬件描述語言描述驅動的過程。

            process(Bus2IP_Clk,slv_reg1,the_end)

            begin

            if slv_reg1=x00000000 then

            counter=x00000000;

            chao_out = 0;

            div_clk=0;

            elsif rising_edge(Bus2IP_Clk) then

            if the_end = 1 then

            chao_out = 1;

            counter=counter+1;

            if(counter=x1F4) then

            counter=x00000000;

            chao_out = 0;

            div_clk=1;

            end if;

            end if;

            end if;

            end process;

            -- implement slave model software accessible register(s) read mux

            SLAVE_REG_READ_PROC : process( Bus2IP_Resetn,slv_reg_read_sel, slv_reg0, slv_reg1,Bus2IP_Clk,div_clk ) is

            begin

            case slv_reg_read_sel is

            when 10 =>

            if Bus2IP_Resetn = 0 then

            timer_count = x00000000;

            the_end = 0;

            elsif div_clk=1 then

            if slv_chao_in=1 then

            the_end = 0;

            timer_count = timer_count + 1;

            else

            slv_ip2bus_data = timer_count; --slv_reg0;

            the_end = 1;

            timer_count = x00000000;

            end if;

            else

            slv_ip2bus_data = slv_reg0;

            end if;

            when 01 => slv_ip2bus_data = slv_reg1;

            when others => slv_ip2bus_data = (others => 0);

            end case;

            end process SLAVE_REG_READ_PROC;

            5.3 PWM模塊的調試

            由于需要兩路的PWM來分別操作舵機和直流電機,所有PWM的調試時至關重要的。

            代碼如下:

            int main()

            {

            unsigned long i,j;

            //close PWM

            PWM_IP_mWriteSlaveReg1(XPAR_PWM_IP_0_BASEADDR,0,0x00); //PWM0

            PWM_IP_mWriteSlaveReg1(XPAR_PWM_IP_1_BASEADDR,0,0x00); //PWM1

            for(i=0;i=99999;i++);

            PWM_deal(0x2E);

            while(1)

            {

            PWM_deal(0x2E);

            delay(60);

            PWM_deal(0x38);

            delay(60);

            PWM_deal(0x2E);

            delay(60);

            PWM_deal(0x24);

            delay(60);

            }

            return 0;

            }

            void PWM_deal(unsigned char reg0)

            {

            //PWM0 舵機

            //PWM 頻率

            PWM_IP_mWriteSlaveReg1(XPAR_PWM_IP_0_BASEADDR,0,0x1F4);

            //PWM 占空比

            PWM_IP_mWriteSlaveReg0(XPAR_PWM_IP_0_BASEADDR,0,reg0);

            //PWM1 直流電機

            PWM_IP_mWriteSlaveReg1(XPAR_PWM_IP_1_BASEADDR,0,0x1F4); //

            PWM_IP_mWriteSlaveReg0(XPAR_PWM_IP_1_BASEADDR,0,reg0); //slv_reg0

            }



            評論


            相關推薦

            技術專區(qū)

            關閉