ddd
Dependencies: mbed CMSIS_DSP_5
Diff: main.cpp
- Revision:
- 9:6fcbc011ef60
- Parent:
- 8:99642487de6f
- Child:
- 10:d475a24f4530
--- a/main.cpp Thu Oct 17 21:12:26 2019 +0000 +++ b/main.cpp Thu Dec 09 19:50:42 2021 +0000 @@ -52,11 +52,71 @@ float calcularRMS(int16_t *datos, int longitud) { - return 0.0; + float sumatorio; + + const float constante =6.6/65536.0*6.6/65536.0; + int16_t dato; + int64_t sum = 0; + int32_t mult; + + + + for (int n = 0; n<longitud;n++){ + dato = datos[n]; + mult=dato*dato; + sum+=mult; + } + + sumatorio = sum*constante/longitud; + return sqrt(sumatorio); + } void calcularDatos(int16_t *datosV, int16_t *datosI, int longitud, estructuraMedidas *medidas) { + float sumatorio2 = 0.0; + + + + for (int n = 0; n<longitud;n++){ + sumatorio2 = sumatorio2 + (datosI[n]*6.6/65536.0)*(datosI[n]*6.6/65536.0); + } + sumatorio2 = sumatorio2/longitud; + (*medidas).irms = sqrt(sumatorio2); + + + float sumatorio3 = 0.0; + + + + for (int n = 0; n<longitud;n++){ + sumatorio3 = sumatorio3 + (datosV[n]*6.6/65536.0)*(datosV[n]*6.6/65536.0); + } + sumatorio3 = sumatorio3/longitud; + (*medidas).vrms = sqrt(sumatorio3); + + + float sumatorio4 = 0.0; + + sumatorio4 = sqrt(sumatorio2)*sqrt(sumatorio3); + (*medidas).potenciaAparente = sumatorio4; + + + + + + (*medidas).potenciaActiva = sumatorio2*sumatorio3; + + + + (*medidas).potenciaReactiva = sqrt((sumatorio4)*(sumatorio4))-((sumatorio2*sumatorio3)*(sumatorio2*sumatorio3)); + + (*medidas).factorDePotencia = (sumatorio2*sumatorio3)/sumatorio4; + + + + + }