
基于CORTEX的STM32的三相电能表方案
背景
电能表是用来测量电能的仪表,又称电度表,火表,电能表,千瓦小时表,指测量各种电学量的仪表。基于ARM的方案已经出现,但是适合应用的ARM7 TDMI在性能上不尽人意,同时外设资源不足;而更高端的ARM9系统的复杂程度很高,成本也较高。所以要研究一种廉价的,满足客户需求的电能表,来填补这个空缺。
一、关于CORTEX-M3与STM32
最新一代ARM v7内核,命名为Cortex,同ARM7/9/10/11相比在架构上有了革命性突破。它采用高效的哈佛结构三级流水线,达到1.25DMIPS/MHz,在功耗上更是达到0.06mW/MHz。Cortex-M3使用Thumb-2指令集,自动16/32位混合排列。单周期的32位乘法以及硬件除法器,保证Cortex-M3的运算能力有大幅提高,Cortex-M3包含嵌套向量中断控制器NVIC,中断响应速度最快仅6周期,内部集成总线矩阵,支持DMA操作及位映射。
STM32系统按性能分成两个不同的系列:STM32F103“增强型”系列和STM32F101“基本型”系列。增强型系列时钟频率达到72MHz,是同类产品中性能最高的产品;基本型时钟频率为36MHz,以16位产品的价格得到比16位产品大幅提升的性能。
二、基于STM32的电能表方案
根据电能表的功能和误差精度的需求,我们选用了S一体电感器TM32F103xx,最高工作频率为72MHz。
(一)采集数据处理与计算
在实际应用中,电力信号通过互感器采集到电能表中,通过一个6通道16位模拟前端处理器(AD73360)进行A/D转换,转换成数字信号并传输到STM32中。AD73360是6通道同步采样的Σ-ΔADC器件,它内置了基本型电压基准及通道内置独立的PGA,通过调整通道PGA可以获得合适的动态范围从而保证微弱信号的计量精度。
电压电流输入信号首先需要RC滤波网络滤波和数据采样,然后进行A/D转电感生产换。AD73360有独立的时钟源,可配置为自动数据采集与发送模式,通过SPI总线不断的将数据传向STM32。STM32内的Cortex-M3内核对输入的数字信号进行处理,完成数字滤波,过零点检测,得到基本的电流电压数据,经过时间积分计算和转换得到相应的电能计量。
(二)采样电路和滤波网络
由于被采样信号为高电压信号和大电流信号,我们需要对被采样信号做高保真转换为双极性的电压信号以便用AD电路离散化处理,我们需要令输入信号位于AD73360的动态范围的正中。采用的方法是:定义ADC工作电压为5伏,选择参考电压2.5伏,将AD差分输入的负端直接接到参考电压输入,差分输入的正端接被测信号。电路分析可以参照图三:
(三)AD73360与STM32的接口
为了尽量少的占用CPU时间,需要使用STM32内部的硬件SPI和DMA单元实现数据传输,而STM32的内核根据DMA的传输结果来批量获取基础数据并启动数据处理程序。硬件连接关系如图4所示。
在STM32的硬件设置程序中,需要关闭SPI的所有中断,功率电感器设置SPI为从模式,并选取一个DMA通道与之协同工作,自动将SPI从模式收到的数据保存在指定的内存地址。为了令AD73360正确采集数据,还必须根据使用要求配置AD73360的内部寄存器,令AD73360处于数据模式并主动向STM32发送采样数据。
三、主要电能参量的计算
AD73360是固定周期采集,我们使用的是150Hz或160Hz,即每周期采集150/160点,为此AD73360采用的时钟是6.000MHz或16.384MHz,系模压电感器统中对AD73360的配置为DMCLK分频因子为2048。AD73360是差分采集,很方便进行过零点检绕行电感测和直流分量调节,以保证信号幅度对称,从而减小系统误差。
设计技术问答:FPGA设计的安全性考量Q1:FPGA设计与DSP设计相比,最大的不同之处在哪里? A1:这个问题要从多个角度看。它们都用于某个功能的硬件电路实现,但是它们的侧重点有所不同。这里涵盖的说一下。 1)内部资源 FPGA侧重于设
开关电源推挽拓扑、副边全波整流和半波整流输出关于开关电源推挽拓扑、副边全波整流和半波整流输出电压的问题
如图1所示:原边为推挽拓扑,S1和S2开通的占空比各为D(D<0.5),变压器5个绕组匝数都为n匝
按照我的计算:
R1两端电压
PFC 交流本人做了一个反激PFC, 全电压输入时,输入电压升不上去, 升到130Vrms 变压器就开始响, 有没有大神帮忙推测下,都有哪些因素会造成? 开环测试的,还没上闭环。
原理图和参