基于ZigBee技术的电量数据传输系统
扫描二维码
随时随地手机看文章
引言
在电气试验中常常需要采集电压、电流、有功功率、无功功率、功率因数等电量数据进行分析处理,这些电量参数对电气设备有着至关重要的意义。目前,一般通过电量采集模块采集电量参数后显示在LCD上,然后人为记录数据或者通过有线的方式将数据传到上位机上。常规人为记录数据的方式不利于数据的分析和处理,而在设备较多和环境复杂的情况下通过有线传输数据的方式不便布线且成本较高。针对上述缺陷,本文介绍了一种利用ZigBee无线技术完成电量实时传输到上位机的系统来解决这一问题。
ZigBee技术是近些年发展起来的一种无线通信技术,属于物联网技术的一种。其包括协调器、汇聚节点、传感器节点三个部分。ZigBee技术用于快速、安全、高效的无线传输数据。其传输数据具有低杂度、自组网、低功耗、低成本等优点,能用于电气试验中的电量数据传输。同时,由于ZigBee的自组网功能,可以用于一定区域内多台设备的信息交换,并能将数据通过无线网络传输到上位机进行分析。
本系统通过数据采集模块完成多台设备电量数据采集,并通过ZigBee模块将数据传输到上位机处理分析。系统根据所选ZigBee模块规格不同,可完成从几十米到几公里内的数据传输且成本较低。
1系统总体设计方案
本系统用到的硬件设备有ZigBee(CC2530模块)、带SPI通信接口的电量采集模块、串口设备、PC机;软件工具有
IAREmbeddedWorkbench、串口调试助手等。系统结构图如图1所示。
电量采集模块带SPI通信接口。该模块由电压电流信号采集模块、计量芯片、MCU模块、通信、模块、LCD显示模块、EEPROM等组成。
CC2530利用IEEE802.15.4通信协议,工作频段是2.4GHz。CC2530采用16-bitsCRC来确保数据的正确性;使用带应答的数据传输方式来确保数据传输目的地址的正确性;采用星型网络确保数据可以沿着不同的传输路径从源地址到达目的地址。CC2530结合了德州仪器的黄金单元ZigBee协议栈(Z-Stack),为开发者自己搭建无线传感网络提供了一个相对完善的ZigBee解决方案。
计量芯片采用ATT7022B计量芯片。ATT7022B芯片是一种高精度专业计量芯片,适用于三相三线、三相四线测量电能,能测量各相及三相的有功功率、无功功率、功率因数、相角、频率等参数,有纯软件校表功能。
MCU模块选用DSPTMS320F28335。TMS320F28335具有精度高、成本低、功耗小、性能高、外设集成度高、数据以 及程序存储量大、A/D转换更精确快速等优点,保证了系统 的可靠性。
数据传输均通过SPI通信接口完成,SPI总线具有:全 双工,三线同步传送;可控的主机位传送频率,时钟极性和 相位;发送完成中断标志;写冲突保护标志等特点,能可靠 地与MCU通信。
2硬件电路设计
2.1电量采集电路设计
电量采集电路包括电压采样部分和电流采样部分。电压 采样采用电阻分压输入(零线接参考输出)的方法,将零线 VN与参考电压的REFO连接,方便地实现了将交流采样信 号叠加在参考电压(2.4 V)上。电压采样电路图如图2所示。
电流采样电路采用差分输入法,通过互感器来完成。从 电流互感器二次侧取出信号接到IA1、IA2端口,输入电阻和 电容构成了一个抗混叠滤波器。在设计电路时一定要保证电阻 电容高度对称性,才能保证输入信号清晰无谐波。电流采样 差分输入电路图如图3所示。
2.2计量模块设计
计量模块包括计量芯片、MCU单元、通信接口模块、LCD显示模块、EEPROM、晶振等。计量芯片包括电压电流模拟信号采样模块、数字信号处理模块、脉冲生成器、通信 接口模块、电源管理模块、温度传感器和参考电压模块等。计量模块结构图如图4所示。
如图4所示,三相电压电流接入到电压电流采集模块, 该模块把交流电压电流转换成小电压和电流信号。然后将这些 小电压和电流信号输入到计量芯片中,计量芯片将信号处理后 送入芯片自带的DSP模块进行计量,计量结果通过SPI端口送入 MCU 分析整理,整理结果由通信模块输出。
2.3 CC2530 模块
在本系统中,CC2530 ZigBee模块用于数据的接收和发 送。为数据和上位机的无线通信提供通道。CC2530模块主要 包括天线、核心板、扩展口、仿真接口、电源接口、ADC接口、 RS232接口等。CC2530硬件电路图如图5所示。
3软件设计
软件设计包括计量模块SPI接口的数据写入和输出、 CC2530模块数据接收和发送、CC2530与上位机通信。软件 设计流程图如图6所示。
3.1 SPI接口的数据写入
SPI接入口程序是在VC++环境中编译的。在软件设计 的过程中需要考虑占空比、频率、波特率等因素。为了使计 量更精准,选择24.576 MHz的晶振,任一次写操作约5 us。 具体流程图如图6所示。
SPI接口写入程序:
WriteSpi(com data)
{
;Enable SPI
CS=1 ;//初始CS为高电平
SCLK=0 ; //初始SCLK为低电平
CS=0 ; //CS变为低电平
;Send 8 bits Command to SPI
//把8个比特的命令输入SPI
for(n=7 ; n>=0 ; n--) // 经过 32 个时钟脉
冲CS由低到高完成
SPI的写入
{
SCLK=1 ;
DIN=Com.n ;
Nop
Nop
Nop
SCLK=0 ;
}
;Disable SPI
CS=1 ;
// CS 为高电平 SPI 停止写入
}
SPI 接口与 CC2530 ZigBee 模块连接,把采集到的数据发送给 CC2530 协调器模块,ZigBee 自带协议栈,协议定义了一系列的通信标准,通信双方按照这一标准进行正常的数据收发。对于使用者来说,只需要对应用层进行 C 语言程序开发实现所需要的功能即可。
3.2串口收发数据程序
串口是开发板和上位机交互的重要工具,ZigBee协议栈 中对串口初始化所需要的函数进行了定义。使用串口的基本步 骤有两步:第一是初始化串口,包括设置波特率、中断等;第 二则是向发送缓冲区发送数据或接收数据。下面是其中的主 要程序:
void SerialApp_Init( uint8 task_id )
{
uartConfig.callBackFunc=SerialApp_CallBack ;
//调用SerialApp_CallBack函数,对串口内容进行查询
if((event&(HAL_UART_RX_FULL|HAL_UART_RX_ ABOUT_FULL|HAL_UART_RX_TIMEOUT)) &&
# i f ( SERIAL_APP_LOOPBACK
(SerialApp_TxLen < SERIAL_APP_TX_MAX))
#else
!SerialApp_TxLen)
#endif
{
SerialApp_Send();
//调用串口发送函数,将从串口接受到的数据,发送出去
#if SERIAL_APP_LOOPBACK
// 初始化时,SERIAL_APP_LOOPBACK=false,所以不 执行if这个预编译,转到else去执行
if(afStatus_SUCCESS!=AF_DataRequest(&SerialApp_
TxAddr))
//通过AF_DataRequest()函数,将数据从空中发送出去
#endif
该程序可在IAR Embedded Workbench软件中运行,并 在串口助手中观察数据的传输情况。通过实验得到的仿真图如 图7所示,上位机界面如图8所示。
通过编译器把协议栈中的程序烧入到CC2530模块中, 通过改变跳线位置把CC2530分为路由器和协调器。选用 COM3和COM4这两个端口,两个端口选择同样的波特率, 均为38 400 b/s。如图8所示,串口助手选择自动发送数据时, 电量采集模块每发出一个数据都会很快地通过串口发送到上 位机处理,实现了电量数据的无线传输。
图8上位机界面
4结语
本文介绍了一种基于ZigBee技术的电量数据传输系统, 可以用于多台电气设备数据的远程采集,传输安全可靠。更重 要的是,ZigBee的自组网和无线传输功能使得数据能无线传 输,解决了不易布线环境下数据采集问题。
本系统不仅可用于电量的采集,还可以通过改变初始的 采集模块来完成其他数据的采集和传输,只要采集模块带有 SPI通信接口即可。ZigBee模块自带的协议栈方便了开发者通 过改变程序和选择合适的传感器完成不同类型的电量数据采 集和传输。系统的主要缺点是ZigBee不适用于大量数据传输。
20211117_619506cf67029__基于ZigBee技术的电量数据传输系统