![](/media/cache/group/default_image.jpg.50x50_q85.jpg)
hOLA AGATHE
Dependencies: mbed CMSIS_DSP_5
Revision 10:4ee4ca605836, committed 2021-12-16
- Comitter:
- aitor01
- Date:
- Thu Dec 16 12:04:56 2021 +0000
- Parent:
- 9:7460651183ac
- Commit message:
- VRMS
Changed in this revision
main.cpp | Show annotated file Show diff for this revision Revisions of this file |
--- a/main.cpp Fri Dec 03 15:00:05 2021 +0000 +++ b/main.cpp Thu Dec 16 12:04:56 2021 +0000 @@ -7,35 +7,32 @@ 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); void calcularDatos(int16_t *datosV, int16_t *datosI, int longitud, estructuraMedidas *medidas); - 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); @@ -59,19 +56,58 @@ float dato_1=0.0; int32_t producto=0.0; int64_t sumatorio=0.0; - - for (int n=0;n<longitud;n++){ + + for (int n=0; n<longitud; n++) { dato=datos[n]; producto=dato*dato; - sumatorio+= producto; - } - dato_1=cont*sumatorio/longitud; - + sumatorio+= producto; + } + dato_1=cont*sumatorio/longitud; + return sqrt(dato_1); } void calcularDatos(int16_t *datosV, int16_t *datosI, int longitud, estructuraMedidas *medidas) { - -} + float cont =6.6/65536.0*6.6/65536.0; + int16_t dato_v=0.0; + int32_t mult_v=0.0; + int64_t sumatorio_v=0.0; + float emaitza_v=0.0; + int32_t dato_p=0.0; + int64_t sumatorio_p=0.0; + float emaitza_p=0.0; + int16_t dato_i=0.0; + int32_t mult_i=0.0; + int64_t sumatorio_i=0.0; + float emaitza_i=0.0; + for (int n=0; n<longitud; n++) { + //Cálculo voltaje + dato_v = datosV[n]; + mult_v = dato_v*dato_v; + sumatorio_v+=mult_v; + //Cálculo intensidad + dato_i = datosI[n]; + mult_i = dato_i*dato_i; + sumatorio_i+=mult_i; + //Cálculo de potencia + dato_p=dato_v*dato_i; + sumatorio_p+=dato_p; + } + //misma estructura que arriba + emaitza_v=sumatorio_v*cont/longitud; + emaitza_i=sumatorio_i*cont/longitud; + emaitza_p=sumatorio_p*cont/longitud; + + //mandar dato a medidas + medidas->vrms=sqrt(emaitza_v); + medidas->irms=sqrt(emaitza_i); + medidas->potenciaActiva=emaitza_p; + medidas->potenciaAparente=medidas->vrms*medidas->irms; + medidas->potenciaReactiva=sqrt(-(medidas->potenciaActiva*medidas->potenciaActiva)+(medidas->potenciaAparente*medidas->potenciaAparente)); + + //medidas->energiaConsumida Esta nos dijiste que habia que calcular el tiempo y que no hicieramos + medidas->factorDePotencia=medidas->potenciaActiva/medidas->potenciaAparente; +} +