基于MSP430的三相电能表SA9904B采集系统投诉举报
基于MSP430的三相电能表SA9904B采集系统
基于MSP430的三相电能表SA9904B采集系统.doc
点击下载文
文档为doc格式
下载本文到电脑,方便收藏和打印
1、下载的文档为doc格式,下载后可用Word文档或者wps打开进行编辑;
2、若打开文档排版布局出现错乱,请安装最新版本的word/wps软件;
3、下载时请不要更换浏览器或者清理浏览器缓存,否则会导致无法下载成功。
4、下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。
基于MSP430的三相电能表SA9904B采集系统基于MSP430的三相电能表SA9904B采集系统

基于MSP430的三相电能表SA9904B采集系统

基于MSP430的三相电能表SA9904B采集系统

摘要本文介绍由TI公司的MSP430F435单片机和SAMES的SA9904B电能测量集成芯片组合成三相电能表的无用功率和有用功率等参量的采集系统。关键词MSP430SA9904B采样1、前言目前新型的电子式多功能电能表已逐渐取代老式电子电能表。由于模数转换电路采样精度,及微处理器的价格,软件的开发难度,存在不少问题和难度。本文基于德州仪器的MSP430F435单片机,介绍采用SAMES的SA9904B高集成度的采样芯片进行三相电能的有用功和无用功等参量的采集,取代传统的数模采样电路。三相电能表功率参量的采样是一个十分重要的问题,其实现方式决定了电能表的测量精度及相应软件开发的难易程度,产品的整体开发成本的高低。2、系统介绍电能表的采样方式及采用什么MCU有多种方案,不少已经投入实际使用。但是基于MSP430单片机采用高度集成的采集芯片SA9904B进行电流和电压采样的电能表还没有广泛投产使用。尽管美国TI公司给出了电能表采样方案,但是其采样电路比较复杂,难于调试。没有采用专用的电能表的采用芯片。图1是多功能三相电能表的采样部分,合理的把TI的MSP430单片机和SAMES的SA9904B集合,发挥各自的优势,避开复杂的采样电路的设计,采用现成的高精度采样芯片。2.1、硬件部分:MSP430F435T1公司的MSP430系列单片机是一种具有超低功耗的功能强大的单片机。新开发的F系列具有Flash存储器,在系统设计,开发调试及实际应用上比其他MCU都有比较明显的优势。1、超低功耗MSP430F系列运行在1MHZ时钟的条件下时,工作模式不同为0.1~400uA,工作电压为1.8~3.6V。2、超强处理能力8MIPS的CPU内核,16位×16位的硬件乘法器。3、灵活的配置方法MSP430F系列具有丰富的寻址方式,只需要27条指令;片内寄存器数多,可以实现多种运算;有高效的查表处理方法。这一切保证了可以编译出高效的程序。许多中断,可以嵌套,使用方便。4、片上集成外围功能模块MSP430F系列集成了较多的片上外围设备。这些外围设备功能相当强大:12位A/D,精密模拟比较器,硬件乘法器,2组频率可以达到8MHZ的时钟模块,2个带有许多捕获比较的16位定时器,看门狗功能,2个可实现异步和同步及多址访问的串行通信接口,数十个可实现方向的设置及中断功能的并行输入,输出端口,拥有SPI和UASRT通讯端口。5、高效的开发方式MSP430FX系列具有FLASH存储器,这一特点使得它的开发工具相当简便。利用单片机自身带有的JTAG接口或片内BOOTROM内固化的默认的加载程序载入器Bootstrap可以进行串口或并口,通过UART将程序代码装入Flash存贮器中。可以在一台PC及一个小JATAG控制器的帮助下实现程序的下载,方便的完成在线程序调试。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,后四位为选择代码。各端口的时间延时参看表一。2.2、软件部分对于MSP430单片机,由TI公司自带的嵌入式软件开发平台IAREMBEDDEDWORKBENCH。该软件可对开发系统进行在线调试,带有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置0else{P6OUT=cs+sck+si_1;my_flag1=my_flag1<<1;P6OUT=cs+0+si;}//输入0,SCK置0my_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=(unsignedchar)(P6IN);//读取P6IN寄存器中数值。P6OUT=cs_1+sck+0;aa=(aa|(my_flag<2){aa=aa<<8;}}//左移8位。returnaa;}其中cs,sck,so等参量的定义如cs:P6SEL|=0x20方式所示。第四、F50寄存器数据处理该端口的处理方式与上述的DO和SI