Nginx配置 idea离线安装 list api lambda sqlalchemy jestjs Normalizecss History.js vue开发 vue教程入门 vue架构 找公司做网站 jq绑定click事件 jquery去掉空格 centos查看php版本 linux查看mysql进程 java两个数组合并 java反射方法 css鼠标悬浮样式 kubernetes实战 python中文文档 python中的for循环 python正则表达 python开发界面 stringjava java语法 怎么配置java环境 java的集合框架 java开发环境安装 java接口类型 java列表 怎么装linux系统 火牛软件 梦幻西游手游助手 js格式化时间 苹果剪辑 wine模拟器 spoonwep java游戏编程
当前位置: 首页 > 学习教程  > 编程语言

单相计量芯片RN8209C串口应用模块,百万级产品实测

2020/11/4 14:10:16 文章标签:

1 芯片介绍 1.1 芯片特性 1. 计量 提供三路Σ-△ADC有功电能误差在8000:1动态范围内<0.1%&#xff0c;支持IEC62053-22&#xff1a;2003标准要求无功电能误差在8000:1动态范围内<0.1%&#xff0c;支持IEC62053-23&#xff1a;2003 标准要求提供两路电流和一路电压有效…

1 芯片介绍

1.1 芯片特性

1. 计量

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

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 IC

1.5 典型应用

RN8209单相防窃电典型应用

2 校表流程

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

2 代码实现

本代码基于RN8209C通过串口进行通信,本模块产品美国市场已经出货百万级,具体实现如下:
RN8209C模块接口:app_DriverRN8209C.h

/*
 * app_DriverRN8209D.h
 *
 *  Created on: 2020年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_ */

RN8209C模块实现:
欢迎留言联系:279716582

3 测试报告

RN8209功率计量测试报告


本文链接: http://www.dtmao.cc/news_show_350104.shtml

附件下载

相关教程

    暂无相关的数据...

共有条评论 网友评论

验证码: 看不清楚?