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

          新聞中心

          EEPW首頁(yè) > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > 一種便攜式汽油標(biāo)號(hào)檢測(cè)儀的設(shè)計(jì)

          一種便攜式汽油標(biāo)號(hào)檢測(cè)儀的設(shè)計(jì)

          作者: 時(shí)間:2007-03-09 來(lái)源:網(wǎng)絡(luò) 收藏
          摘要:介紹了一種由C51單片機(jī)控制的便攜式汽油標(biāo)號(hào)檢測(cè)儀,對(duì)該系統(tǒng)的測(cè)量原理和控制器的硬件結(jié)構(gòu)進(jìn)行了說(shuō)明,介紹了軟件主流程結(jié)構(gòu)及其模塊化設(shè)計(jì)。通過(guò)與傳統(tǒng)油介質(zhì)檢測(cè)方法的比較,說(shuō)明了該系統(tǒng)各項(xiàng)性能的優(yōu)越性及其廣泛的應(yīng)用價(jià)值。 關(guān)鍵詞:電容 CAN總線 RTOS 面向?qū)ο? 隨著近年來(lái)我國(guó)經(jīng)濟(jì)的快速發(fā)展,汽車逐漸走入普通家庭,人們對(duì)汽油的消費(fèi)也多了起來(lái)。由于汽車發(fā)動(dòng)機(jī)對(duì)汽油的指標(biāo)有嚴(yán)格的限制,使用指標(biāo)不合格的汽油會(huì)損壞發(fā)動(dòng)機(jī);于是,對(duì)汽油標(biāo)號(hào)的檢測(cè)就變得重要起來(lái)。為此,設(shè)計(jì)了一種便攜式油介質(zhì)檢測(cè)儀,用它可以實(shí)現(xiàn)對(duì)汽油標(biāo)號(hào)的實(shí)時(shí)檢測(cè),從而滿足了市場(chǎng)上實(shí)際應(yīng)用的需要。 1 測(cè)量方案的實(shí)現(xiàn) 1.1 設(shè)計(jì)原理 1.1.1 背景知識(shí) 汽油的標(biāo)號(hào)是由其辛烷值確定的。辛烷值是測(cè)定汽油抗震性能的一種指標(biāo),辛烷值越大,汽油的抗震性能越好。由于異辛烷的抗爆性最好,所以將它的抗爆性定為100,也就是辛烷值為100。其它燃料的辛烷值是通過(guò)與異辛烷比較來(lái)確定的,如93號(hào)汽油的抗爆性是異辛烷的93%,這種汽油的辛烷值就定為93。 1.1.2 模型的建立 現(xiàn)采用電容電測(cè)的方法,以電容為傳感器,以相對(duì)介電常數(shù)為相關(guān)變量,間接測(cè)定汽油辛烷值。汽油是具有電氣絕緣性能的液體混合物,粘度低、流動(dòng)性好、揮發(fā)性強(qiáng),這些特點(diǎn)為使用電容式傳感器直接測(cè)量其相對(duì)介電常數(shù)創(chuàng)造了有利條件。由電工學(xué)知識(shí)可知,平行板間的電容為: C=ε0%26;#183;εr%26;#183;S/b 其中?熏ε0=8.85415%26;#215;10-12F/m,為真空的介電常數(shù);εr?yàn)橄鄬?duì)介電常數(shù)(在空氣中εr0≈1)。 平行板電容式傳感器在空氣中的電容為: C0=ε0%26;#183;εr0%26;#183;S/b 式中,S為平行板的面積;b為平行板的間距。 同一傳感器在汽油中的電容為: C=ε0%26;#183;εrn%26;#183;S/b 于是有: C/C0=εrn%26;#183;εr0≈εrn 所以,汽油的相對(duì)介電常數(shù)εrn約等于同一傳感器以汽油為介質(zhì)時(shí)的電容值C與以空氣為介質(zhì)的電容值C0之比。對(duì)同一品質(zhì)的汽油,該比值為一常數(shù)。于是,可以通過(guò)測(cè)定浸入待測(cè)油品中的電容傳感器的電容值C來(lái)得到待測(cè)汽油的相對(duì)介電常數(shù)εrn。圖2 電路原理圖通過(guò)大量實(shí)測(cè)數(shù)據(jù),得出汽油的辛烷值Yn與其相對(duì)介電常數(shù)εrn之間存在著函數(shù)關(guān)系,即: Yn=Y0-k%26;#183;εrn 其中,k為斜率參數(shù);Y0為截距參數(shù)。 這些參數(shù)需要根據(jù)實(shí)際環(huán)境在現(xiàn)場(chǎng)由試驗(yàn)標(biāo)定設(shè)置。 1.2 硬件設(shè)計(jì) 本裝置的測(cè)量原理框圖如圖1所示。 這里選用了MAX038高頻精密波形發(fā)生器作為整個(gè)電路的核心器件,產(chǎn)生高頻方波。MAX038的工作頻率范圍為0.1Hz~20MHz;輸出波形可以是三角波、正弦波、鋸齒波、方波和脈沖波;頻率和占空比獨(dú)立調(diào)節(jié);占空比可變(15%~85%);具有低阻抗(0.1Ω)輸出緩沖器和低失真(0.75%)正弦波。 MAX038的工作電壓為%26;#177;5V,其基本振蕩器是一種通過(guò)恒定電流對(duì)電容C進(jìn)行交替充放電的張弛振蕩器,同時(shí)產(chǎn)生三角波和方波。充放電電流由流入引腳IIN的電流來(lái)控制,由施加在引腳FADJ和引腳DADJ的電壓來(lái)調(diào)節(jié)。輸出波形的占空比可以通過(guò)對(duì)引腳DADJ施加電壓來(lái)控制。在正常情況下,VDADJ=0V,占空比為50%。VDADJ從+2.3V變到-2.3V時(shí),占空比從15%變?yōu)椋福担ィ蟾琶糠刈兓保担?。?dāng)VDADJ超過(guò)%26;#177;2.3V時(shí),將使頻率漂移,并引起不穩(wěn)定。調(diào)節(jié)引腳DADJ上的電壓可以減少正弦波的失真。未調(diào)整時(shí)(VDADJ=0V)的占空比為50%%26;#177;2%,若對(duì)VDADJ加一個(gè)小的調(diào)整電壓(不大于100mV),則可以使波形準(zhǔn)確對(duì)稱,并使失真減到最小。 MAX038的輸出頻率由輸入IIN引腳的電流、COSC引腳電容和FADJ引腳上的電壓決定。當(dāng)VFADJ=0V時(shí),輸出頻率F0=IIIN/C,則周期T0=C/IIIN。其中,IIIN為輸入IIN引腳的電流(2μA~750μA),C為COSC所接的電容(10pF~200pF)。當(dāng)10μA≤IIIN≤400μA?xí)r,MAX038達(dá)到最佳工作性能。所以,當(dāng)需要固定頻率時(shí),?。桑桑桑螢椋保埃唉蹋痢k娙荼仨氂枚桃€,盡量減小分布電容的影響。在COSC引腳及其引線周圍用一個(gè)接地平面來(lái)減小其它雜散信號(hào)的耦合。 由于MAX038產(chǎn)生的是高頻信號(hào),很難直接進(jìn)行計(jì)數(shù)和相應(yīng)的計(jì)算,所以必須對(duì)MAX038的輸出信號(hào)進(jìn)行分頻。在這里,選用了兩片73HC393進(jìn)行分頻,從而得到便于處理的方波信號(hào)。 具體電路如圖2所示。 1.3 軟件設(shè)計(jì) 普通的單片機(jī)軟件都是采用一種前后臺(tái)的編程方式,后臺(tái)采用死循環(huán)輪詢的方式,前臺(tái)處于等待中斷的狀態(tài),一旦中斷發(fā)生就會(huì)打斷后臺(tái)的輪詢。這種方式將各種情況的處理混雜在一起,使得軟件的復(fù)雜度大大增加,編寫和維護(hù)都很困難,而且任何一個(gè)部分出了問(wèn)題,整個(gè)系統(tǒng)就會(huì)處于死機(jī)狀態(tài)。為此選擇在RTOS(Real Time Operation System)基礎(chǔ)上構(gòu)建系統(tǒng)的軟件。RTOS的特點(diǎn)就是多任務(wù),可以許多個(gè)任務(wù)同時(shí)存在,根據(jù)一定的調(diào)度規(guī)則,進(jìn)行任務(wù)切換。多任務(wù)使得CPU的利用率達(dá)到了最大,并且使軟件最大程度地模塊化,便于編寫。 系統(tǒng)軟件可分為兩大模塊:CPU模塊和LCD模塊。 CPU模塊包含以下任務(wù): (1)CAN管理任務(wù),負(fù)責(zé)CPU和LCD板的通信,可以發(fā)送/接收一個(gè)Modbus的數(shù)據(jù)包。 (2)232管理任務(wù),負(fù)責(zé)CPU和上位機(jī)的通信,可以發(fā)送/接收一個(gè)Modbus的數(shù)據(jù)包。 (3)CAN中斷任務(wù),負(fù)責(zé)發(fā)送或接收一個(gè)CAN幀。 (4)232中斷任務(wù),負(fù)責(zé)發(fā)送或接收一個(gè)232幀。 (5)Modbus任務(wù),可以執(zhí)行以下操作。 ①接收一個(gè)232/CAN的數(shù)據(jù)包。 ②發(fā)送一個(gè)232/CAN的響應(yīng)數(shù)據(jù)包,等待232/CAN的發(fā)送狀態(tài)返回信息。 ③分析接收到的232/CAN數(shù)據(jù)包中的內(nèi)容,對(duì)實(shí)時(shí)數(shù)據(jù)庫(kù)和歷史數(shù)據(jù)庫(kù)進(jìn)行讀寫操作,或者搜索操作。 (6)I/O時(shí)鐘任務(wù),定時(shí)執(zhí)行以下操作(兩次刷新間隔500ms): ①讀取外界模擬量,并寫到實(shí)時(shí)數(shù)據(jù)庫(kù)。 ②讀取外界開關(guān)量,并寫到實(shí)時(shí)數(shù)據(jù)庫(kù)。 ③讀取實(shí)時(shí)數(shù)據(jù)庫(kù),并輸出開關(guān)量和模擬量。 ④調(diào)整系統(tǒng)的時(shí)間。刷新系統(tǒng)的時(shí)候要求獨(dú)占CPU。 (7)時(shí)間任務(wù),定時(shí)刷新看門狗(兩次刷新間隔500ms)。 (8)打印任務(wù),接收信箱中的要求,進(jìn)行打印,每次打印一個(gè)字符(兩個(gè)字符間隔100ms)。 (9)存盤任務(wù),接收信箱中的要求,進(jìn)行存盤,每次存儲(chǔ)一個(gè)內(nèi)存塊,獨(dú)占CPU(兩個(gè)內(nèi)存塊間隔100ms)。 (10)自動(dòng)檢測(cè)任務(wù),根據(jù)當(dāng)前系統(tǒng)的狀態(tài)執(zhí)行自動(dòng)檢測(cè)控制邏輯,調(diào)節(jié)數(shù)據(jù)庫(kù),達(dá)到控制所有I/O的目的(兩次調(diào)節(jié)相差1s)。ECPU板信號(hào)流程如圖3所示。 LCD模塊包含以下任務(wù): (1)CAN中斷處理任務(wù),負(fù)責(zé)接收發(fā)送一個(gè)CAN幀。 (2)CAN管理任務(wù),負(fù)責(zé)發(fā)送接收一個(gè)Modbus數(shù)據(jù)包,同時(shí)負(fù)責(zé)LCD與CPU的通信。 (3)Modbus任務(wù),負(fù)責(zé)Modbus命令與需求間的解釋。 (4)刷新任務(wù)(間隔500ms),負(fù)責(zé)從CPU板上的數(shù)據(jù)庫(kù)讀取數(shù)據(jù),刷新RAM區(qū)中的LCD動(dòng)態(tài)信息,然后刷新LCD。 (5)鍵盤任務(wù),它可以執(zhí)行以下內(nèi)容(間隔300ms): ①分析鍵盤捕獲的按鍵,改變RAM區(qū)中的LCD控制信息。 ②分析鍵盤捕獲的按鍵,根據(jù)RAM區(qū)中的LCD控制信息,從CPU上讀取動(dòng)態(tài)信息。 ③分析鍵盤捕獲的按鍵,根據(jù)RAM區(qū)中的LCD控制信息,刷新CPU上的動(dòng)態(tài)信息。 ④刷新LCD。 ELCD板信號(hào)流程如圖4所示。 2 主要性能指標(biāo) 該系統(tǒng)測(cè)量電容范圍在10pF~200pF之間,測(cè)量誤差小于5%,一次測(cè)量周期小于10分鐘,使用快捷方便。為了消除溫度、濕度、寄生電容的影響,保證測(cè)量的精度,仍需采取恒溫、防潮、屏蔽和接地等措施。必要時(shí),還可以考慮采取雙屏蔽,從而實(shí)現(xiàn)等電位傳輸技術(shù)。 本裝置不僅適用于無(wú)鉛汽油和含鉛汽油,同時(shí)也適用于其它多種油介質(zhì)的檢測(cè),并可以進(jìn)一步應(yīng)用到其它非油介質(zhì)的絕緣材料的檢測(cè)中。 linux操作系統(tǒng)文章專題:linux操作系統(tǒng)詳解(linux不再難懂)


          評(píng)論


          相關(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); })();