基于SIM900A的高精度無線遠(yuǎn)傳壓力表設(shè)計(jì)
自來水管網(wǎng)的分布廣泛,難以由人工完成大范圍壓力測(cè)量點(diǎn)的高頻率和高精度數(shù)據(jù)記錄。針對(duì)這一情況設(shè)計(jì) 了基于SIM900A的無線遠(yuǎn)傳壓力表。該壓力表能夠?qū)崿F(xiàn)壓力的高精度測(cè)量,壓力數(shù)據(jù)的等時(shí)間間隔采集、保存和無線遠(yuǎn) 傳。為了實(shí)現(xiàn)高精度的壓力測(cè)量,設(shè)計(jì)了精度高、溫漂小、噪聲低、負(fù)載接地的恒流源,采用了 24-bit CS5530模數(shù)轉(zhuǎn)換器以 相對(duì)測(cè)量的方式完成模數(shù)轉(zhuǎn)換,利用了光耦隔離電路實(shí)現(xiàn)模擬電路與數(shù)字電路的完全隔離。最后單片機(jī)控制SIM900八模 塊與服務(wù)器之間建立基于GPRS的TCP連接,完成壓力數(shù)據(jù)無線遠(yuǎn)傳。
1 .引言
為了保障人們的用水需求和減少漏損,必須對(duì) 城市自來水管網(wǎng)的壓力進(jìn)行嚴(yán)格控制。在控制 壓力過程中,需要對(duì)壓力進(jìn)行測(cè)量并得知管網(wǎng)的壓 力分布。由于管網(wǎng)分布廣泛,壓力測(cè)量和傳輸多由 遠(yuǎn)傳壓力表完成。傳統(tǒng)遠(yuǎn)傳壓力表利用滑動(dòng)變阻 器原理和長距離布線實(shí)現(xiàn)了壓力的測(cè)量和傳輸。 這種測(cè)量和傳輸方式精度不高,易受干擾,不便維 護(hù),難以大規(guī)模使用,無法直觀反映管網(wǎng)的壓力分 布。本文的無線遠(yuǎn)傳壓力表采用靈敏度高的壓阻 式OEM壓力傳感器;設(shè)計(jì)了精度高、溫漂小、噪聲 低的恒流源電路和24-bit A/D轉(zhuǎn)換電路,實(shí)現(xiàn)了 壓力的高精度測(cè)量;利用了光耦將模擬電路與數(shù)字 電路完全隔離,減少了測(cè)量電路的干擾;通過無線 遠(yuǎn)程傳輸壓力數(shù)據(jù)到服務(wù)器,幾乎不需要維護(hù),節(jié) 省人力物力,非常適合大規(guī)模使用。服務(wù)器接收到 壓力數(shù)據(jù)后繪制出管網(wǎng)壓力分布圖,能夠直觀地反 映管網(wǎng)壓力分布狀態(tài),為管網(wǎng)的壓力控制提供依 據(jù)。
2.系統(tǒng)總體設(shè)計(jì)
系統(tǒng)的總體設(shè)計(jì)思想是壓力傳感器在恒流源 供電的條件下,輸出與作用壓力成正比的差分信 號(hào),該信號(hào)在A/D測(cè)量部分經(jīng)過濾波、放大后以相 對(duì)測(cè)量的方式轉(zhuǎn)換為數(shù)字信號(hào);RTC時(shí)鐘為單片 機(jī)提供實(shí)時(shí)時(shí)間基準(zhǔn);當(dāng)壓力數(shù)據(jù)采集時(shí)刻到來, 單片機(jī)通過光耦讀取A/D測(cè)量部分的數(shù)字信號(hào); 該數(shù)字信號(hào)會(huì)被換算為當(dāng)前壓力數(shù)值并被存儲(chǔ)在 Flash中;當(dāng)壓力數(shù)據(jù)發(fā)送時(shí)刻到來,存儲(chǔ)在Flash 中的壓力數(shù)據(jù)通過SIM900A發(fā)送給服務(wù)器。系統(tǒng) 的整體結(jié)構(gòu)如圖1所示。
3.系統(tǒng)硬件設(shè)計(jì)
3. 1恒流源
壓力傳感器采用壓阻式OEM壓力傳感器,其基 本參數(shù)如表1所示。該壓力傳感器靈敏度高、穩(wěn)定性 好、體積小、價(jià)格低廉。傳感器內(nèi)部原理圖如圖2所 示,圖中帶箭頭的電阻橋路為敏感元件,私和風(fēng)為零 位溫漂補(bǔ)償電阻,風(fēng)和風(fēng)為調(diào)零電阻,及為靈敏度 溫度補(bǔ)償電阻。+IN、一IN為供電輸入端,接入恒定 電流;十OUT和一 OUT為信號(hào)輸出端,和 U—ajT分別為十OUT和一OUT端的對(duì)地電壓。 +OU 丁與一 OU 丁之間的差分信號(hào)U—與激勵(lì)電流 IL、外界作用壓力P之間的關(guān)系如式(1):
Uslgnai — U+OUT 一 U —OUT =KSIlP 十 KZIL (1)
式(1)中,KS為靈敏度系數(shù)、K2為零點(diǎn)系數(shù),均為常 數(shù)。當(dāng)遼恒定,US P成線性關(guān)系。
由式(1)可知恒流源的精度和穩(wěn)定性會(huì)影響壓力 傳感器輸出信號(hào)的質(zhì)量,因此對(duì)恒流源的精度、溫漂和 噪聲提出了要求。王金晨設(shè)計(jì)的恒流源中[4],負(fù)載懸 浮使噪聲增加。陳笑風(fēng)構(gòu)造的的電流源結(jié)構(gòu)[]復(fù)雜, 電阻難以匹配。本文設(shè)計(jì)的恒流源為負(fù)載接地恒流 源,具有精度高、溫漂小、結(jié)構(gòu)簡單、無需電阻匹配、噪 聲低等特點(diǎn);考慮了運(yùn)放的正向端、負(fù)向端輸入電流的 影響;輸出了 A/D轉(zhuǎn)換器的參考電壓。
圖2傳感器內(nèi)部原理圖 恒流源電路原理如圖3所示。REF192為高 精度、低溫漂的帶隙參考電壓芯片,正常工作時(shí)其 OUTPUT引腳與GND引腳之間電壓差為2. 5V; Rs為5Kn的低溫漂電阻是壓力傳感器的等效 電阻;RF是5Kn的低溫漂電阻,一方面其兩端的電 壓作為A/D轉(zhuǎn)換器的參考電壓,另一方面使壓力 傳感器輸出信號(hào)的共模電壓滿足后續(xù)A/D測(cè)量的 要求R是普通電阻;C9、C10是濾波電容。下面 對(duì)該電路的直流狀態(tài)進(jìn)行分析。
Uo、UN、UP分別為運(yùn)放輸出端、負(fù)向端、正向端的對(duì)地電壓;分別為運(yùn)放負(fù)向端、正向端的 輸入電流;、是運(yùn)放的輸入失調(diào)電流;Us是
REF192的OUTPUT引腳與GND引腳之間電壓 差,Us = 2. 5V。
故運(yùn)放處于負(fù)反饋狀態(tài),能夠穩(wěn)定。
Il為流經(jīng)傳感器等效電阻Rl的電流,s為流 經(jīng)采樣電阻Rs的電流。在節(jié)點(diǎn)A處利用KCL定理可得:
3.2 A/D測(cè)量
a/d測(cè)量是將傳感器輸出的差分信號(hào)濾波、 放大和A/D轉(zhuǎn)換后得到數(shù)字信號(hào)。
A/D測(cè)量原理圖如圖4所示。U廳是恒流電路 產(chǎn)生的電壓,提供A/D轉(zhuǎn)換器CS5530基準(zhǔn)電壓; A5V提供CS5530的模擬電源;另一路5V電源經(jīng)過 一階低通濾波器后提供CS5530的數(shù)字電源。
壓力傳感器的輸出端+ OU 丁和一out經(jīng)過 二階低通濾波器后接入模數(shù)轉(zhuǎn)換芯片CS5530,通 過CS5530內(nèi)部斬波穩(wěn)定儀表放大器將差分信號(hào) 放大64或128倍。一般情況下就無需額外設(shè)計(jì)信 號(hào)放大電路,提高測(cè)量精度,降低成本。
在A/D轉(zhuǎn)換之前,通過程序控制將CS5530的 信號(hào)輸入引腳短路,測(cè)量出共模噪聲,在最后的測(cè) 量結(jié)果中將該噪聲減去,來降低噪聲對(duì)測(cè)量結(jié)果的 影響。通過內(nèi)部的數(shù)字濾波器濾除工頻干擾,減少 了單片機(jī)的數(shù)字濾波處理,節(jié)約了單片機(jī)軟件資 源。
CS5530的通信端口是串行SPI接口,包括CS、SDI、SDO、SCLK。CS為片選端口,直接拉低選中;SDI為數(shù)據(jù)輸入端口 ;SDO為數(shù)據(jù)輸出端口 ; SLCK為時(shí)鐘輸入端口,這樣就只需要占用單片機(jī) 的三個(gè)I/O 口。相比于并行模數(shù)轉(zhuǎn)換器而言, CS5530節(jié)約了單片機(jī)的硬件資源。
采用CS5530設(shè)計(jì)A/D測(cè)量部分使電路簡潔、 精度高、成本低,從硬件和軟件兩個(gè)方面減少對(duì)單 片機(jī)資源的占用。
下面就A/D測(cè)量進(jìn)行分析:
U5-a/為壓力傳感器輸出的差分信號(hào),A = 64 為該差分信號(hào)的放大倍數(shù),U^f = IlRf為參考電 壓,ADC為Um-的模數(shù)轉(zhuǎn)換結(jié)果。24-bit的模數(shù) 轉(zhuǎn)換滿量程ADCmax = 16777215。由模數(shù)轉(zhuǎn)換原理 得如下關(guān)系:
數(shù),建立了模數(shù)轉(zhuǎn)換結(jié)果ADC與壓力P的線性關(guān) 系。線性系數(shù)k與激勵(lì)電流八無關(guān),減小了激勵(lì)電 流波動(dòng)對(duì)測(cè)量結(jié)果的影響;僅與電阻Rf有關(guān),測(cè)量 精度由電阻Rf決定,提高電阻Rf的精度和穩(wěn)定性 能夠增加測(cè)量精度和穩(wěn)定性,實(shí)現(xiàn)了相對(duì)測(cè)量。
3.3 光耦
在混合電路設(shè)計(jì)過程中,數(shù)字電路干擾比較 大,如果模擬電路與數(shù)字電路不隔離,就會(huì)導(dǎo)致模 擬電路受到干擾,影響測(cè)量精度。為了抑制這種干 擾一般采用的辦法是將模擬電路與數(shù)字電路分開 布局,模擬地和數(shù)字地最后在某一點(diǎn)短接。
上述辦法雖然可以減小數(shù)字電路對(duì)模擬電路 的干擾,卻難以消除這種干擾。為了使數(shù)字電路不 會(huì)干擾模擬電路,這里采用的辦法是通過光耦將數(shù) 字電路和模擬電路完全隔離。這種處理能夠降 低PCB設(shè)計(jì)的難度,消除數(shù)字電路對(duì)模擬電路的 干擾,增加測(cè)量精度。
將A/D轉(zhuǎn)換器CS5530歸為模擬電路,單片機(jī) 歸為數(shù)字電路。單片機(jī)通過光耦與CS5530進(jìn)行 通信。光耦一端連接CS5530的SDI,SDO,SCLK 引腳,另一端連接單片機(jī)引腳MCU_SDO,MCU— SDI,MCU_SCLK。這樣就完成了模擬電路部分與 數(shù)字電路部分之間信息的傳遞,實(shí)現(xiàn)了二者的完全 隔離。單片機(jī)通過光耦與CS5530連接原理圖如 圖5所示,圖中3.3V為單片機(jī)的電源電壓,5V為 CS5530的數(shù)字電源電壓。
3.4數(shù)字電路部分
在數(shù)字電路部分,RTC時(shí)鐘DS3231為單片機(jī) 提供時(shí)間基準(zhǔn)。當(dāng)壓力采樣時(shí)刻到來,單片機(jī)會(huì)通 過光耦啟動(dòng)CS5530的A/D轉(zhuǎn)換,并且保存當(dāng)前日
圖6發(fā)送流程圖 采用SIM900A通過GPRS網(wǎng)絡(luò)發(fā)送數(shù)據(jù)的過 程:首先設(shè)置網(wǎng)絡(luò),數(shù)值到串行Flash存儲(chǔ)M25P128 中。當(dāng)數(shù)據(jù)發(fā)送時(shí)刻到來,單片機(jī)啟動(dòng)SIM900A 與服務(wù)器進(jìn)行無線通信。單片機(jī)與外設(shè)連接原理 圖 如 圖 5 所 示 。
RTC時(shí)鐘DS3231的I2C接口和INT引腳會(huì) 分別連接到單片機(jī)的I/O 口和外部中斷引腳。通 過程序設(shè)置DS3231的INT引腳輸出周期為1S的 方波,觸發(fā)單片機(jī)中斷。
CS5530的SPI接口通過光耦與單片機(jī)的I/O 口連接。單片機(jī)可以發(fā)送命令給CS5530啟動(dòng)A/ D轉(zhuǎn)換,讀取A/D轉(zhuǎn)換結(jié)果和停止A/D轉(zhuǎn)換。
單片機(jī)與串行Flash M25P128通過SPI接口 連接,可以對(duì)其進(jìn)行讀、寫、擦除等操作。該Flash 的最小讀寫單元是1個(gè)字節(jié),可以提高存儲(chǔ)利用 率。在壓力數(shù)據(jù)采集完后將其保存在M25P128 中;當(dāng)無線發(fā)送時(shí),將壓力數(shù)據(jù)從M25P128讀出。
單片機(jī)通過UART串口發(fā)送AT命令給 SIM900A實(shí)現(xiàn)壓力數(shù)據(jù)的無線遠(yuǎn)傳功能。
4.系統(tǒng)軟件設(shè)計(jì)
4.1SIM900A程序設(shè)計(jì)
SIM900A內(nèi)嵌TCP/IP協(xié)議可以實(shí)現(xiàn)語音、 SMS和GPRS數(shù)據(jù)的傳輸。用戶可以通過AT命 令控制SIM900A。在AT命令操作過程中,當(dāng)?shù)?/span> 待握手超時(shí)后,即判斷AT命令發(fā)送失敗終止等 待。
采用SIM900A通過GPRS網(wǎng)絡(luò)發(fā)送數(shù)據(jù)的過 程:首先設(shè)置網(wǎng)絡(luò),與服務(wù)器建立TCP連接;然 后單片機(jī)發(fā)送壓力數(shù)據(jù);發(fā)送完成后,關(guān)閉該TCP 連接減輕服務(wù)器的負(fù)擔(dān)。由于無線網(wǎng)絡(luò)不穩(wěn)定,會(huì) 出現(xiàn)連接不上、中途掉線和TCP握手超時(shí)等現(xiàn)象,因此需要設(shè)置重傳機(jī)制。發(fā)送流程如圖6所示,采 取的措施是連續(xù)三次出現(xiàn)數(shù)據(jù)發(fā)送不成功就關(guān)閉 SIM900A,等到下次發(fā)送時(shí)刻到來繼續(xù)發(fā)送。
4.2系統(tǒng)程序框架設(shè)計(jì)
系統(tǒng)軟件的運(yùn)行框架如圖7所示,主要有兩部 分:主程序和1S中斷程序。
系統(tǒng)上電后,首先在主程序中進(jìn)行系統(tǒng)初始化 工作:R丁C時(shí)鐘DS3231、A/D轉(zhuǎn)換器CS5530、 Flash M25P128和UAR丁串口的初始化。然后單 片機(jī)進(jìn)入低功耗模式,暫停繼續(xù)執(zhí)行。DS3231輸 出的1S方波的上升沿會(huì)觸發(fā)單片機(jī)的1S中斷程 序。在1S中斷程序中,判斷壓力數(shù)據(jù)采集時(shí)刻是 否到來,一旦到來采集壓力數(shù)據(jù)保存到M25P128 中,喚醒單片機(jī)跳出低功耗模式。1S中斷程序結(jié) 束后,主程序繼續(xù)執(zhí)行,判斷壓力數(shù)據(jù)發(fā)送時(shí)刻是 否到來,一旦到來就通過SIM900A發(fā)送壓力數(shù)據(jù) 到服務(wù)器,然后進(jìn)入低功耗模式,就這樣不斷循環(huán)。 該款單片機(jī)進(jìn)入低功耗模式后會(huì)保持其引腳的上 升沿中斷和UAR丁串口發(fā)送、接收中斷的響應(yīng)。
壓力數(shù)據(jù)采集部分在1S中斷程序中進(jìn)行,壓 力數(shù)據(jù)發(fā)送部分在主程序中執(zhí)行,這樣使數(shù)據(jù)采集 的優(yōu)先級(jí)更高,保證了壓力數(shù)據(jù)采集的時(shí)間間隔恒 定不變。由于壓力數(shù)據(jù)采集和壓力數(shù)據(jù)發(fā)送都需 要使用M25P128,故需要做好對(duì)臨界資源的互斥 訪問。
上述處理方式使單片機(jī)在1S的大部分時(shí)間內(nèi) 處于低功耗模式,既滿足功能要求又避免了因判斷 時(shí)間是否到來而頻繁地讀取R丁C時(shí)鐘,節(jié)約了單
片機(jī)的軟件資源、降低了功耗。
5.結(jié)語
本文設(shè)計(jì)了恒流源電路、a/d測(cè)量電路和光 耦隔離電路,利用光耦完成模擬電路部分和數(shù)字電 路部分的通信,達(dá)到了這兩個(gè)部分有效隔離的目 的,在采樣率為100Sps情況下,實(shí)現(xiàn)了 16位的精 確測(cè)量;設(shè)計(jì)了數(shù)字電路部分,通過SIM900A實(shí)現(xiàn) 了壓力數(shù)據(jù)無線遠(yuǎn)傳的功能。該裝置已在自來水 管網(wǎng)中使用,測(cè)量精度達(dá)到0.2%。、數(shù)據(jù)發(fā)送穩(wěn)定。