基于ARM單片機的網(wǎng)絡化電能表設計
引言
目前,測量儀表正向網(wǎng)絡化方向發(fā)展,每一個單獨的嵌入式儀表都將成為Internet上的一個節(jié)點。本系統(tǒng)在ARM+RTOS的方式下實現(xiàn)了電子式電能表的網(wǎng)絡化,硬件平臺以ARM核微控制器LPC2104為核心,軟件系統(tǒng)則是在mC/OS-II操作系統(tǒng)下開發(fā)的。
系統(tǒng)硬件設計
LPC2104是Philips公司推出的一款以ARM7TDMI-S為核心的32位微控制器。LPC2104內(nèi)部集成了很多功能,包括128k字節(jié)的高速Flash存儲器、雙UART、多個32位定時器,以及SPI、I2C串行接口和RTC等。其中UART1帶有完全的調(diào)制解調(diào)器接口,可以用于網(wǎng)絡產(chǎn)品。
CS5460是Cirrus Logic 公司的單相功率/電能計量芯片,帶有串行接口。CS5460集成度很高,里面包含了兩個△∑ADC、高/低通數(shù)字濾波器、能量計算單元、串行接口和數(shù)字—頻率轉(zhuǎn)換器等。CS5460將它測得和計算出的結(jié)果分別保存在它的各個寄存器中,而能量值則通過脈沖輸出給CPU,還可以驅(qū)動計度器。
該網(wǎng)絡化儀表的工作原理是:首先由采樣電路將輸入的大電流/電壓轉(zhuǎn)化為CS5460能夠接收的小電壓信號。CS5460根據(jù)采樣的電流/電壓計算出電能,然后將電流、電壓、電能和功率等通過三線雙向串行接口傳送給CPU(能量值通過脈沖輸出),CPU根據(jù)鍵盤的輸入指令在液晶顯示器上顯示結(jié)果或者通過串口將結(jié)果傳送到Internet上。LPC2104本身既作為CS5460的控制器,又作為嵌入式網(wǎng)關,實現(xiàn)了電能表的遠程通信功能。本系統(tǒng)的硬件結(jié)構(gòu)如圖1所示。
CS5460只能接收小于150mV的小電壓信號,在采樣電路部分應選擇適當?shù)碾娏?電壓互感器,將輸入的電流/電壓轉(zhuǎn)換到CS5460能夠接收的電壓范圍。
在電壓采樣電路中,取入的電壓經(jīng)過電壓互感器降壓、隔離,然后通過低通濾波。最后端的電容C1表現(xiàn)出很大的阻抗,用于取電壓。電流采樣電路比電壓采樣電路多了取樣電阻R5。R5用于將從電流互感器出來的電流轉(zhuǎn)換為電壓。采樣電路如圖2、圖3所示。
CS5460與LPC2104以標準SPI接口,非常容易。由于CS5460是以定寬變頻脈沖輸出能量值,因此將其能量輸出引腳與LPC2104的一個外部中斷引腳相連,用來收集能量值。
由于電能的累計值以及校準常數(shù)需要保存到EEPROM中,所以擴展一片24C16用來保存這些數(shù)值。LPC2104本身帶有I2C接口,擴展EEPROM非常容易。
LPC2104的UART1口帶有完全的調(diào)制解調(diào)器接口。由于電能表接入Internet所需要傳輸?shù)臄?shù)據(jù)量不大,因此可以選用低速的modem芯片,這里選用OKI公司的MSM7512B。MSM7512B是1200bps半雙工的FSK調(diào)制解調(diào)器。采用3~5V單電源工作,功耗較低。
另外需要注意的是CS5460輸入/輸出信號均為5V,而LPC2104的信號為3.3V,因此兩者之間需要加上電平轉(zhuǎn)換電路。
系統(tǒng)軟件設計
ARM應用系統(tǒng)可以基于嵌入式操作系統(tǒng)平臺,也可以不使用操作系統(tǒng),直接通過啟動代碼啟動。為了方便實現(xiàn)網(wǎng)絡化功能,本系統(tǒng)選擇基于嵌入式操作系統(tǒng)平臺的方式。嵌入式實時操作系統(tǒng)mC/OS-II在裁剪之后僅有50KB左右,考慮到LPC2104內(nèi)部就有128K的Flash存儲器,故可以選擇在其中移植mC/OS-II。
首先需要將mC/OS-II操作系統(tǒng)移植到LPC2104微處理器上。為了便于移植,mC/OS-II的源代碼大部分是用C語言寫的,移植過程中只需要重寫少數(shù)幾個與處理器直接相關的文件就可以了。 LPC2104上移植mC/OS-II已經(jīng)有成功的實例,可以從網(wǎng)上得到。
mC/OS-II本身并不支持網(wǎng)絡功能。為了實現(xiàn)電能表的網(wǎng)絡化,還需要移植TCP/IP協(xié)議。由于此嵌入式系統(tǒng)本身的功能比較單一,因此可以選擇簡單的嵌入式協(xié)議棧,將不需要用到的協(xié)議去掉。由于電能表需要傳輸?shù)臄?shù)據(jù)量不大,但可靠性要求較高,因此在傳輸層應該選用可靠數(shù)據(jù)傳輸控制協(xié)議TCP,在網(wǎng)絡層選用基本數(shù)據(jù)傳輸協(xié)議IP。
軟件部分主要實現(xiàn)以下功能:
1. 數(shù)據(jù)采集及計算。計算部分主要由CS5460完成,當發(fā)出啟動轉(zhuǎn)換的命令之后,延時適當?shù)臅r間,就可以從相應的寄存器中讀出所需要的測量值。電能值是以脈沖形式傳送給CPU的。有效功率的測量是通過對1秒的脈沖進行計數(shù)實現(xiàn)的。例如可以編程控制CS5460每轉(zhuǎn)換10焦耳的能量時產(chǎn)生一個脈沖,然后以脈沖計數(shù)乘以10計算出有效功率。每隔幾分鐘,電流累計能量會被寫入24C16串行EEPROM。這樣可以保存經(jīng)過的時間內(nèi)的所有能量。 校準常數(shù)也保存在24C16中。當系統(tǒng)重新上電的時候,這些校準常數(shù)會被從24C16中讀出并且寫回CS5460。
2. 按鍵管理及液晶顯示。由于LPC2104的總線不開放,給驅(qū)動液晶顯示帶來一定的不便,但可以以普通I/O口模擬總線時序進行操作。
3. 系統(tǒng)校準。在校準之前,應該使CS5460處于有效操作狀態(tài),并且通過SPI接收有效命令,清除狀態(tài)寄存器中的數(shù)據(jù)準備就緒位(DRDY);然后,給電壓和電流的輸入通道施加相應的校準信號;接著,通過SPI接口向CS5460發(fā)送8位的校準命令字;最后,在相應的校準寄存器中保存校準結(jié)果,并且置位DRDY位以通知CS5460校準結(jié)束。校準模塊主要提供一個管理界面,用戶可以通過這個界面對電流表的電壓、電流、功率等參數(shù)進行校正,并把校正后的數(shù)據(jù)保存。
4. 網(wǎng)絡通信。需要發(fā)出AT指令對modem進行控制,并且產(chǎn)生符合通信協(xié)議的數(shù)據(jù)流。發(fā)送數(shù)據(jù)時,應用程序發(fā)送的數(shù)據(jù)經(jīng)TCP/IP協(xié)議棧封裝之后,再利用下層的PPP協(xié)議封裝為PPP幀,然后通過異步串行口驅(qū)動程序?qū)PP幀發(fā)送出去。接收數(shù)據(jù)時,由異步串口驅(qū)動程序負責接收數(shù)據(jù)。然后由TCP模塊和IP協(xié)議模塊對數(shù)據(jù)進行處理,將用戶數(shù)據(jù)交給應用程序。
mC/OS-II屬于搶先式剝奪型實時內(nèi)核,永遠保證優(yōu)先級最高的就緒任務的運行。mC/OS-II可以完成各任務之間的調(diào)度和同步,協(xié)調(diào)硬件資源。各個任務之間通過信號量、郵箱、消息隊列等通信機制進行數(shù)據(jù)共享及任務通信。基于mC/OS-II嵌入式操作系統(tǒng)平臺編程的關鍵在于任務的劃分以及優(yōu)先級的確定。該系統(tǒng)的任務劃分如圖4所示。
各任務的優(yōu)先級為:過流過壓保護gt;數(shù)據(jù)處理gt;實時時鐘gt;數(shù)據(jù)存儲gt;遠程通信。
結(jié)語
本文介紹的網(wǎng)絡化電能表軟件系統(tǒng)是在嵌入式操作系統(tǒng)平臺下開發(fā)的,便于單個任務調(diào)試,單個任務的錯誤不會導致整個系統(tǒng)的崩潰。傳統(tǒng)的嵌入式網(wǎng)絡產(chǎn)品需要專門的網(wǎng)關以實現(xiàn)數(shù)據(jù)的網(wǎng)絡傳輸,本系統(tǒng)則實現(xiàn)了嵌入式網(wǎng)關與測量控制部分的一體化,這是以后實現(xiàn)嵌入式產(chǎn)品上網(wǎng)的趨勢
電能表相關文章:電能表原理
評論