TSA
/
proyectoSAT
a
Revision 1:b1d6185f85c8, committed 2019-12-12
- Comitter:
- alexmar97
- Date:
- Thu Dec 12 13:07:15 2019 +0000
- Parent:
- 0:ebc3999f6ef4
- Commit message:
- .
Changed in this revision
TextLCD.lib | Show annotated file Show diff for this revision Revisions of this file |
main.cpp | Show annotated file Show diff for this revision Revisions of this file |
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/TextLCD.lib Thu Dec 12 13:07:15 2019 +0000 @@ -0,0 +1,1 @@ +https://os.mbed.com/users/simon/code/TextLCD/#308d188a2d3a
--- a/main.cpp Fri Nov 29 12:52:32 2019 +0000 +++ b/main.cpp Thu Dec 12 13:07:15 2019 +0000 @@ -1,9 +1,11 @@ #include "mbed.h" #define bufferLength 500 +#define muestras 100 #include "math.h" #include "TextLCD.h" -#define muestras 100 + + TextLCD lcd(D8, D9, D2, D3, D4, D5, TextLCD::LCD16x2); // rs, e, d4-d7 Serial pc(USBTX, USBRX); // tx, rx struct eResultados { @@ -21,35 +23,41 @@ float energiaConsumida; float factorDePotencia; }; + +estructuraMedidas medidas; + //struct Vectores{ // float vTensionA[muestras]; //float vTensionB[muestras]; // float vIntensidadA[muestras]; // float vIntensidadB[muestras]; -}vectores; +//} +//vectores; AnalogIn adc_in(A0); AnalogIn int_in(A1); -AnalogOut dac_out(A2); -AnalogOut int_out(A3); +AnalogIn cont_in(A3); +//AnalogOut dac_out(A2); +//AnalogOut int_out(A3); InterruptIn boton(USER_BUTTON); Ticker tMuestrea; Ticker tVisualiza; void visualiza(); -void procesado(int length, uint16_t *entrada, uint16_t *entrada2); -void calcularRMS(uint16_t *buffer, int longitud,eResultados *resul); +void procesado(int length, int16_t *entrada, int16_t *entrada2); + void calcularDatos(int16_t *datosV, int16_t *datosI, int longitud, estructuraMedidas *medidas); +void calcularRMS(int16_t *buffer, int longitud,eResultados *resul); int flag=0; int contador=0; int bufferActivo=0; struct buffers { - uint16_t 1A[muestras]; - uint16_t 1B[muestras]; - uint16_t 2A[muestras]; - uint16_t 2B[muestras]; + int16_t vA[muestras]; + int16_t vB[muestras]; + int16_t iA[muestras]; + int16_t iB[muestras]; }; -bool bufferActivo=0; + void muestrea(); buffers bufferEntrada; @@ -67,36 +75,39 @@ if (flag) { flag=0; if(bufferActivo==1) { - procesado(muestras,(uint16_t *)&bufferEntrada.1A,(uint16_t *)&bufferEntrada.2A); + procesado(muestras,(int16_t *)&bufferEntrada.vA,(int16_t *)&bufferEntrada.iA); } else { - procesado(muestras,(uint16_t *)&bufferEntrada.1B,(uint16_t *)&bufferEntrada.2B); + procesado(muestras,(int16_t *)&bufferEntrada.vB,(int16_t *)&bufferEntrada.iB); } } - + wait_us(1); } + } void muestrea() { uint16_t dato=adc_in.read_u16(); uint16_t dato2=int_in.read_u16(); + uint16_t cont=cont_in.read_u16(); + if (bufferActivo==0) { - bufferEntrada.1A[contador]=dato; + bufferEntrada.vA[contador]=dato-cont; - bufferEntrada.2A[contador]=dato2; + bufferEntrada.iA[contador]=dato2-cont; } else { - bufferEntrada.1B[contador]=dato; + bufferEntrada.vB[contador]=dato-cont; - bufferEntrada.2B[contador]=dato2; + bufferEntrada.iB[contador]=dato2-cont; } @@ -108,18 +119,18 @@ } } -void procesado(int length, uint16_t *entrada, uint16_t *entrada2) -//{ +void procesado(int length, int16_t *entrada, int16_t *entrada2) +{ // for (int i=0; i<length; i++) { // salida[i]=entrada[i]; //} // calcularRMS(entrada,length,&resultados); - void calcularDatos(int16_t *entrada, int16_t *entrada2, int longitud, estructuraMedidas *medidas); + calcularDatos(entrada, entrada2, 100, &medidas); } -void calcularRMS(uint16_t *buffer, int longitud,eResultados *resul) +void calcularRMS(int16_t *buffer, int longitud,eResultados *resul) { float cons=0.00005035400390625; float cons1=1.007080078125e-4; @@ -152,9 +163,18 @@ } void visualiza(){ - printf ("El valor maxima es %f\n",resultados.Vmax); - printf ("El valor minimo es %f\n",resultados.Vmin); - printf ("El valor RMS es %f\n\n",resultados.Vrms); + + printf ("El valor RMS es %f\n",medidas.vrms); + printf ("El valor irms es %f\n",medidas.irms); + printf ("El valor energia consumida es %f\n",medidas.energiaConsumida); + printf ("El valor factor de potencia es %f\n",medidas.factorDePotencia); + printf ("El valor potencia Aparente es %f\n",medidas.potenciaAparente); + printf ("El valor potencia Activa es %f\n",medidas.potenciaActiva); + printf ("El valor potencia Reactiva es %f\n\n",medidas.potenciaReactiva); + + + + } void calcularDatos(int16_t *datosV, int16_t *datosI, int longitud, estructuraMedidas *medidas) @@ -195,5 +215,5 @@ (*medidas).potenciaReactiva = datoQ; (*medidas).vrms = datoV; (*medidas).irms = datoI; - (*medidas).factorDePotencia = datoP/datoS; + }