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

          新聞中心

          EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計應(yīng)用 > 基于FPGA的濕度測量系統(tǒng)設(shè)計

          基于FPGA的濕度測量系統(tǒng)設(shè)計

          作者: 時間:2014-03-28 來源:網(wǎng)絡(luò) 收藏

          摘要:為了實時檢測常溫下的濕度,以便負(fù)責(zé)人根據(jù)需要調(diào)整環(huán)境狀態(tài)。采用測頻計數(shù)法結(jié)合頻差法設(shè)計了以芯片(EP2C8Q208C8N)為基礎(chǔ)的可用于濕度測量的石英晶體諧振頻率漂移檢測電路。重點介紹在平臺上通過測量石英晶體的諧振頻率來間接測量濕度的方法,討論了平臺上的每個模塊的設(shè)計過程,給出了部分模塊和整體電路的仿真圖,解釋了仿真結(jié)果。FPGA參與外圍硬件電路的輔助設(shè)計,會使設(shè)計更加簡單,周期更短。

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

          濕度若能夠?qū)崟r進(jìn)行測量,對于生產(chǎn)、生活方面是很至關(guān)重要的,尤其是在那些倉儲、種植、養(yǎng)殖、家庭、醫(yī)療、科研等關(guān)注濕度變化的地方。如果異常濕度不能及時被測量到,就會使生產(chǎn)降低、身體感到不適?,F(xiàn)代濕度測量從機(jī)械式發(fā)展為精確度更高的電子式濕度傳感器。石英壓電諧振式濕度傳感器就是利用了諧振元件的固有頻率與被測量之間存在關(guān)系而進(jìn)行測量的一種電子裝置。通過在線可編程芯片F(xiàn)PGA來對傳感器數(shù)據(jù)進(jìn)行采集、測量和處理,能極大地整合和簡化系統(tǒng)設(shè)計。文中將主要描述石英晶體()濕度測量系統(tǒng)中FPGA部分的程序設(shè)計,分別給出單個模塊的設(shè)計思路和(或)工作流程圖,對部分模塊給出仿真結(jié)果,最后對總體程序進(jìn)行了仿真,給出整體結(jié)果。

          1 基本原理

          在壓電石英晶體的晶片表面涂覆濕度敏感材料,制成一個附著有吸濕膜的石英晶體諧振器。若該石英晶體放置于濕度環(huán)境中,由于吸濕膜通過氫鍵或者分子間作用力吸附了環(huán)境中的水汽分子,使得石英晶體的質(zhì)量發(fā)生變化。根據(jù)Sauerbrey公式,如式(1)所示,為晶片上吸附水汽分子后石英晶體質(zhì)量變化量,F(xiàn)o為基頻,△f為相同基頻下的無濕敏膜標(biāo)準(zhǔn)石英晶體諧振(以下簡稱標(biāo)準(zhǔn)晶振)頻率Fo與有濕敏膜傳感石英晶體諧振(以下簡稱傳感晶振)頻率的頻率差,S為晶片上濕敏膜的面積。石英晶體的質(zhì)量若發(fā)生變化,其諧振頻率也會隨之發(fā)生變化。只要通過測量出石英諧振頻率的變化量,再利用頻率差-質(zhì)量差-相對濕度三者之間存在的關(guān)系,由頻率轉(zhuǎn)換得到相對濕度。

          ?

          基于FPGA的QCM濕度測量系統(tǒng)程序設(shè)計與仿真

          ?

          系統(tǒng)由濕度傳感器、振蕩電路、FPGA平臺、顯示電路等模塊組成,如圖1所示。FPGA平臺將集成測量、控制、驅(qū)動等功能模塊,先通過參比對照測出兩個通道的頻率值,再計算兩通道頻率值的差,根據(jù)轉(zhuǎn)換表轉(zhuǎn)換出相對濕度值,送出顯示。采用基頻10 MHz,AT切型的石英晶體作為濕度傳感器。

          ?

          ?

          2 總體方案構(gòu)造

          2.1 FPGA芯片

          FPGA,通過軟件輔助編程的方式實現(xiàn)電路功能的一種半定制ASIC芯片。FPGA是在線可編程器件中的一種,基于查找表LUT的電路原理。N輸入的查找表,將輸入的真值表存儲在SRAM中,系統(tǒng)通過“查表”的方式,輸出預(yù)存結(jié)果。FPGA在電路設(shè)計和使用的過程中高度體現(xiàn)了以專用性、高效性,以人為本的設(shè)計思想。FPGA芯片采用的是美國Altera公司設(shè)計生產(chǎn)的Cyclone II系列中的EP2C8Q208C8N。它含有516個可編程邏輯塊CLBs,8256個邏輯單元LEs,165888個存儲位,138個可使用的I/O端口,端口最大電壓為3.3 V,核心電壓為1.2 V,工作適宜溫度為0~85℃。

          2.2 FPGA總體電路構(gòu)建

          FPGA程序設(shè)計是整個相對濕度測量系統(tǒng)設(shè)計中關(guān)鍵的一部分,集成了控制、測量與鎖存、差值計算、物理量轉(zhuǎn)換,顯示驅(qū)動等模塊。通過軟件編程輔助設(shè)計的電路,既可降低硬件電路設(shè)計的成本,同時也發(fā)揮軟件設(shè)計帶來的優(yōu)點。另外用FPGA做設(shè)計還可隨時就應(yīng)用過程中出現(xiàn)的問題調(diào)整程序,使系統(tǒng)作更大優(yōu)化。整個FPGA運(yùn)行的流程圖如圖2所示。整個FPGA電路模塊的設(shè)計和仿真都將在Quartus II 9.0軟件環(huán)境下完成。在FPGA中相對濕度的測量將采用實時測量的方案。

          ?

          ?

          3 模塊設(shè)計與仿真

          3.1 控制模塊

          控制模塊主要完成對FPGA工作進(jìn)程的控制。它包括系統(tǒng)啟動/暫停、使能控制、系統(tǒng)復(fù)位等功能,其工作流程如圖3所示。其中N值大小可以因需求不同作數(shù)值調(diào)整。

          ?

          ?

          3.2 測量與鎖存模塊

          測量模塊是FPGA設(shè)計中最關(guān)鍵的模塊之一。為得到頻率差,采用雙通道分別進(jìn)行標(biāo)準(zhǔn)晶振和傳感晶振的頻率測量。數(shù)據(jù)信號在一個閘門內(nèi)的計數(shù)值很大,所以不考慮因閘門信號與數(shù)據(jù)信號不同步造成的±1字的誤差。測量模塊中的頻率測量采用直接計數(shù)法完成。在使能高電平期間,頻率信號觸發(fā)沿每到來一次時,計數(shù)器加1計數(shù);在使能低電平期間計數(shù)器數(shù)據(jù)鎖存,保存至下一次的測量完成。最小測量精度為1 Hz,采用8421BCD碼計數(shù)(便于觀察和后續(xù)電路設(shè)計)。

          ?

          ?

          對測量和鎖存模塊進(jìn)行仿真分析,如圖4所示。從圖中可以看出系統(tǒng)在異步復(fù)位信號sys_clr高電平下復(fù)位,否則在使能信號sys_ena高電平有效時,系統(tǒng)計數(shù),直到使能無效,result_Q最后一個計數(shù)值送入鎖存器result_latch保存至下一次測量結(jié)束。在整個系統(tǒng)中復(fù)位信號周期性出現(xiàn)在保持時間末刻,以使計數(shù)寄存器下一次從0開始計數(shù)。

          3.3 頻率差值計算模塊

          獲得兩個通道的頻率值后,根據(jù)頻差計算公式(2),將兩者送入減法器中。

          △F=Fo-Fs (2)

          減法器采用BCD碼減法,按以下規(guī)則順序執(zhí)行:

          塵埃粒子計數(shù)器相關(guān)文章:塵埃粒子計數(shù)器原理
          晶振相關(guān)文章:晶振原理
          土壤濕度傳感器相關(guān)文章:土壤濕度傳感器原理

          上一頁 1 2 下一頁

          關(guān)鍵詞: FPGA QCM

          評論


          相關(guān)推薦

          技術(shù)專區(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); })();