ddd
Dependencies: mbed CMSIS_DSP_5
Revision 10:d475a24f4530, committed 2021-12-18
- Comitter:
- davidmateos
- Date:
- Sat Dec 18 17:19:26 2021 +0000
- Parent:
- 9:6fcbc011ef60
- Commit message:
- ddd
Changed in this revision
main.cpp | Show annotated file Show diff for this revision Revisions of this file |
diff -r 6fcbc011ef60 -r d475a24f4530 main.cpp --- a/main.cpp Thu Dec 09 19:50:42 2021 +0000 +++ b/main.cpp Sat Dec 18 17:19:26 2021 +0000 @@ -7,15 +7,14 @@ float resultado; int tiempo; -struct estructuraMedidas -{ - float vrms; - float irms; - float potenciaActiva; - float potenciaReactiva; - float potenciaAparente; - float energiaConsumida; - float factorDePotencia; +struct estructuraMedidas { + float vrms; + float irms; + float potenciaActiva; + float potenciaReactiva; + float potenciaAparente; + float energiaConsumida; + float factorDePotencia; }; float calcularRMS(int16_t *datos, int longitud); @@ -25,16 +24,16 @@ int main() { - + timer.reset(); timer.start(); resultado=calcularRMS(datos, longitudTrama); timer.stop(); printf("****El valor Vrms es %f calculado en %d us ****\n",resultado,timer.read_us()); - + estructuraMedidas medidas; medidas.energiaConsumida=0; - + timer.reset(); timer.start(); calcularDatos(datosV,datosI,longitudTrama,&medidas); @@ -52,71 +51,65 @@ float calcularRMS(int16_t *datos, int longitud) { - float sumatorio; - - const float constante =6.6/65536.0*6.6/65536.0; - int16_t dato; - int64_t sum = 0; - int32_t mult; - + 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); - + 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); + int16_t voltajes; + int32_t product_volt; + int64_t sumatorio_volt=0; + float resultado_v; + int16_t intens; + int32_t product_i; + int64_t sumatorio_i=0; + float resultado_i; + int32_t pot; + int64_t sumatorio_pot=0; + float resultado_pot; + float cte=6.6/65536.0*6.6/65536.0; - - 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; - - - - - -} + for (int n=0;n<longitud;n++){ + + voltajes=datosV[n]; + product_volt=voltajes*voltajes; + sumatorio_volt+=product_volt; + + intens=datosI[n]; + product_i=intens*intens; + sumatorio_i+=product_i; + + pot=voltajes*intens; + sumatorio_pot+=pot; + + } + resultado_v=sumatorio_volt*cte/longitud; + resultado_i=sumatorio_i*cte/longitud; + resultado_pot=sumatorio_pot*cte/longitud; + + (*medidas).vrms=sqrt(resultado_v); + (*medidas).irms=sqrt(resultado_i); + (*medidas).potenciaActiva=resultado_pot; + (*medidas).potenciaAparente=(*medidas).vrms*(*medidas).irms; + (*medidas).potenciaReactiva=sqrt(-((*medidas).potenciaActiva*(*medidas).potenciaActiva)+((*medidas).potenciaAparente*(*medidas).potenciaAparente)); + (*medidas).factorDePotencia=(*medidas).potenciaActiva/(*medidas).potenciaAparente; +} +