作者EMAIL: pingchuan97@sohu.com 摘要 本文介绍由TI 公司的MSP430F435 单片机和SAMES 的SA9904B电能测量集成芯片组合成三相电能表的无用功率和有用功率等参量的采集系统。 关键词 MSP430 SA9904B 采样 1、前言 目前新型的电子式多功能电能表已逐渐取代老式电子电能表。由于模数转换电路采样精度,及微处理器的价格,软件的开发难度,存在不少问题和难度。本文基于德州仪器的MSP430F435单片机,介绍采用SAMES的SA9904B高集成度的采样芯片进行三相电能的有用功和无用功等参量的采集,取代传统的数模采样电路。 三相电能表功率参量的采样是一个十分重要的问题,其实现方式决定了电能表的测量精度及相应软件开发的难易程度,产品的整体开发成本的高低。 2、系统介绍 电能表的采样方式及采用什么MCU有多种方案,不少已经投入实际使用。但是基于MSP430 单片机采用高度集成的采集芯片SA9904B进行电流和电压采样的电能表还没有广泛投产使用。尽管美国TI公司给出了电能表采样方案,但是其采样电路比较复杂,难于调试。没有采用专用的电能表的采用芯片。 图1是多功能三相电能表的采样部分,合理的把TI 的MSP430单片机和SAMES的 SA9904B集合,发挥各自的优势,避开复杂的采样电路的设计,采用现成的高精度采样芯片。 2.1、硬件部分: MSP430F435 T1公司的MSP430系列单片机是一种具有超低功耗的功能强大的单片机。新开发的F系列具有Flash存储器,在系统设计,开发调试及实际应用上比其他MCU都有比较明显的优势。 1、超低功耗 2、 超强处理能力 3、灵活的配置方法 4、片上集成外围功能模块 5、 高效的开发方式 可以在一台PC及一个小JATAG控制器的帮助下实现程序的下载,方便的完成在线程序调试。 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 是频率寄存器 2.2、软件部分 对于MSP430单片机,由TI 公司自带的嵌入式软件开发平台IAR EMBEDDED WORKBENCH。该软件可对开发系统进行在线调试,带有C 编译器,可采用通用的C语言编程。 1、 软件流程图 通过MSP430的P6.6—P6.3端口对SA9904B芯片进行同步数据传递,其中P6.3端口用于 DI,P6.4 用于SCK,P6.5用于CS,P6.6用于DO,P1.0用于F50。 程序流程如图3所示。 1、 主控程序解析 在该控制采集系统中涉及到单片机的SPI 串行同步通讯接口,计时器TIME_A。 其中DI、DO、F50端口是SPI端口进行串行数据通讯,接收SA9904B寄存器中的数据,SCK、CS 是通过计时器TIME_A向SA9904B发出方波脉冲,触发SA9904B工作。 第一、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<<j)); //存储数据。 my_flag=0x00; } if (i>2){aa=aa<<8;} } //左移8位。 return aa; } 其中cs,sck,so等参量的定义如cs:P6SEL |= 0x20 方式所示。 第四、F50寄存器数据处理 该端口的处理方式与上述的 DO和SI一样,但是F50的数据信息比较丰富,其包括电压的频率数,是否有相序错误,是否有相位丢失,对电压频率的记数,是在电压的上升沿,该寄存器记一,以次累加。 以上针对单片机的SPI通讯方式,简要介绍了程序设计过程。可以看出对于SA9904B的操作主要集中在数据的输入和输出,同时控制数据传输时序。数据从高位到低位传输的次序,必须一位一位的读取或输入。采集了这些数据,还得对这些数据作相应复杂处理。鉴于430单片机的端口特殊性,先选择功能,然后选择传输方向,最后确定数据读取或输入。 2、 结语 目前使用电能集成芯片和单片机组合用于测量电能有一些方案,但是大多数是基于通过数模转换电路来实现数据的采集。测量电能的集成芯片有很多种,微处理器也有许多种,本文基于TI 的MSP430 单片机与SA9904B组合,设计出性价比很高的三相多费率多功能表。该系统模块仅限于电能的有用功和无用功等电力参量的采集,有用功和无用功等电力参量的采集是电表的中一个十分重要部分。计量电能的三相多费率多功能表还涉及其他许多功能模块,包括诸如数据处理、数据显示,数据存储,数据通讯等模块。 作者EMAIL: pingchuan97@sohu.com |