佘世剛,趙 宇,胡月娥,曹亞運(yùn),袁崢崢
(常州大學(xué) 機(jī)械工程學(xué)院,江蘇 常州 213164)
0 引言
液化天然氣因?yàn)槠錈o(wú)污染而被稱為“清潔能源”(LNG,liquefied natural gas),LNGV車載燃料汽車?yán)肔NG作為燃料應(yīng)運(yùn)而生?,F(xiàn)階段對(duì)LNG汽車方面的研究較多,隨著LNG燃料汽車的大力發(fā)展,LNG氣瓶作為L(zhǎng)NGV車載燃料汽車的動(dòng)力核心部分,對(duì)LNG氣瓶進(jìn)行實(shí)時(shí)監(jiān)測(cè)就變得十分必要。但現(xiàn)有的LNG氣瓶檢測(cè)技術(shù)仍然相對(duì)滯后,這是阻礙LNG氣瓶推廣使用的最大瓶頸[1]。通過(guò)對(duì)市場(chǎng)進(jìn)行調(diào)查研究不難發(fā)現(xiàn),目前市面上投入運(yùn)行的LNG氣瓶監(jiān)測(cè)設(shè)備大部分面臨壓力值測(cè)量不精確、液位量監(jiān)測(cè)精度低、數(shù)據(jù)傳輸滯后等缺點(diǎn)[2]。
現(xiàn)有的設(shè)備關(guān)于監(jiān)測(cè)氣瓶?jī)?nèi)部壓力通常使用高精度的壓力傳感器進(jìn)行實(shí)時(shí)監(jiān)測(cè),以達(dá)到避免氣瓶?jī)?nèi)部壓力過(guò)大,威脅汽車安全運(yùn)行的目的。但針對(duì)氣瓶?jī)?nèi)部液位測(cè)量技術(shù)卻遠(yuǎn)未達(dá)到理想值,調(diào)查顯示如今用于監(jiān)測(cè)氣瓶?jī)?nèi)部液位值的方法普遍采用差壓法。其工作原理是通過(guò)測(cè)量氣罐內(nèi)部液柱上下兩端的靜態(tài)壓力,而后利用密度公式進(jìn)行計(jì)算,從而得到液柱的容量及液柱高度。通過(guò)這種方法測(cè)量液位不僅所測(cè)精度低,而且隨著LNG氣瓶規(guī)格的變化,計(jì)算公式也需要做出相應(yīng)變化,不能做到監(jiān)測(cè)簡(jiǎn)化。因此差壓法測(cè)量液量存在測(cè)量精度較差、工作難度較大等缺點(diǎn)。此外為保證氣瓶安全運(yùn)行,需操控人員實(shí)時(shí)掌握氣瓶液位狀態(tài),這故需將所測(cè)得的液位數(shù)據(jù)傳輸?shù)讲倏厥绎@示儀表盤(pán)上顯示。傳統(tǒng)的數(shù)據(jù)傳輸通常采用RS485等串口通信方式,而這些通信技術(shù)存在接口標(biāo)準(zhǔn)雜亂、連接線路過(guò)多等諸多問(wèn)題[3]。為避免上述存在的問(wèn)題,本系統(tǒng)提出了一種基于無(wú)線通信的LNG氣瓶液位監(jiān)測(cè)系統(tǒng)。該系統(tǒng)基于電容式液位傳感器對(duì)液量信息進(jìn)行數(shù)據(jù)采集,然后通過(guò)STM32中央處理單元進(jìn)行數(shù)據(jù)判斷、分析處理,最后將采集到的數(shù)據(jù)通過(guò)無(wú)線傳輸技術(shù)進(jìn)行收并發(fā),完成數(shù)據(jù)傳輸工作。本文采用NRF24L01芯片進(jìn)行無(wú)線通信,從而實(shí)現(xiàn)無(wú)線通信監(jiān)測(cè)系統(tǒng)的設(shè)計(jì)[4-5]。
1 LNG氣瓶液位監(jiān)測(cè)系統(tǒng)
1.1 系統(tǒng)總體方案設(shè)計(jì)
為保證LNG氣瓶運(yùn)行安全,本文以液位為設(shè)計(jì)參數(shù),設(shè)計(jì)基于電容式液位傳感器的液位監(jiān)測(cè)系統(tǒng),感知層利用電容液位計(jì)、ADUM1411芯片,配合STM32單片機(jī)[6]控制完成數(shù)據(jù)采集工作,而后利用NRF24L01芯片完成數(shù)據(jù)無(wú)線傳輸工作,界面顯示模塊采用LCD1602液晶顯示屏實(shí)現(xiàn)液量數(shù)據(jù)顯示。系統(tǒng)設(shè)置液位閾值,當(dāng)電容式液位傳感器監(jiān)測(cè)液位高度超出閾值時(shí),發(fā)出警報(bào)并通過(guò)LCD顯示屏顯示,系統(tǒng)總體設(shè)計(jì)如圖1所示。

圖1 系統(tǒng)總體設(shè)計(jì)框圖
1.2 電容式液位計(jì)測(cè)量LNG氣瓶液位的方法
采用筒式電容液位傳感器監(jiān)測(cè)氣瓶的液位參數(shù),其工作原理如下[7]:設(shè)筒的內(nèi)直徑為d,外直徑為D,傳感器的長(zhǎng)度為L(zhǎng),液位的高度為H,LNG(液化天然氣)的相對(duì)介電常數(shù)設(shè)為α,液面表層空氣的介電常數(shù)即絕對(duì)介電常數(shù)以β(約為1)來(lái)計(jì)算,若這些參數(shù)在穩(wěn)定的情況下,則傳感器的電容值即C的大小就僅僅取決于液位的高度。這樣就可以通過(guò)測(cè)量電容值C的大小來(lái)得到液位的高度。具體公式如下:
電容C與傳感器長(zhǎng)度L、液面高度的關(guān)系為:
(1)
當(dāng)液位高度H為0時(shí),此時(shí)儲(chǔ)液罐處于空瓶狀態(tài)。此時(shí)的電容C為:
(2)
當(dāng)液位高度H達(dá)到最大值時(shí),儲(chǔ)液罐處于滿瓶狀態(tài),此時(shí)的電容C為:
(3)
式中,C為電容值,α為液化天然氣的相對(duì)介電常數(shù),β為液面表層空氣的介電常數(shù)即絕對(duì)介電常數(shù),H為液面的高度,D為罐體的外徑,d為罐體的內(nèi)徑,L為傳感器長(zhǎng)度。
2 液位遠(yuǎn)程監(jiān)控系統(tǒng)的硬件電路設(shè)計(jì)
2.1 MCU電路設(shè)計(jì)
本設(shè)計(jì)使用的是STM32F401微控制器[8-9],因其功耗低、模式種類多且具有3路USART(速度高達(dá)10.5 Mbit/s)、4路SPI(速度高達(dá)42 Mbit/s)等優(yōu)點(diǎn)而被廣泛應(yīng)用。
STM32F401微控制器及外圍電路原理圖圖2所示,主要包括引腳7的復(fù)位電路、引腳5、6、18、19的時(shí)鐘電路、引腳20、44的啟動(dòng)電路、引腳45的警報(bào)電路、引腳34、35調(diào)試接口、PA2是蜂鳴器接口,STM32F401單片機(jī)與ADUM1411芯片、NRF24L01之間均通過(guò)SPI方式進(jìn)行通信[10],引腳25~28與電氣隔離芯片相連,單獨(dú)設(shè)置電氣隔離模塊不僅可以減少垃圾數(shù)據(jù)占用單片機(jī)內(nèi)存,加快其處理速度,同時(shí)可減小電路干擾,提高數(shù)據(jù)傳輸準(zhǔn)確性。引腳VIA、VOD為液位信號(hào)輸入輸出接口。因本系統(tǒng)采用電容式液位傳感器,其輸出電壓為1~5 V,而ADUM1411芯片信號(hào)接入口電壓為0.5~2.7 V,故需在接口處設(shè)置下拉電阻,將電壓轉(zhuǎn)換ADUM1411芯片所需值,隨后將數(shù)據(jù)傳輸至MCU控制模塊進(jìn)行判斷處理,若測(cè)得的液位值超出所設(shè)閾值,則觸發(fā)警報(bào)功能,且引腳29~32是通信模塊中無(wú)線收發(fā)上單元連接接口,完成對(duì)液位數(shù)據(jù)無(wú)線傳輸工作,送至HMI液晶屏上面顯示。

圖2 MCU主控及外圍電路原理
2.2 電容式液位測(cè)量電路設(shè)計(jì)
LNG氣瓶液位測(cè)量電路如圖3所示,為便于驗(yàn)證監(jiān)測(cè)系統(tǒng)的準(zhǔn)確性與一致性,共設(shè)置兩個(gè)監(jiān)測(cè)點(diǎn)。JP0中1、2管角連接電容式液位傳感器。因傳感器外接電源,為防止2號(hào)監(jiān)測(cè)點(diǎn)接入電壓過(guò)高,故接入一個(gè)BAV10-A9開(kāi)關(guān)管保護(hù)電路;同時(shí)在電路中的每個(gè)引腳上均添加一個(gè)保護(hù)電阻。管腳9、10、11與外圍電路相連;為提高傳感器與MCU主控模塊之間數(shù)據(jù)傳輸精度,減小電頻信號(hào)干擾,在SPI總線接口處連接ADUM1411數(shù)字隔離器來(lái)保證數(shù)據(jù)的準(zhǔn)確傳輸。數(shù)字隔離器具有4路獨(dú)立通道,隔離干擾能力強(qiáng),適用于本監(jiān)測(cè)系統(tǒng);ADUM1411的11引腳設(shè)為輸出端口,便于電容充放電,10引腳與隔離芯片內(nèi)部反向模擬比較器相連,常規(guī)比較引腳9、10之間的模擬電壓高低,確定反向模擬器輸入電壓[11-12]。

圖3 電容式液位測(cè)量電路圖
2.3 無(wú)線通信模塊設(shè)計(jì)
本文設(shè)計(jì)的無(wú)線通信模塊分為無(wú)線收發(fā)上、下單元,上單元與MCU控制模塊連接,下單元與顯示模塊相連。采用的是NRF24L01芯片[13-14],其最高工作速率可達(dá)2 Mbps,且具有高效的GFSK調(diào)制,同時(shí)該芯片抗干擾能力強(qiáng);此芯片具有125個(gè)可選的頻道,可滿足多點(diǎn)信和調(diào)頻通信的需要;芯片內(nèi)置CRC檢錯(cuò)和點(diǎn)對(duì)多點(diǎn)的通信地址控制,以此確保數(shù)據(jù)的可靠傳輸。此芯片通過(guò)SPI與外部MCU控制模塊進(jìn)行通信,模塊VCC引腳使用3.3 V電壓。該芯片除了VCC和GND腳,其它引腳都可以和5 V單片機(jī)的I/O口直連,故在使用上具有很大優(yōu)勢(shì)。接口電路如圖4所示。

圖4 無(wú)線通信模塊原理圖
2.4 顯示模塊設(shè)計(jì)
本系統(tǒng)的顯示模塊采用LCD1602液晶顯示屏,LCD1602點(diǎn)陣型液晶模塊[15]可用于顯示字母、數(shù)字、符號(hào)。LCD1602液晶顯示屏最多可同時(shí)顯示32個(gè)字符。LCD液晶的顯示原理是利用液晶的物理特性,通過(guò)電壓對(duì)顯示區(qū)域進(jìn)行控制。LCD1602液晶顯示屏采用了標(biāo)準(zhǔn)的16腳接口,通過(guò)3個(gè)控制端接口實(shí)現(xiàn)控制要傳輸?shù)闹噶罨蛘邤?shù)據(jù)。除了幾個(gè)電源正負(fù)極引腳外,通訊只需用到NRF24L01芯片上空閑的11個(gè)I/O口即可;LCD1602內(nèi)含復(fù)位電路,提供清屏、字符閃爍、顯示移位等各種控制命令。因此方便使用和編程,同時(shí)可滿足于液位測(cè)量系統(tǒng)的顯示。LCD1602與無(wú)線收發(fā)下單元相連,將NRF24L01芯片的P3接口接入到顯示屏上,可完成將電容式液位傳感器測(cè)得的數(shù)據(jù)顯示到LCD1602顯示屏上。其電路如圖5所示。

圖5 顯示模塊原理圖
2.5 電源模塊設(shè)計(jì)
電源模塊部分的作用主要是為電路中的各個(gè)模塊提供穩(wěn)定的工作電壓使其能夠正常的工作。在實(shí)驗(yàn)的情況下,系統(tǒng)的電源通常由開(kāi)關(guān)電源或者USB接口提供,為了將電源電壓轉(zhuǎn)換為單片機(jī)以及芯片所需的3.3 V工作電壓。本設(shè)計(jì)電源模塊電路首先設(shè)置由開(kāi)關(guān)管和二極管組成的BUCK電路對(duì)交流電供電電壓進(jìn)行降壓,降至電壓調(diào)節(jié)器LM5007的工作電壓范圍,LM5007電壓調(diào)節(jié)器的輸入直流電壓范圍為12~45 V,經(jīng)過(guò)LM5007與外圍電路再將電壓降至5 V輸出。設(shè)置電容CA1濾除輸入電源中的高頻擾動(dòng),再經(jīng)電容C34、C38吸收輸入電源中低頻紋波,將5 V電壓經(jīng)過(guò)線性穩(wěn)壓器TPS70933DBVR及其外圍電路降壓至3.3 V穩(wěn)壓電源。采用AMS1117系列穩(wěn)壓器,穩(wěn)壓器的片上微調(diào)可將把基準(zhǔn)電壓調(diào)整到1.5%的誤差范圍以內(nèi)而且電流限制也能得到調(diào)整,這樣可以盡量減少因穩(wěn)壓器和電源電路超載所帶來(lái)的壓力。本系統(tǒng)所設(shè)計(jì)的電源模塊通過(guò)整流以及濾波再經(jīng)過(guò)7805將電源轉(zhuǎn)換為5 V電壓,最后經(jīng)過(guò)AMS1117轉(zhuǎn)換為單片機(jī)所需的3.3 V電壓,具體電源電路如圖6所示。

3 系統(tǒng)的主程序設(shè)計(jì)
一個(gè)完整可靠的監(jiān)測(cè)系統(tǒng)應(yīng)該包含軟件以及硬件部分,只有通過(guò)二者的協(xié)調(diào)工作才能更好的完成監(jiān)測(cè)任務(wù)。系統(tǒng)的軟件設(shè)計(jì)主要包括數(shù)據(jù)采集、MCU控制模塊以及無(wú)線收發(fā)通信模塊。
系統(tǒng)主程序以低耦合高內(nèi)聚為核心進(jìn)行軟件設(shè)計(jì),完成對(duì)各個(gè)模塊調(diào)用工作。整體程序設(shè)計(jì)如圖7所示,系統(tǒng)上電后對(duì)各個(gè)模塊硬件接口、寄存器進(jìn)行配置;并對(duì)串口驅(qū)動(dòng)、定時(shí)器等程序進(jìn)行初始化;初始化完成后開(kāi)始應(yīng)用程序調(diào)用,首先讀取系統(tǒng)停機(jī)前LNG氣瓶狀態(tài)參數(shù)信息;接著開(kāi)始對(duì)LNG氣瓶當(dāng)前液位狀態(tài)進(jìn)行信息采集,隨后利用算法對(duì)電容式液位傳感器采集的液位數(shù)據(jù)進(jìn)行計(jì)算比較,判斷液位值是否超出閾值,若超出所設(shè)閾值,則系統(tǒng)發(fā)出警報(bào)設(shè)置蜂鳴器發(fā)聲;在數(shù)據(jù)采集分析處理完成后將數(shù)據(jù)進(jìn)行存儲(chǔ),而后將數(shù)據(jù)通過(guò)NRF無(wú)線傳輸?shù)缴衔粰C(jī)顯示界面,整個(gè)程序完成。

圖7 系統(tǒng)主程序
本系統(tǒng)采用C語(yǔ)言編程,程序部分主要介紹無(wú)線發(fā)送部分以及無(wú)線接收部分,具體程序如下所示:
無(wú)線發(fā)送部分:
#include "system.h"
#include "SysTick.h"
#include "adc.h"
#include "nrf24l01.h"
void sendok(void);
/***********************
* 函數(shù)名 : main
* 函數(shù)功能 : 主函數(shù)
* 輸入 : 無(wú)
* 輸出 : 無(wú)
***********************
int main()
{
u8 str[4];
u16 value=0;
u8 m_water;
SysTick_Init(168);
NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2); //中斷優(yōu)先級(jí)分組 分兩組
ADCx_Init();
NRF24L01_Init();
NRF24L01_TX_Mode();//設(shè)置NRF24L01為發(fā)送模式
while(1)
{
value=Get_ADC_Value(ADC_Channel_5,20);//獲得電壓 m_water=(u8)(value*100.0/4096);
str[0]=m_water/100+0x30;
str[1]=m_water%100/10+0x30;
str[2]=m_water%10+0x30;
str[3]='