sineAnalyzerWithPowerMeas

该博客介绍了一个用于分析正弦波电压和电流信号的硬件系统,通过计算RMS值、频率、功率因数等参数来监测电网状态。它利用中断控制频率采样,并采用指数移动平均滤波器进行平滑处理,以确定信号频率和功率测量。
摘要由CSDN通过智能技术生成

 

sineAnalyzerWithPowerMeas_init(&sine_mains);

sine_mains.sampleFreq = (float)(ISR_CONTROL_FREQUENCY);

sine_mains.threshold = (float)(0.08);

sine_mains.nSamplesMax = ISR_CONTROL_FREQUENCY/UNIVERSAL_GRID_MIN_FREQ;

sine_mains.nSamplesMin = ISR_CONTROL_FREQUENCY/UNIVERSAL_GRID_MAX_FREQ;

sine_mains.emaFilterMultiplier = 2.0/ISR_CONTROL_FREQUENCY;

#include "math.h"

#define INV_PWM_SWITCHING_FREQUENCY ((float)20*1000)

#define CNTRL_ISR_FREQ_RATIO 1

#define ISR_CONTROL_FREQUENCY (INV_PWM_SWITCHING_FREQUENCY)/(CNTRL_ISR_FREQ_RATIO)

#define UNIVERSAL_GRID_MAX_FREQ 65

#define UNIVERSAL_GRID_MIN_FREQ 45

typedef struct {

float v; // Input: Voltage Sine Signal

float i; // Input Current Signal

float sampleFreq; // Input: Signal Sampling Freq

float threshold; // Input: Voltage level corresponding to zero i/p

float vRms; // Output: RMS Value

float vAvg; // Output: Average Value

float vEma; // Output: Exponential Moving Average Value

float acFreq; // Output: Signal Freq

float acFreqAvg; // Output: Signal Freq

float iRms; // Output: RMS Value of current

float pRms; // Output: RMS Value of input power

float vaRms; // Output: RMS VA

float powerFactor; // Output: powerFactor

short zcd; // Output: Zero Cross detected

float vSum; // Internal : running sum for vacc_avg calculation over one sine cycle

float vSqrSum; // Internal : running sum for vacc_rms calculation over one sine cycle

float iSqrSum; // Internal : running sum f

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值