王學(xué)水,池金波,王巖慶
(山東科技大學(xué) 電子通信與物理學(xué)院,山東 青島 266590)
隨著我國城鎮(zhèn)化進(jìn)程的持續(xù)推進(jìn),水資源的消耗量日益增加,實現(xiàn)水資源的有效管理和理性使用是社會可持續(xù)發(fā)展的必然選擇.對于安裝有多塊水表的用戶和單位,通過對水表的實時監(jiān)測,并把數(shù)據(jù)傳送到上位機(jī)進(jìn)行分析整理,可以及時發(fā)現(xiàn)并處理漏水和過量用水現(xiàn)象,能夠在有限人力成本支出條件下帶來可觀的經(jīng)濟(jì)效益和社會效益.
MSP430系列單片機(jī)由于其代碼執(zhí)行效率高,速度快,內(nèi)部外設(shè)豐富,性能穩(wěn)定,可在工業(yè)級運(yùn)行環(huán)境下可靠工作,特別是其超低功耗特性使其可以在電池供電條件下長時間運(yùn)行等特點(diǎn)使其越來越受重視,用它開發(fā)的產(chǎn)品也越來越多[1].本采集器設(shè)計中突出“單片”解決問題的理念,充分利用MSP430單片機(jī)豐富的內(nèi)部外圍模塊和可供選擇的多種低功耗模式,簡化了硬件結(jié)構(gòu),相對于通過外接相同功能的電路模塊構(gòu)成的系統(tǒng)大大提高了系統(tǒng)的穩(wěn)定性和抗干擾能力,同時降低了成本和功耗.
硬件總體結(jié)構(gòu)如圖1所示,由水表采集器、網(wǎng)絡(luò)轉(zhuǎn)化器和局域網(wǎng)組成.網(wǎng)絡(luò)轉(zhuǎn)換器通過RS-485總線掛接多塊水表采集器,將數(shù)據(jù)按照TCP/IP協(xié)議通過網(wǎng)絡(luò)交換機(jī)進(jìn)入局域網(wǎng),從而使任意連入該局域網(wǎng)的計算機(jī)都能在上位機(jī)軟件支持下實現(xiàn)數(shù)據(jù)的收發(fā)、匯總和分析[2].采集器中微控制器是MSP430F4152單片機(jī),周圍有水表采集電路、顯示電路、電源電路和通信接口.在有外部電源時,整個采集器由外部電源供電,采集器的水量信息采集、顯示和通信功能都處于正常工作狀態(tài),MCU通過外電源檢測電路實時檢測外電源有無.當(dāng)外電源掉電時采集器由法拉電容供電,MCU關(guān)閉通信和顯示功能,只保留水量采集功能,最大限度降低系統(tǒng)功耗.在法拉電容供電電壓小于2.2V時單片機(jī)內(nèi)部的SVS模塊產(chǎn)生一個POR復(fù)位信號,避免因為電壓過低時對FLASH操作導(dǎo)致內(nèi)部數(shù)據(jù)不可預(yù)測.
圖1 硬件系統(tǒng)總體結(jié)構(gòu)
下面以C語言加注釋說明的形式給出了系統(tǒng)的主函數(shù)程序.看門狗模塊設(shè)置成1S定時復(fù)位,看門狗計數(shù)器清零語句分布在各個中斷子程序和語句較多的函數(shù)中;定時器A0設(shè)置成1S定時中斷,在此中斷程序中首先檢測外部電源,據(jù)此屏蔽或使能某些模塊;在必要的初始化操作完成后只保留ACLK,進(jìn)入低功耗模式LPM3,各種功能函數(shù)都是在中斷子程序中實現(xiàn)的.這種實現(xiàn)方式與查詢方式相比,大大降低了功耗,增強(qiáng)了對事件的實時處理能力.
void main( void )
{
WDTCTL=WDT_ARST_1000; //看門狗1S定時
InitCLK(); //主系統(tǒng)時鐘1.114MHz;設(shè)置FLASH時序
發(fā)生器頻率1114/3=371KHz
SVSCTL=VLD0+VLD1+SVSON; //2.2V電源電壓監(jiān)測
InitialTimera0(); //初始化定時器A0
InitEX1(); //P1 P2端口外部中斷設(shè)置
FlashToRAM(); //數(shù)據(jù)由FLASH移入到RAM
InitConfig(); //設(shè)置系統(tǒng)波特率,水表分辨率,表號等參數(shù)
P6DIR&=~BIT3; //220V電源檢測端口設(shè)置成輸入狀態(tài)
_EINT(); //開總中斷
WDTCTL=WDT_ARST_1000; //看門狗計數(shù)器清零
LPM3; //CPU進(jìn)入低功耗模式3,只有ACLK工作
}
干簧管是干式舌簧管的簡稱,是一種有觸點(diǎn)的無源電子開關(guān)元件,如圖2(a)所示,具有結(jié)構(gòu)簡單,體積小便于控制等優(yōu)點(diǎn),其外殼一般是一根密封的玻璃管.管中裝有兩個鐵質(zhì)的彈性簧片電板,內(nèi)部充有惰性氣體.平時玻璃管中的兩個簧片是分開的.當(dāng)有磁性物質(zhì)靠近玻璃管時,在磁場磁力線的作用下,管內(nèi)的兩個簧片被磁化而互相吸引接觸,簧片就會吸合在一起,使結(jié)點(diǎn)所接的電路連通.外磁力消失后,兩個簧片由于本身的彈性而分開,線路也就斷開了.水表轉(zhuǎn)一圈,兩側(cè)干簧管各吸合一次,與地導(dǎo)通,當(dāng)端口接入上拉電阻時,干簧管吸合導(dǎo)致下降沿觸發(fā)外部中斷.據(jù)此,對同一塊水表的兩側(cè)干簧管一個接P1.X端口,另一個接P2.X端口,當(dāng)一個干簧管脈沖經(jīng)過后,另一個干簧管有脈沖發(fā)生時,軟件認(rèn)為水表轉(zhuǎn)了一圈,中斷子程序根據(jù)中斷標(biāo)志位對相應(yīng)水表數(shù)據(jù)進(jìn)行處理.為增強(qiáng)抗干擾能力,提高穩(wěn)定性,在端口上接入了濾波電容和二極管,如圖2(b)所示.
圖2 水量采集接口
以X水表為例,P1.X端口外部中斷程序和P2.X端口外部中斷程序共同完成水表X的水量采集,兩中斷子程序以變量“水表X標(biāo)志”相聯(lián)系,判斷相關(guān)操作是否執(zhí)行.下面是兩個中斷程序的程序框圖.通過兩個中斷處理程序進(jìn)行數(shù)據(jù)采集可以有效避免外界磁場造成的干擾,克服水錘現(xiàn)象造成的數(shù)據(jù)不準(zhǔn)確,保證了數(shù)據(jù)精度和可靠性.
圖3 水量采集程序框圖
為了顯示水表表號和對應(yīng)的用水量信息,采用數(shù)碼管驅(qū)動芯片TA6932驅(qū)動8位數(shù)碼管,圖3顯示了兩個數(shù)碼管的驅(qū)動電路,其余數(shù)碼管接法相同.MSP430F4152單片機(jī)通過P3.0,P3.1,P3.2端口向TA6932中寫入數(shù)據(jù).為了符合TA6932芯片的電平標(biāo)準(zhǔn)以保證數(shù)據(jù)的有效傳輸和盡可能降低功耗,在端口上接入接有+5V電源的上拉電阻.若使單片機(jī)輸出邏輯“1”,只要把相應(yīng)端口設(shè)置為輸入狀態(tài),此時對應(yīng)的MSP430單片機(jī)端口呈現(xiàn)高阻態(tài),上拉電阻把端口置高,TA6932芯片讀入邏輯“1”;單片機(jī)輸出邏輯“0”時,把相應(yīng)端口置0,上拉電阻的阻值保證了灌電流小于單片機(jī)管腳允許的最大灌電流;在空閑狀態(tài)時把端口設(shè)置為輸入,此時呈現(xiàn)高阻態(tài)進(jìn)而降低功耗.
圖4 TA6932和八位數(shù)碼管電路連接圖
因為所要檢測的水表數(shù)量較多,水表采集器的數(shù)量也較多且較分散,而RS-485總線具有設(shè)計成本低、網(wǎng)絡(luò)能力強(qiáng)、傳輸距離遠(yuǎn)、傳輸速度快等優(yōu)點(diǎn),所以設(shè)計中采用RS-485總線標(biāo)準(zhǔn)[3],電路圖如圖4所示.圖中所示“(+3.6V或+5V)”表示如果所選RS-485芯片工作電壓是+3.6V就接入V1(MS430單片機(jī)工作電壓),如果是+5V就接+5V,PCB板上預(yù)留有兩個電源的焊盤供選擇.因為該芯片也是TTL電平標(biāo)準(zhǔn),雖然與MSP430單片機(jī)的工作電壓不一樣,但TTL電平互相兼容,可以直接通信.9012和9013都是作為開關(guān)管使用,當(dāng)P5.6為“0”時,開關(guān)導(dǎo)通,V1給RS-485芯片供電;如果P5.6為“1”,在V1=+3.6V時,開關(guān)截止,RS-485芯片不工作,進(jìn)而降低功耗,如果V1=+5V,因為基極與發(fā)射極正偏,此時開關(guān)也可能導(dǎo)通,但此時有外電源供電,功耗問題可以忽略.
圖5 RS-485通信模塊接口電路
根據(jù)功能要求和所選芯片的電氣特性可以確定:TA6932芯片和MAX485芯片需要+5V電源供電,這部分電源通過外接220V交流電,通過變壓器變壓,二極管IN4007整流,電容濾波和7805芯片穩(wěn)壓最終得到穩(wěn)定的+5V電源,如圖5所示;MSP430F4152芯片和需要實時測量的水表所接上拉電阻部分需要+3.3V供電,這部分電源通過LM317芯片和合適阻值的調(diào)節(jié)電阻得到+3.6V左右的穩(wěn)定電源,匹配的調(diào)節(jié)電阻阻值計算得到的是339Ω[4],同時給法拉電容充電;當(dāng)外電源斷電時,法拉電容作為儲備電源給系統(tǒng)供電[5];在+5V與GND之間串聯(lián)接入兩個1MΩ電阻,P6.3端口接入兩電阻中間,用于檢測外電源有無.當(dāng)P6.3端口監(jiān)測到外電源掉電后,程序中自動保留水表監(jiān)測部分,而通信模塊和顯示模塊全部被禁用,系統(tǒng)功耗降至最低,從而最大限度延長儲備電源使用時間.當(dāng)外電源再次接通后,法拉電容再次充電,R40(10Ω)的作用是限流,防止法拉電容充電時電流過大將其燒壞,D5的作用是防止法拉電容向LM317電路漏電,造成電量損失.
圖6 電源電路
用水量信息需要實時監(jiān)測,實時保存,為了能使數(shù)據(jù)掉電不丟失,需要找到合適的存儲模塊.MSP430F4152單片機(jī)內(nèi)部集成了16K+256B的FLASH存儲空間,保存時間為10-100年不等,除去必要的程序代碼,數(shù)據(jù)表格存儲,尚有大量空間可供用戶存儲信息.FLASH存儲器分為主存儲區(qū)(main memory)和信息存儲區(qū)(information memory),主存儲區(qū)一段(segment)是512Byte,信息存儲區(qū)一段(segment)是128Byte,FLASH是按段擦除的,擦除次數(shù)為100-100000次[6].FLASH存儲器在數(shù)據(jù)存儲時只能把“1”改寫成“0”,不能把“0”改寫成“1”,只有擦除操作能把整段(segment)改寫成“0”.據(jù)此,用“0”的個數(shù)對應(yīng)于水表轉(zhuǎn)的圈數(shù),把擦除次數(shù)降到最低,理論上實現(xiàn)了有限擦除次數(shù)上的無限數(shù)據(jù)存儲,這種方法用在記錄水表脈沖個數(shù)上很適用.
以字節(jié)為單位向FLASH存儲器中寫入數(shù)據(jù)、讀出數(shù)據(jù)和以段為單位對FLASH進(jìn)行擦除是本程序有關(guān)FLASH存儲器應(yīng)用中的基礎(chǔ)和核心[7].對于擦除完尚未寫入數(shù)據(jù)的任意段,讀其中任意字節(jié)都是“FF”,即該字節(jié)中的8位全是“1”.如果忽略數(shù)據(jù)的具體意義,只關(guān)注和控制字節(jié)中“0”的個數(shù),當(dāng)“0”的個數(shù)逐次增1時是很容易控制的(讀出該數(shù)后左移一位再存入原地址字節(jié)中).把FLASH中的某一未使用的段中的“0”(bit)的個數(shù)對應(yīng)于某塊水表從被采集以來轉(zhuǎn)的圈數(shù)(乘以分辨率就是水量),水表轉(zhuǎn)一圈該段中“0”的個數(shù)加1,以位(bit)為單位實現(xiàn)該段中“0”的個數(shù)遞增也就實現(xiàn)了用水量的數(shù)據(jù)遞增和存儲.系統(tǒng)上電復(fù)位時,從水表對應(yīng)的FLASH存儲器段中讀出“0”的個數(shù),乘以分辨率后存入RAM中該水表的對應(yīng)變量中.以上是本設(shè)計中數(shù)據(jù)存儲的算法思想,理論上和實踐中都是可行的.
NETCOM-10SI/MI 是廣州致遠(yuǎn)電子有限公司開發(fā)的一款工業(yè)級以太網(wǎng)串口轉(zhuǎn)換設(shè)備,它內(nèi)部集成了TCP/IP 協(xié)議棧,用戶利用它可以輕松實現(xiàn)嵌入式設(shè)備的網(wǎng)絡(luò)功能,節(jié)省人力物力和開發(fā)時間,使產(chǎn)品更快的投入市場,增強(qiáng)競爭力.該產(chǎn)品用于串口與以太網(wǎng)之間的數(shù)據(jù)傳輸,可方便的為串口設(shè)備增加以太網(wǎng)接口.可用于串口設(shè)備與PC 機(jī)之間,或者多個串口設(shè)備之間的遠(yuǎn)程通信[8].
本采集器是基于MSP430F4152單片機(jī)的簡單系統(tǒng),以水表水量采集功能為中心,以計算機(jī)技術(shù)為基礎(chǔ)進(jìn)行數(shù)據(jù)處理和傳輸,以軟硬件相結(jié)合的方式實現(xiàn)預(yù)設(shè)功能,實際使用中性能穩(wěn)定,運(yùn)行良好,達(dá)到了設(shè)計目的.圖6顯示了應(yīng)用本采集系統(tǒng)對山東科技大學(xué)B1公寓樓1號水表的日用水量監(jiān)測的統(tǒng)計結(jié)果,通過各個時間段的用水量可以判斷是否有管道漏水現(xiàn)象,對其及時發(fā)現(xiàn)并處理,可有效杜絕浪費(fèi).對于小批量生產(chǎn),使用本設(shè)計有其優(yōu)勢,如容易實現(xiàn),開發(fā)周期短.對于大批量應(yīng)用中,可以進(jìn)一步使用MSP430F4152單片機(jī)內(nèi)部LCD段式液晶驅(qū)動模塊驅(qū)動段式液晶屏取代數(shù)碼管顯示,有降低功耗的意義也有節(jié)約成本的意義.
圖7 B1公寓1號水表日用水量統(tǒng)計直方圖
[1]馬賀凱.超低功耗熱量表的研制[D].青島:山東科技大學(xué),2011:12-14.
[2]張志偉,王學(xué)水,王巖慶.基于單片機(jī)的樓宇供暖節(jié)能系統(tǒng)的設(shè)計[J].單片機(jī)開發(fā)與應(yīng)用,2009,25(9-2):95-96,159.
[3]程凱,孫克怡,曹偉,等.RS-485總線理論的應(yīng)用與分析[J].中國海洋大學(xué)學(xué)報,2003,5:753-758.
[4]馮平,張治中.基于可調(diào)式穩(wěn)壓器LM317 的直流穩(wěn)壓電源[J].電子測試.2009,(5):70-73,89.
[5]林茂疆,鄢萍,易潤忠,等.基于法拉電容的智能儀器儀表掉電保護(hù)方案[J].電源技術(shù),2010,34(12):1292-1295.
[6]MSP430x4xx Family User's Guide[K].Texas Instruments.http://www.ti.com.
[7]沈建華,楊艷琴.MSP430系列16位超低功耗單片機(jī)原理與實踐[M].北京:北京航空航天大學(xué)出版社,2008:211-220.
[8]王巖慶.高校用水計量與遠(yuǎn)傳管理系統(tǒng)的設(shè)計[D].青島:山東科技大學(xué),2010:25-30.