本文介紹由TI 公司的MSP430F435 單片機和SAMES 的SA9904B 電能測量集成芯片組合成三相電能表的無用功率和有用功率等參量的采集系統。 硬件部分 MSP430F435 T1 公司的MSP430 系列單片機是一種具有超低功耗的功能強大的單片機。新開發的F 系列具有Flash 存儲器,在系統設計,開發調試及實際應用上比其他MCU 都有比較明顯的優勢。 1、超低功耗 MSP430F 系列運行在1MHZ 時鐘的條件下時,工作模式不同為0.1~400uA,工作電壓為1.8~3.6V。 2、 超強處理能力 8MIPS 的CPU 內核,16 位×16 位的硬件乘法器。 3、靈活的配置方法 MSP430 F 系列具有豐富的尋址方式,只需要27 條指令;片內寄存器數多,可以實現多種運算;有高效的查表處理方法。這一切保證了可以編譯出高效的程序。許多中斷,可以嵌套,使用方便。 4、片上集成外圍功能模塊 MSP430 F 系列集成了較多的片上外圍設備。這些外圍設備功能相當強大:12 位A/D,精密模擬比較器,硬件乘法器,2組頻率可以達到8MHZ 的時鐘模塊,2 個帶有許多捕獲比較的16 位定時器,看門狗功能,2個可實現異步和同步及多址訪問的串行通信接口,數十個可實現方向的設置及中斷功能的并行輸入,輸出端口,擁有SPI 和UASRT 通訊端口。 5、高效的開發方式 MSP430FX 系列具有FLASH 存儲器,這一特點使得它的開發工具相當簡便。利用單片機自身帶有的JTAG 接口或片內BOOTROM 內固化的默認的加載程序載入器Bootstrap 可以進行串口或并口,通過UART 將程序代碼裝入Flash 存貯器中。可以在一臺PC及一個小JATAG 控制器的幫助下實現程序的下載,方便的完成在線程序調試。 圖1 三相電能表采樣簡圖 SA9904BSAMES 公司的SA9904B專用與電能測量的集成芯片,提供多功能電力測量參數:功率因子有功率、無功功率、峰值電壓、峰值功率、電壓電流有效值等。SA9904B三相電路的各路電流和電壓完成采樣,有用功率和無用功率通過SA9904B的三路電流和三路電壓的乘積求得。在芯片內部完成數模轉換和相位延遲的調整,各路瞬間功率的數字量值存儲在二十四位寄存器中,最大值為十六進制的FFFF,對應于芯片的DO 端口其中對各路的寄存器的讀取,由各路地址存儲器的值確定,對應與芯片的 DI 端口。這些都通過芯片的SPI接口以串行數據方式與MCU 端口進行數據通訊。MCU 通過對地址的選擇來完成對芯片的數據讀取。 SA9904B 的SPI 接口分為DI,DO,SCK,CS,F50 端口,其中這些端口按圖2 的時序與MCU進行數據傳遞。在研究開發過程中在DI,DO的端口應該加一些濾波電路,防止線路中尖峰電平這可根據實際需要做些調整。其中各端口的輸出脈寬時間如表1 所示。DI,DO 上的數據只有在CS和SCK 為高電平時有效,DI 觸發與CS 的觸發同時,且DI 上數據在SCK 的高電平內完成,DO 上數據必須在SCK高電平時觸發,在下一個高電平階段內完成。F50 是頻率寄存器寄存電壓的頻率和是否缺相和倒相。DI 上數據與SA9904B上的數據寄存器的地址一致,即高三位為110,四,五位或0 或1,后四位為選擇代碼。各端口的時間延時參看表一。 軟件部分 對于MSP430 單片機,由TI 公司自帶的嵌入式軟件開發平臺IAR EMBEDDED WORKBENCH。該軟件可對開發系統進行在線調試,帶有C 編譯器,可采用通用的C 語言編程。 通過MSP430 的P6.6—P6.3 端口對SA9904B 芯片進行同步數據傳遞,其中P6.3 端口用于 DI,P6.4 用于SCK,P6.5 用于CS,P6.6 用于DO,P1.0 用于F50。程序流程如圖3 所示。 第一、SCK、CS 信號控制端口 MSP430 單片機的P6.4 發出方波,P6.5 置成高電平,DI 端口上寄存器地址數據才能有效,同時SA9904B 中有功功率寄存器和無功寄存器的數據值才能輸出。這兩個端口選為單片機的I/O 功能。 第二、DI 口數據傳輸 選擇SPI,四線制方式通訊,MSP430 的P6.6—P6.3 端口,發送16 位的地址數據流,以SCK 為時間源,主動方式,向SA9904B 發送數據。 P6SEL = cs +sck +si_1; //選擇SCK,CS 為I/O 功能,SI 為模塊功能。 P6DIR = cs_1 +sck_1 +si_1;// 選擇SCK,CS 置高,SI 為向外輸出。 my_flag1= tempadd0<<7; //左移7 位 my_flag2= my_flag2&0x8000;//取最高位向SA9904B 輸入數據。 if(my_flag2==0x8000) { P6OUT = cs_1+sck_1 +si_1; my_flag1= my_flag1<<1; P6OUT = cs_1 +0 +si_1;} //輸入1 ,SCK 置0 else {P6OUT = cs +sck +si_1; my_flag1= my_flag1<<1; P6OUT = cs +0 +si;} //輸入0 ,SCK 置0 my_flag2= my_flag1;} 其中一些參量為定義量。 這樣的輸出過程循環9 次,即把9 位數據從高位到低位輸進SA9904B 地址寄存器。 第三、DO 口數據傳輸 與DI 口數據傳輸相似,主要考慮的是在P6.6 端口上顯示有功和無功數據寄存器中的數據,24 位數據按從高位到低位傳輸次序讀出。 for (i=4;i>1;i--) {for (j=7;j>=0;j--) { P6SEL = cs +sck + so_1; //選擇SCK,CS 為I/O 功能,SO 為模塊功能。 P6DIR = cs_1 +sck_1 + so; // 選擇SCK,CS 向外,SO 為向內輸出。 P6OUT = cs_1 +sck_1 + 0; // 選擇SCK,CS 置高。 my_flag=(unsigned char)(P6IN);//讀取P6IN 寄存器中數值。 P6OUT = cs_1 +sck + 0; aa=(aa|(my_flag } if (i>2){aa=aa<<8;} } //左移8 位。 return aa; } 其中cs,sck,so 等參量的定義如cs6SEL |= 0x20 方式所示。 第四、F50 寄存器數據處理 該端口的處理方式與上述的 DO 和SI 一樣,但是F50 的數據信息比較豐富,其包括電壓的頻率數,是否有相序錯誤,是否有相位丟失,對電壓頻率的記數,是在電壓的上升沿,該寄存器記一,以次累加。 以上針對單片機的SPI通訊方式,簡要介紹了程序設計過程。可以看出對于SA9904B的操作主要集中在數據的輸入和輸出,同時控制數據傳輸時序。數據從高位到低位傳輸的次序,必須一位一位的讀取或輸入。采集了這些數據,還得對這些數據作相應復雜處理。鑒于430單片機的端口特殊性,先選擇功能,然后選擇傳輸方向,最后確定數據讀取或輸入。 結束語 目前使用電能集成芯片和單片機組合用于測量電能有一些方案,但是大多數是基于通過數模轉換電路來實現數據的采集。測量電能的集成芯片有很多種,微處理器也有許多種,本文基于TI 的MSP430 單片機與SA9904B組合,設計出性價比很高的三相多費率多功能表。該系統模塊僅限于電能的有用功和無用功等電力參量的采集,有用功和無用功等電力參量的采集是電表的中一個十分重要部分。計量電能的三相多費率多功能表還涉及其他許多功能模塊,包括諸如數據處理、數據顯示,數據存儲,數據通訊等模塊。 作者:平川,蘇卡歐電子股份有限公司,Email:pingchuan97@sohu.com |