TI中文支持网
TI专业的中文技术问题搜集分享网站

LAUNCHXL-F28379D: 有关有效值计算(RMS值)的相关疑问

Part Number:LAUNCHXL-F28379D

ti的工程师们你们好!

我想请问一下就是launchxl-f28379d的哪一个库中有没有写好的RMS函数可以使用?我使用launchxl-f28379d对一个正弦波电压进行了采样频率5000Hz的采样(最终得到一个100个数据点的数组),我利用RMS的公式对这个数组进行RMS计算,但是RMS值波动比较大(因为实际电压比较大,是通过缩放才将电压缩放到可以采样的范围内,反推回去后波动比较大),所以我想问问看是不是ti库里面有现成的rms函数,计算起来的rms数值波动不会太大一点

Eirwen:

已经收到了您的案例,调查需要些时间,感谢您的耐心等待。

,

Vivian Gao:

参考下方链接。

(+) LAUNCHXL-F28379D: RMS Value calculation – C2000 microcontrollers forum – C2000Tm︎ microcontrollers – TI E2E support forums

,

Ken true:

好的,我看到这个链接了,这个有效值计算比较适用于电机方面的有效值计算,有需要的朋友可以看看,我把例程找到的函数放上来

void calculateRMSData(MOTOR_Handle handle){ MOTOR_Vars_t *obj = (MOTOR_Vars_t *)handle;

float32_t IrmsMax_A, IrmsMin_A, VIrmsIsrSet;

if(obj->flagVIrmsCal == true) { obj->flagVIrmsCal = false;

obj->Irms_A[0] = sqrtf(obj->IrmsPrdSum[0] * obj->IrmsCalSF);

obj->Irms_A[1] = sqrtf(obj->IrmsPrdSum[1] * obj->IrmsCalSF);

obj->Irms_A[2] = sqrtf(obj->IrmsPrdSum[2] * obj->IrmsCalSF);

if(obj->Irms_A[0] > obj->Irms_A[1]) { IrmsMax_A = obj->Irms_A[0]; IrmsMin_A = obj->Irms_A[1]; } else { IrmsMax_A = obj->Irms_A[0]; IrmsMin_A = obj->Irms_A[1]; }

IrmsMax_A = (obj->Irms_A[2] > IrmsMax_A) ? obj->Irms_A[2] : IrmsMax_A; IrmsMin_A = (obj->Irms_A[2] < IrmsMin_A) ? obj->Irms_A[2] : IrmsMin_A;

if(obj->speedAbs_Hz != 0.0f) { VIrmsIsrSet = obj->VIrmsIsrScale / obj->speedAbs_Hz;

VIrmsIsrSet = (VIrmsIsrSet > obj->VIrmsIsrScale) ? obj->VIrmsIsrScale : VIrmsIsrSet;

VIrmsIsrSet = (VIrmsIsrSet != 0) ? VIrmsIsrSet: obj->VIrmsIsrScale; } else { VIrmsIsrSet = obj->VIrmsIsrScale; }

obj->IrmsCalSF = 1.0f / VIrmsIsrSet; obj->VIrmsIsrSet = (uint16_t)(VIrmsIsrSet);

obj->unbalanceRatio = (IrmsMax_A – IrmsMin_A) / (IrmsMax_A + IrmsMin_A); }}

赞(0)
未经允许不得转载:TI中文支持网 » LAUNCHXL-F28379D: 有关有效值计算(RMS值)的相关疑问
分享到: 更多 (0)