本文介绍由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 接口或片内BOOT ROM 内固化的默认的加载程序载入器Bootstrap 可以进行串口或并口,通过UART 将程序代码装入Flash 存贮器中。可以在一台PC 及一个小JATAG 控制器的帮助下实现程序的下载,方便的完成在线程序调试。
SA9904B
SAMES 公司的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<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 单片机的端口特殊性,先选择功能,然后选择传输方向,最后确定数据读取或输入。
结束语
目前使用电能集成芯片和单片机组合用于测量电能有一些方案,但是大多数是基于通过数模转换电路来实现数据的采集。测量电能的集成芯片有很多种,微处理器也有许多种,本文基于TI 的MSP430 单片机与SA9904B 组合,设计出性价比很高的三相多费率多功能表。该系统模块仅限于电能的有用功和无用功等电力参量的采集,有用功和无用功等电力参量的采集是电表的中一个十分重要部分。计量电能的三相多费率多功能表还涉及其他许多功能模块,包括诸如数据处理、数据显示,数据存储,数据通讯等模块。