基于C2000内置12位ADC的电能计量方案
摘要
本应用笔记介绍了基于C2000内核和片内12位ADC实现软件电能计量的方案。C2000是德州仪器半导体有限公司生产的32位高性能实时微控制器,广泛应用于诸如马达驱动,数字电源等各种和功率控制相关的实时控制领域,而电能和功率的计算在以上应用中往往作为反馈控制的输入信号存在。因此,将软件电能计量算法集成到C2000平台上是实现各种实时控制SOC方案的关键。本文介绍了在C2000上实现软件计量算法的具体方法以及TI基于C2000的软件计量库的使用方法,同时给出了测试结果。
1 C2000计量库介绍
1.1应用背景
节能环保的倡导和推行使大部分家用电器都有对能耗统计的需求,对于这个巨大的应用市场,将C2000芯片在家电电机电源上的应用优势在硬件成本添加代价下兼容拓展能耗统计功能是本次设计的目的。
C2000芯片专注于电机电源控制,其的性能已被业界普遍认可。本次设计是基于C2000 Piccolo系列芯片搭建的软件测试平台,实现一套满足智能家居能耗计量的软件库,使用的硬件代价实现对C2000应用领域的丰富。
1.2硬件平台及软件库介绍
本次参考设计硬件平台使用C2000 Piccolo Entry Line Control Pad,这是TI提供的一套低成本C2000开发板,基于此平台搭建的电路进行计量库开发可以使用户在逐步学C2000开发编程的同时实现一套能耗计量软件。
此参考设计实现一个单相电能计量方案。参考设计的目的旨在实现一个完整的单相计量库。使用户在这个参考设计的基础上快速建立自己的单相计量方案。代码库提供有功功率,无功功率,视在功率,有功能量以及无功能量,同时还能测量回路电流有效值,电压有效值,功率因数,频率等参数,满足单相电能计量的需求,软件支持数字校表。
2 第二部分 计量电路及功能描述
2.1计量代码库
调用计量库时,只需要将emeter目录下的所有文件都添加进来,就能够使用计量功能了。其中文件emeter-interface.h中声明了所有对外调用接口,供程序调用,以实现校表和计量数据读取等功能。算法库默认配置ADC转换率为3200点/秒,转换数据为12bit,数据范围0—4096,实现单相计量。函数adc_interrupt()实现对原始转换数据的运算,measurement_callback()负责进一步处理adc_interrupt()中预处理的数据。因此可以在ADC每个中断中调用adc_interrupt(adc_raw[2]),也可以缓存多个点然后再循环调用此函数,函数入参adc_raw为信号输入,adc_raw[0]为电压转换数据,adc_raw[1]为电流转换数据。adc_interrupt(),measurement_callback()实现流程如图1所示:
计量前端电路由电压信号调理电路和电流信号调理电路组成。电压信号调理电路使用电阻器对输入工频信号分压,并经过运算放大器缓冲后送至MCU ADC输入引脚。电流互感器输出电流信号通过负载电阻转换成电压信号,经过运算放大器放大后送至MCU ADC输入引脚。推荐电路如图2所示:
上图电压输入分析如下:
市电220V交流输入,经10k和15k并联再串联2M电阻分压,输入交流电压为220V*(6/(2000+6))=0.66V,直流电压3.3*10/25=1.32V。总的输入电压幅值0.66*1.414+1.32=2.25V,输入信号3.3V以内。电流互感器输入5A/2.5mA(根据互感器具体型号定),取样电阻电压2.5*10=25mV,经运放20倍放大(具体放大倍数调整R9,R10),输入交流信号25*20=0.5V,总的输入电流幅值(10A)1*1.414+1.6=3.014V,输入信号3.3V以内。当使用锰铜电阻获得电流信号时,电流信号调理电路形式如下:
2.2函数说明
emeter-interface.h文件中声明的主要函数和宏定义如下:
int32_t get_parameter(int address)
介绍:获取各种计量参数从地址address。
入参:16位整型address地址
出参:返回该地址上的数据。
可中断重入,可中断中使用。
uint8_t set_parameter(int address, int32_t value)
介绍:设置各种校表参数和表参数到地址address。
入参:16位整型,address地址32位有符号整型value值
出参:返回1表示操作成功,返回0表示操作失败。
不可中断重入,不可中断中使用。
void measurement_setup (void)
介绍:代码库初始化,在上电之初调用。
入参:无
出参:无
void measurement_callback (void)
介绍:此函数周期性(1s)调用,以更新实时数据。
入参:无
出参:无
不可中断重入,不可中断中使用。
void adc_interrupt(int16_t * adc_raw)
Application Report
ZHCA501–Jan 2013
介绍:可以在ADC每个中断中调用adc_interrupt(adc_raw[2]),也可以缓存多个点然后再循环调用此函数,
函数入参adc_raw为信号输入,adc_raw[0]为电压转换数据,adc_raw[1]为电流转换数据
入参:电压电流输入ADC值数值,adc_raw [0]电压,adc_raw [1]电流。
出参:无
2.3 地址及相应功能介绍
考虑到代码将来的改动或扩展,地址不具体定义。使用枚举变量让编译器自动生成。用户可以include的这个变量定义,使用枚举地址设置和获取数据。
int32_t get_parameter(int address)函数地址枚举变量定义如下:
获取实时数据结构
enum get_parameter_table
{
AFE_BASE_A = 0x0000,
AFE_GET_ACTIVE_POWER,
AFE_GET_REACTIVE_POWER,
AFE_GET_APPARENT_POWER,
AFE_GET_ACTIVE_ENERGY,
AFE_GET_REACTIVE_ENERGY,
AFE_GET_VRMS,
AFE_GET_IRMS,
AFE_GET_POWER_FACTOR,
AFE_GET_FREQUENCY,
AFE_GET_ENERGY_MODE,
AFE_GET_STARTUP_I,
AFE_GET_PULSE_CONST,
AFE_GET_POWER_GAINA0,
AFE_GET_PHASEOFFSET_A0,
AFE_GET_VGAINA,
AFE_GET_IGAINA,
AFE_GET_IOFFSETA,
};
以下对每个地址进行解析:
AFE_GET_ACTIVE_POWER
描述:有功功率
单位:10mW
AFE_GET_REACTIVE_POWER
描述:无功功率
单位:10mVar
AFE_GET_APPARENT_POWER
描述:视在功率
单位:10mVA
AFE_GET_VRMS
描述:电压有效值
单位:10mV
AFE_GET_IRMS
描述:电流有效值
单位:1mA
AFE_GET_POWER_FACTOR
描述:功率因数
单位:0.0001
AFE_GET_ACTIVE_ENERGY
描述:两回路中较大有功电能脉冲数
单位:依赖脉冲常数
AFE_GET_REACTIVE_ENERGY
描述:两回路中较大无功电能脉冲数
单位:依赖脉冲常数
AFE_GET_FREQUENCY
描述:系统频率
单位:0.01Hz
AFE_GET_POWER_GAINA0
描述:功率增益
AFE_GET_PHASEOFFSET_A0
描述:电压电流角差补偿
AFE_GET_VGAINA
描述:电压增益
AFE_GET_IGAINA
描述:电流增益
AFE_GET_IOFFSETA
描述:电流偏置
单位:1mA
AFE_GET_POFFSETA
描述:功率偏置
单位:10mW
AFE_GET_ENERGY_MODE
描述:能量累计模式
单位:0累计1正能量累计
ZHCA501–Jan2013
描述:启动电流
单位:1mA
AFE_SET_PULSE_CONST
描述:脉冲常数
获取实时数据结构
enum set_parameter_table
{
AFE_SET_BASE = 0x00,
AFE_SET_POWER_GAINA0,
AFE_SET_PHASEOFFSET_A0,
AFE_SET_VGAINA,
AFE_SET_STARTUP_I,
AFE_SET_FREQUENCY,
AFE_SET_SAMPLES_10S,
AFE_SET_IGAINA,
AFE_SET_IOFFSETA,
AFE_SET_POFFSETA,
AFE_SET_ENERGY_MODE,
AFE_SET_PULSE_CONST,
AFE_SET_CAL_INIT,
};
AFE_SET_POWER_GAINA0
描述:功率增益
AFE_SET_PHASEOFFSET_A0
描述:电压电流角差补偿
AFE_SET_VGAINA
描述:电压增益
AFE_SET_STARTUP_I
描述:启动电流
单位:1mA
AFE_SET_IGAINA
描述:电流增益
AFE_SET_IOFFSETA
描述:电流偏置
单位:1mA
AFE_SET_POFFSETA
描述:功率偏置
单位:10mW
AFE_SET_PULSE_CONST
描述:脉冲常数
AFE_SET_CAL_INIT
描述:校表初始化
AFE_SET_CAL_END
描述:校表结束
AFE_SET_SAVE_FUNC
描述:用户设置校表数据保存函数
3 校表介绍
3.1 校表寄存器
校表寄存器在火线零线等同对待。
功率增益寄存器
电压电流角差补偿寄存器
有功偏置寄存器
电流增益寄存器
电流偏置寄存器
电压增益寄存器
3.2 校表方法
本计量库提供了专门的接口对计量参数进行校准。校表软件在pc端运行,通过串口通讯,进行参数设置。具体操作可参考示例代码。
3.2.1 功率增益及偏置校准
功率增益校准可以进行单点和两点校准。当单点校准时,功率偏置默认为0。当两点校准时,功率偏置为功率相对0点的截距。校表可以通过脉冲也可以通过多次读取功率值求平均进行。两点校表公式如下:(取100%Ib 和5%Ib两点)
功率增益校验公式:
EH和EL为大电流和小电流时功率的误差。(如100%Ib和5%Ib两点功率的误差)NH2L为大电流和小电流的比差。(如NH2L=100%Ib/5%Ib=20)
功率偏置校验公式:
PGEN是在小电流时的标准功率值。
无功的增益和偏置类似于有功,可参考有功校准。以下是一个单点校表的例子,说明如何编写校表软件:
<p style="padding-bottom:0px;widows:1;text-transform:none;text-indent:0px;margin:0px 0px 18px;padding-left:0px;p
关键词: ADC
加入微信
获取电子行业最新资讯
搜索微信公众号:EEPW
或用微信扫描左侧二维码