基于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所示:
|