STMCU小助手
发布时间:2022-1-10 22:00
|
电能表作为电能计量的基本设备,受到国家电力部门的长期重视,电能表生产企业更是不遗余力地寻求设计与开发性能俱佳且成本更低的解决方案。目前国内的电能表设计已经走过了由8位MCU向通用DSP甚至专用DSP的变革,通用DSP的应用方案的劣势在于DSP的专业应用和嵌入程度不够深的问题,成本偏高;而专用 DSP功能相对固定,这样给电能表设计和生产厂家带来功能差异化空间不足的困难。基于ARM的方案也已经出现,但是适合应用的ARM7 TDMI在性能上不尽人意,同时外设资源不足;而更高端的ARM9系统的复杂程度很高,成本也较高。( k& K- d$ i4 ]. ^ 一、关于CORTEX-M3与STM32 2005年ARM公司发布其最新一代ARM v7内核,命名为Cortex,同ARM7/9/10/11相比在架构上有了革命性突破,性能上更是本质的飞越,Cortex系列包含三个系列,-A/-R/-M。Cortex-M3特别针对功耗和价格敏感的嵌入应用领域,同时具备高性能,它采用高效的哈佛结构三级流水线,达到1.25DMIPS/MHz,在功耗上更是达到0.06mW /MHz。Cortex-M3使用Thumb-2指令集,自动16/32位混合排列,具有很高的代码密度。单周期的32位乘法以及硬件除法器,保证 Cortex-M3的运算能力有大幅提高,在一些对计算能力要求相对较低而嵌入式要求相对较高的场合,STM32就具有取代传统DSP的潜力甚至优势。 Cortex-M3包含嵌套向量中断控制器NVIC,中断响应速度最快仅6周期,内部集城总线矩阵,支持DMA操作及位映射。1 X0 D# K9 U' `% A2 L* n STM32是ST公司在业界最先推出的基于ARM Cortex-M3内核产品,继承了Cortex-M3内核的优良血统,同时增加了ST高性能的外设资源,FLASH、SRAM存储器,丰富的串行通信接口,如IIC、SPI、USART、CAN、USB等,以及12位的ADC和DAC模块,支持外部存储器访问的灵活的静态存储器控制器FSMC。# q, o) P; S {+ r' C' \ 二、基于STM32的电能表方案0 }* Y6 _) F# o# I" ^ 根据电能表的功能和误差精度的需求,我们选用了ST公司STM32的增强型系列STM32F103xx,最高工作频率为72MHz。在程序设计上除了完成快速数据处理工作以外,还针对系统非线性失真进行了修正和补偿。* H1 U- V5 N. C! n9 m( o 9 U% J8 @* E! l- f2 M2 q% ^ 电能表系统组成框图如图1所示:' W6 Y5 X9 C% E1 s# L$ X ![]() ! l5 G) Y, s! c" |6 z3 A 3 i4 N1 U6 Y* j$ ~ / N$ Y: i8 v) x! s (一)采集数据处理与计算 " q& H, M4 u9 V/ ~ 在实际应用中,电力信号通过互感器采集到电能表中,通过一个6通道16位模拟前端处理器(AD73360)进行A/D转换,转换成数字信号并传输到STM32中。AD73360是6通道同步采样的Σ-ΔADC器件,它内置了基本型电压基准及通道内置独立的PGA(可编程增益放大器),非常适合三相电流电压信号的同步采样,在小信号的时候,通过调整通道PGA可以获得合适的动态范围从而保证微弱信号的计量精度。电能表数据采集框图示于图2。 ![]() ( F. k4 p* I8 V4 V- a) F& t( Q 电压电流输入信号首先需要RC滤波网络滤波和数据采样,然后进行A/D转换。AD73360有独立的时钟源,可配置为自动数据采集与发送模式,通过SPI总线不断的将数据传向STM32。STM32内的Cortex-M3内核对输入的数字信号进行处理,完成数字滤波,过零点检测,得到基本的电流电压数据,经过时间积分计算和转换得到相应的电能计量。5 T6 B' Q7 b0 G* J% S3 Z) p/ p (二)采样电路和滤波网络 0 A/ X; b+ K! C 由于被采样信号为高电压信号和大电流信号,我们需要对被采样信号做高保真转换为双极性的电压信号以便用AD电路离散化处理,而AD73360是单电源供电模拟前端,所以我们需要令输入信号位于AD73360的动态范围的正中。采用的方法是:定义ADC工作电压为5伏(动态范围0~5V),选择参考电压2.5伏,将AD差分输入的负端直接接到参考电压输入,差分输入的正端接被测信号。具体电路如图3。 3 p# G _* H- }" s0 @4 l1 S/ ~: V) Y8 o: ~/ I( ]2 C 在实际电路中,相电流信号经CT变换为低电压信号,相电压则通过高精度电阻网络分压得到线性的低电压信号,信号幅度范围需保证在5V之内。8 T( ^# o; ]$ @$ k/ U8 [ ' |) `* ]& O# {( p/ Z# a$ V# r- g (三)AD73360与STM32的接口7 Y% J, O* k) l% S1 P; |& A 因为AD73360产生的基础数据总量庞大,为了尽量少的占用CPU时间,需要使用STM32内部的硬件SPI和DMA单元实现数据传输,而STM32的内核根据DMA的传输结果来批量获取基础数据并启动数据处理程序。硬件连接关系如图4所示。) Y* e, ^) b. @ 9 P! p9 C- g8 i1 l7 H0 o4 F$ w) [( Y) v$ ] x) O 由STM32的GPIO控制AD73360的SE和RESET,并用一个外部中断输入脚来监听帧同步信号,这样才可以用程序来保证数据帧内容的字节对应关系。* W$ L+ r# m! W s3 e. c( O0 D3 k4 A) n1 a 在STM32的硬件设置程序中,需要关闭SPI的所有中断,设置SPI为从模式,并选取一个DMA通道与之协同工作,自动将SPI从模式收到的数据保存在指定的内存地址。为了令AD73360正确采集数据,还必须根据使用要求配置AD73360的内部寄存器,令AD73360处于数据模式并主动向STM32发送采样数据。 " U+ [% W7 ?) \" T9 W: v# C2 f) E 三、主要电能参量的计算 ( _# d! e. m1 {) d5 I AD73360是固定周期采集,我们使用的是150Hz或160Hz,即每周期采集150/160点,为此AD73360采用的时钟是 6.000MHz或16.384MHz,系统中对AD73360的配置为DMCLK分频因子为2048。AD73360是差分采集,很方便进行过零点检测和直流分量调节,以保证信号幅度对称,从而减小系统误差。( ~9 {& o! u" g& E y1 A E3 P 2 q* O" `4 {" B4 N8 v3 k. s1 v6 Q 电压测量(有效值)计算式: ![]() + G3 J, [: V( {9 z1 Q! {& c 式中:U-电压有效值,n-每周期采样点数, uk —电压采样值( D4 m* O# E6 z% l* A , a; h3 p& L/ Y 电流测量(有效值)计算式: ![]() ' M4 I0 t w6 i& Z7 s 式中:I-电流有效值,n-每周期采样点数, ik-电流采样值 在得到的电流电压有效值基础上计算出总功率S(即视在功率),通过对时间积分的电流电压积得到有功功率P,无功功率Q是总功率S与有功功率P之差,功率因数是有功功率P与总功率S的比。 # v. Y* I5 H% H7 w# \2 v 对于单器件和三相四线星形负载的有功功率和无功功率的计算汇总如下: 单元件有功功率计算式: # V) U; I7 U7 @4 V# C' B1 J$ ]式中: P-单元件有功功率,n-每周期采样点数, uk-元件上电压采样值, ik-元件上电流采样值4 ?7 h1 b$ i! M$ ]9 [' ^1 b2 {; D % L+ \1 V/ `6 K7 D 单元件无功功率计算式: ![]() ( y a9 n( n& Y% B7 b9 u; p 式中:Q-单元件无功功率,n-每周期采样点数, uk-元件上电压采样值, ik-元件上电流采样值(90度移相后) 9 A3 S8 u; e$ F+ @ D, L 三相四线三元件有功功率计算式: PΣ=Pu+Pv+Pw8 a# ]* }9 n, |6 D/ f 式中: PΣ-三相有功功率,Pk -(k=u,v,w)各相有功功率 ; x" Z K7 _6 ]4 ^! L4 p6 A 三相四线三元件无功功率计算式: QΣ=Qu+Qv+Qw0 `; s# }: b% W! R/ z8 C 0 d$ b& j; x* Q! Q) N' ~0 c9 F0 A3 e1 j 式中: QΣ-三相无功功率,Qk -(k=u,v,w) 各相无功功率 + D5 t7 h% Z; c, o! ? 四、非线性失真的补偿与修正 - p2 X+ i" z t6 f 电信号采集过程中可能存在的电磁元件(CT或PT)会造成采集信号和实际信号之间的相位失真以及线性失真。为了补偿和修正这些失真带来的误差,还需要使用分段矫正和补偿的方法。例如,根据CT(PT)的相移曲线选择合适的两个点将整个量程分为三段,在测量值分处不同的段时,分别调用不同的相移参数对测量值进行相位补偿。 2 @& V% S! J) Y' C) K F% T# ` 线性度补偿参数和相位补偿参数的获取方法(校准过程)如下: . N/ d' j* ]" k/ N9 E. I- E 1、零偏校准:令所有通道输入为零,分别记录各通道零点位置。, [ Q: R0 X1 K2 |" c2 ~4 ]+ w 2、电压校准:令所有电压通道输入值为标准电压值220V(RMS),记录各相电压校准参数。 3、电流校准:令所有电流通道输入值为分界点电流,记录各通道小电流测量段校准参数。再令所有电流通道输入值为最大值,分别记录各通道大电流测量段的校准参数。 4、相移校准:分别令电流电压通道输入相位相差60度感性,并且电流通道的电流值处于相位补偿段的中间点,并根据有功电能误差来求取该补偿段的相位补偿参数。 5、求取的全部补偿参数存储在非易失存储器中,例如STM32的FLASH。7 @' t- X9 d! G; ]7 L& O 7 m& p; s# {6 |* j6 C: s9 e" C$ {) ] 五、电能表配合电路 * Y3 e5 W" N) _1 ^& o 除了测量计量功能外,电能表还需要实现通讯,存储以及时间管理功能,具体的程序和做法在此不再赘述,但为了实现完整的电能表功能,其周边器件的选择却很关键。 实时时钟电路:Intersil的ISL12022M是内置时钟晶体的高可靠性全自动温度补偿RTC芯片。该RTC依靠工厂预校准,和全工业级温度范围的自动温补来保障电子产品全生命周期的计时精度,免除了电表的时钟校准的工艺过程,降低了生产成本。该RTC还具有电池状态监测、上电/掉电时间戳记录功能和内置数字温度传感器功能,更可以用在除电表外的综合电力终端设备中。% K5 i2 t G3 z/ B $ K8 }' m+ r% K( ?9 u 电压参考基准:Intersil的ISL21009系列是低噪声,高稳定度的精密电压基准,用于在AD73360内置基准的稳定度(50ppm)不够的情况下,为测量系统补充提供更高稳定度(5ppm)的参考电压。 电源管理电路:ON Semiconduction的NCP3063是低成本、高效率的DC/DC稳压器,它对外围电路要求简单,输入电压范围宽达40伏。而电能表往往工作在很宽的输入电压范围条件下,因此,NCP3063非常适合用在电能表工频变压器后面做5伏或3.3伏的直流稳压。) x5 I8 d- K; T- J! U* C3 ]6 J 通信接口电路:Intersil的ISL3152E是全功能rs485接口芯片,该接口芯片拥有多项特别适合于电能表AMR系统的特性指标。其中包括,1/8标准负载驱动(256节点),正负16.5千伏ESD保护,热插拔功能(节点电源变化不影响总线通信),20Mbps总线速率,支持星型拓扑网络等等。$ r6 _% U. S- F# J: D) x * _: ~1 g: p! c; z 结语" J5 ~! T0 F3 o5 S3 C' {! j 8 g1 ~5 j" ~! ^; L# M- T7 O# b 基于CORTEX的STM32的三相电能表方案已经证明是当前的主流的最具优势的方案,得到了业界的广泛好评和认可。目前,本方案已成功应用在某大型电表生产企业0.5S电子式三相多功能电能表中。 |
实战经验 | 基于STM32G0B1的全桥移相+同步整流PWM解决方案
DMA 原理从 0 到 1:为什么它能解放 CPU?一文讲透 DMA 的工作流程
【福利三:逢7发帖赢大礼】8、基于STM32G070板子的Ymodem串口协议IAP Bootloader开发
【福利三:逢7发帖赢大礼】7、基于STM32G070板子TF卡的FATFS移植
【福利三:逢7发帖赢大礼】6、基于STM32G070板子spiflash的FATFS移植
【福利三:逢7发帖赢大礼】5、基于STM32G070板子IRDA红外遥控接收解码
【福利三:逢7发帖赢大礼】4、基于STM32G070板子SPI flash 移植SFUD库
【福利三:逢7发帖赢大礼】基于STM32G070板子的uart shell移植设计
【福利三:逢7发帖赢大礼】3、基于STM32G070板子的YModem串口协议通信
【福利三:逢7发帖赢大礼】2、基于STM32G070板子的OLED移植U8G2库
微信公众号
手机版