hOLA AGATHE

Dependencies:   mbed CMSIS_DSP_5

main.cpp

Committer:
aitor01
Date:
2021-12-03
Revision:
9:7460651183ac
Parent:
8:99642487de6f
Child:
10:4ee4ca605836

File content as of revision 9:7460651183ac:

#include "mbed.h"
#include "datos.h"

#define longitudTrama 500

Timer timer;
float resultado;
int tiempo;

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);
    timer.stop();
    printf("**** Datos calculados en %d us ****\n",timer.read_us());
    printf("**** El valor Vrms es %f ****\n",medidas.vrms);
    printf("**** El valor Irms es %f ****\n",medidas.irms);
    printf("**** La potencia activa es %f ****\n",medidas.potenciaActiva);
    printf("**** La potencia reactiva es %f ****\n",medidas.potenciaReactiva);
    printf("**** La potencia aparente es %f ****\n",medidas.potenciaAparente);
    printf("**** La energia consumida es %f ****\n",medidas.energiaConsumida);
    printf("**** El factor de potencia es es %f ****\n",medidas.factorDePotencia);

}

float calcularRMS(int16_t *datos, int longitud)
{

    float cont = 6.6/65536.0*6.6/65536.0;
    int16_t dato=0.0;
    float dato_1=0.0;
    int32_t producto=0.0;
    int64_t sumatorio=0.0;
        
    for (int n=0;n<longitud;n++){
        dato=datos[n];
        producto=dato*dato;
        sumatorio+= producto; 
        }
        dato_1=cont*sumatorio/longitud;
        
    return sqrt(dato_1);
}

void calcularDatos(int16_t *datosV, int16_t *datosI, int longitud, estructuraMedidas *medidas)
{
 
}