电表级单相计量芯片RN8209C在Zigbee和Z-Wave智能家居系统中的应用

1 芯片介绍
1.1 芯片特性
1.1.1 计量

  • 提供三路Σ-△ADC
  • 有功电能误差在8000:1动态范围内<0.1%,支持IEC62053-22:2003标准要求
  • 无功电能误差在8000:1动态范围内<0.1%,支持IEC62053-23:2003 标准要求
  • 提供两路电流和一路电压有效值测量,在1000:1动态范围内,有效值误差<0.1%
  • 提供一路脉冲频率发生器,可用于对用户自定义功率进行电能量累加积分
  • 提供三路ADC的瞬时采样值
  • 潜动阈值可调
  • 提供反相功率指示
  • 提供电压通道频率测量
  • 提供电压通道过零检测
  • 提供参考基准监测功能

1.1.2. 软件校表

  • 电表常数(HFConst)可调
  • 提供增益和相位校正
  • 提供有功、无功、有效值offset校正
  • 提供小信号校表加速功能
  • 提供配置参数自动校验功能
  • 提供SPI/UART接口
  • 具有电源监控功能
  • 具备电能寄存器定时冻结功能
  • UART的RX输入引脚同时具备管脚复位功能
  • RN8209 +5V/3.3V电源供电,功耗典型值为15mW@5V、8mW@3.3V
  • 内置1.25V±1% 参考电压,温度系数典型值5ppm/℃,最大15ppm/℃
  • 采用SSOP24(RN8209D)/SOP16L(RN8209C)绿色封装

1.2 功能简介
RN8209能够测量有功功率、无功功率、有功能量、无功能量,并能同时提供两路独立的有功功率和有效值、电压有效值、线频率、过零中断等,可以实现灵活的防窃电方案。 RN8209支持全数字的增益、相位和offset校正。有功电能脉冲从PF管脚输出,无功电能脉冲/用户自定义电能脉冲频率从QF引脚输出。 RN8209C提供串行接口UART,固定波特率4800,管脚复位与UART输入引脚RX复用。RN8209D提供串行接口SPI和UART,方便与外部MCU之间进行通信。
RN8209 内部的电源监控电路可以保证上电和断电时芯片的可靠工作。

1.3 管脚定义

电表级单相计量芯片RN8209C在Zigbee和Z-Wave智能家居系统中的应用

1.4 典型应用

电表级单相计量芯片RN8209C在Zigbee和Z-Wave智能家居系统中的应用

2 校表流程
可利用标准电能表进行校表,有功和自定义能量脉冲PF/QF 可以通过光耦直接连接到标准
表上去,然后根据标准电能表的误差读数对RN8209 进行校正。详细参考芯片用户手册。

电表级单相计量芯片RN8209C在Zigbee和Z-Wave智能家居系统中的应用

3 代码实现
本代码基于RN8209C通过串口进行通信,工作在ZGM130S和EFR32系列MCU,具体实现如下:
RN8209C模块接口:app_DriverRN8209C.h

/*
* app_DriverRN8209D.h
*
* Created on: 2009年8月10日
* Author: smartlabs
*/

#ifndef SRC_APP_DRIVERRN8209D_H_
#define SRC_APP_DRIVERRN8209D_H_

#define CALIBRATION_FLAG 0x88
/*
#define C_Standard_Power (1800)//1800 //校准功率
#define C_Standard_Current (15)//(15) //校准电流
#define C_Standard_Voltage (120) //校准电压
*/
#define Alarm_Power (2000000) //报警功率 后三位小数

typedef enum{
POWER_DATA_CURRENT, //电流
POWER_DATA_VOLTAGE, //电压
POWER_DATA_ACTIVE_POWER, //功率
POWER_DATA_ENEGRY, //电量
POWER_DATA_POWER_FACTOR,//功率因数
}power_data_type_e;

typedef enum
{
CALIBRABION_STATUS_WAITING = 1, //校准等待
CALIBRABION_STATUS_CALIBRATING = 2, //校准过程
CALIBRABION_STATUS_FINISHED = 3 //校准完成
}CALIBRATION_STATUS_ENUM;

typedef enum
{
WORK_MODE_CALIBRATE=1, //校准模式
WORK_MODE_NORMAL=2 //正常模式
}WORK_MODE_ENUM;

extern WORK_MODE_ENUM g_eWorkMode;//工作模式
extern CALIBRATION_STATUS_ENUM g_eCalibrationStatus; //当前校准状态
extern uint8_t g_cCalibrationTaskMode;
extern uint8_t g_bCalibrationFlag;

extern uint32_t g_wCalibrationCurrent; //校准电流
extern uint32_t g_wCalibrationVoltage; //校准电压
extern uint32_t g_wCalibrationPower; //校准功率

//RN8209C硬件初始化
void app_initRN8209HW(void );
//RN8209C软件初始化
void app_initRN8209SW(void );
//RN8209C复位
void app_resetRN8209(void );
//RN8209C计量
bool app_calculateRN8209(void);
//设置工作模式
void app_setWorkMode(WORK_MODE_ENUM mode);
//RN8209校准
void app_calibrateRN8209(void );
//获取当前电量,保留3位小数位数
uint32_t app_getEnergy(void );
//获取当前功率,保留3位小数位数
uint32_t app_getPower(void );
//获取当前电压,保留3位小数位数
uint32_t app_getVoltage(void );
//获取当前电流,保留3位小数位数
uint32_t app_getCurrent(void );
#endif /* SRC_APP_DRIVERRN8209D_H_ */

4 测试报告

经过简单的功率校准,读取到的功率实际精度可以达到99%以上。

电表级单相计量芯片RN8209C在Zigbee和Z-Wave智能家居系统中的应用