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

          新聞中心

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

          經(jīng)典款嵌入式智能小車(chē)的設(shè)計(jì)技巧,提供硬件選型

          作者: 時(shí)間:2017-06-03 來(lái)源:網(wǎng)絡(luò) 收藏
          1. 前言

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

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

          1. 總體方案設(shè)計(jì)

          圖1 系統(tǒng)硬件結(jié)構(gòu)框圖

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

          1. 1主控制器的選擇

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

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

          1. 2的選擇

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

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

          1. 3電機(jī)驅(qū)動(dòng)選擇

          解決方案:采用BTS7960B搭建,可以滿(mǎn)足大功率的輸出,分別驅(qū)動(dòng)兩個(gè)電機(jī)。

          驅(qū)動(dòng)模塊電路

          1. 攝像頭模塊的選擇

          方案:采用數(shù)字?jǐn)z像頭ov6620,控制簡(jiǎn)單,價(jià)格合適,信號(hào)穩(wěn)定。

          1. 系統(tǒng)硬件設(shè)計(jì)
          1. 1車(chē)體模型

          實(shí)物如下圖所示。


          圖2 車(chē)體實(shí)際模型

          攝像頭尋找黑線(xiàn),指引小車(chē)循跡,超聲波測(cè)距,指引小車(chē)自控速度。

          1. 2電源

          其原理圖如圖三所示:

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

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

          OV6620 時(shí)序分析

          OV6620的同步信號(hào)時(shí)序如下:場(chǎng)同步信號(hào)VSYN 為兩個(gè)正脈沖之間掃描一幀的定時(shí),即

          完整的一幀圖像在兩個(gè)正脈沖之間;行同步信號(hào)HREF 掃描該幀圖像中各行像素的定時(shí),

          即高電平時(shí)為掃描一行像素的有效時(shí)間;像素同步信號(hào) PCLK為讀取有效像素值提供同步信

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

          間的時(shí)序關(guān)系:

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

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

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

          當(dāng)然實(shí)際上沒(méi)有這么多,消隱和無(wú)效信號(hào)去掉之后只有 292行;有效的灰度數(shù)據(jù)是在行中

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

          少個(gè)點(diǎn): 40us/110ns=363, 消隱和無(wú)效信號(hào)去掉之后只有 356 個(gè)點(diǎn)。足以證明

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

          機(jī)的總線(xiàn),根本無(wú)法捕捉到這個(gè)信號(hào),此時(shí)PCLK 的波形已經(jīng)變?yōu)榧獠?,完全沒(méi)有意義捕捉

          這個(gè)信號(hào),采集圖像時(shí)盡快地一個(gè)點(diǎn)一個(gè)點(diǎn)的取就行了。

          1. 4直流電機(jī)驅(qū)動(dòng)

          系統(tǒng)中采用了BTS7960B搭建,可以滿(mǎn)足大功率的輸出,分別驅(qū)動(dòng)兩個(gè)電機(jī)。

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

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

          最小系統(tǒng)

          4系統(tǒng)軟件設(shè)計(jì)

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

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

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

          1. 2外部硬件驅(qū)動(dòng):

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

          1. 3核心算法:

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

          圖10 軟件結(jié)構(gòu)框圖

          5系統(tǒng)調(diào)試和測(cè)試

          調(diào)試過(guò)程:

          5.1硬件平臺(tái)的方案測(cè)試

          在EDK設(shè)計(jì)中,可以新建測(cè)試代碼,自動(dòng)生成測(cè)試代碼,通過(guò)串口打印驗(yàn)證結(jié)果。

          5.2 超聲波模塊的使用

          在增加IP核過(guò)程中,需要根據(jù)超聲波的時(shí)序要求,用硬件描述語(yǔ)言描述驅(qū)動(dòng)的過(guò)程。

          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模塊的調(diào)試

          由于需要兩路的PWM來(lái)分別操作舵機(jī)和直流電機(jī),所有PWM的調(diào)試時(shí)至關(guān)重要的。

          代碼如下:

          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 舵機(jī)

          //PWM 頻率

          PWM_IP_mWriteSlaveReg1(XPAR_PWM_IP_0_BASEADDR,0,0x1F4);

          //PWM 占空比

          PWM_IP_mWriteSlaveReg0(XPAR_PWM_IP_0_BASEADDR,0,reg0);

          //PWM1 直流電機(jī)

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

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

          }



          評(píng)論


          相關(guān)推薦

          技術(shù)專(zhuān)區(qū)

          關(guān)閉
          看屁屁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); })();