El_clan_zoncillo
/
Proyecto_final
Revision 8:6f184796147a, committed 2019-01-07
- Comitter:
- freind00
- Date:
- Mon Jan 07 13:05:08 2019 +0000
- Parent:
- 7:e0452337a3d1
- Commit message:
- final
Changed in this revision
final.cpp | Show annotated file Show diff for this revision Revisions of this file |
diff -r e0452337a3d1 -r 6f184796147a final.cpp --- a/final.cpp Thu Dec 20 13:21:41 2018 +0000 +++ b/final.cpp Mon Jan 07 13:05:08 2019 +0000 @@ -8,16 +8,19 @@ #define constanteIntensidad 1.423595702690060e-09 #define vectormuestras 100 #define offsetTension 0.50369472 -#define offsetIntensidad 0.5040785 +#define offsetIntensidad 0.4152 #define eps 2.220446049250313e-016 +void sacardatos(); + TextLCD lcd(D8, D9, D2, D3, D4, D5, TextLCD::LCD16x2); // rs, e, d4-d7 Serial pc(USBTX, USBRX); // tx, rx InterruptIn button(PC_13); -AnalogIn tension(A0); +AnalogIn tension(A2); AnalogIn intensidad(A1); - + Ticker timerCaptura; + Ticker timerVisualizacion; struct Vectores{ float vTensionA[vectormuestras]; @@ -27,39 +30,34 @@ float vIntensidadB[vectormuestras]; }vectores; + float flag=0; + int bufferActivo=0; + int contador=0; + int pulsador=0; + struct Medidas{ - float medidaTension; - float medidaIntensidad; + + float VRMS; + float IRMS; + float P_activa; + float P_reactiva; + float P_aparente; + float Consumo_Pact; + float Consumo_Preact; + float FP; }medidas; -int contador=0; -int pulsador=0; -int bufferActivo=0; -int flag=0; -int16_t measV=0; -int16_t measI=0; -int32_t producto=0; -int64_t sumatorioV=0; -int64_t sumatorioI=0; -int64_t sumatorioPA=0; -float VRMS=0; -float IRMS=0; -float P_activa=0; -float P_reactiva=0; -float P_aparente=0; -float Consumo_Pact=0; -float Consumo_Preact=0; -float FP=0; //Captura de valores mediante muestreo void captura() //función muestreo { + float medidaTension=tension.read(); - medidaTension=medidaTension-offsetTension*datoTension; + medidaTension=(medidaTension-offsetTension)*datoTension; float medidaIntensidad=intensidad.read(); - medidaIntensidad=medidaIntensidad-offsetIntensidad*datoIntensidad; + medidaIntensidad=(medidaIntensidad-offsetIntensidad)*datoIntensidad; if(bufferActivo==1) { vectores.vTensionA[contador] = medidaTension; @@ -83,35 +81,35 @@ { lcd.cls(); if(pulsador==0){ - lcd.printf("VRMS:\n %f", VRMS); + lcd.printf("VRMS:\n %f", medidas.VRMS); } else if (pulsador ==1) { - lcd.printf("IRMS:\n %f", IRMS); + lcd.printf("IRMS:\n %f", medidas.IRMS); } else if (pulsador ==2) { - lcd.printf("Pot. activa:\n %f", P_activa); + lcd.printf("Pot. activa:\n %f", medidas.P_activa); } else if (pulsador ==3) { - lcd.printf("Pot. reactiva:\n %f", P_reactiva); + lcd.printf("Pot. reactiva:\n %f", medidas.P_reactiva); } else if (pulsador ==4) { - lcd.printf("Pot. aparente:\n %f", P_aparente); + lcd.printf("Pot. aparente:\n %f", medidas.P_aparente); } else if (pulsador ==5) { - lcd.printf("Consumo Pot. A:\n %f", Consumo_Pact); + lcd.printf("Consumo Pot. A:\n %f", medidas.Consumo_Pact); } else if (pulsador ==6) { - lcd.printf("Consumo Pot. R:\n %f", Consumo_Preact); + lcd.printf("Consumo Pot. R:\n %f", medidas.Consumo_Preact); } else if (pulsador ==7) { - lcd.printf("Factor de potencia:\n\r %f", FP); + lcd.printf("Factor de pot.:\n %f", medidas.FP); } } @@ -120,15 +118,23 @@ void cambio_boton() { pulsador++; - if(pulsador>8) { + if(pulsador>7) { pulsador=0; } } int main() { - Ticker timerCaptura; - Ticker timerVisualizacion; + float measV=0; + float measI=0; + float producto=0; + float sumatorioV=0; + float sumatorioI=0; + float sumatorioPA=0; + medidas.Consumo_Pact=0.0; + medidas.Consumo_Preact=0.0; + + timerCaptura.attach_us(&captura,200);//Hace que la función muestreo se ejecute cada 200us timerVisualizacion.attach(&visualizacion,1.0);//Hace que la función mostrar se ejecute cada segundo button.rise(&cambio_boton);//Hace que la función boton se ejecute cada vez que se pulse el botón @@ -159,14 +165,23 @@ sumatorioPA+=producto; } - VRMS=sqrt(sumatorioV)/vectormuestras; - IRMS=sqrt(sumatorioI); - P_activa=sqrt(constanteTension*constanteIntensidad)*sumatorioPA; - P_aparente=VRMS*IRMS; - P_reactiva=sqrt(P_aparente*P_aparente)-(P_aparente*P_aparente); - Consumo_Pact=Consumo_Pact+P_activa*20e-3/(3600*1000); - Consumo_Preact=Consumo_Preact+P_reactiva*20e-3/(3600*1000); - FP=P_activa/(P_aparente+eps); + medidas.VRMS=sqrt(sumatorioV/vectormuestras); + medidas.IRMS=sqrt(sumatorioI/vectormuestras); + medidas.P_activa=sumatorioPA/vectormuestras; + medidas.P_aparente=medidas.VRMS*medidas.IRMS; + medidas.P_reactiva=sqrt((medidas.P_aparente*medidas.P_aparente)-(medidas.P_activa*medidas.P_activa)); + medidas.Consumo_Pact=medidas.Consumo_Pact+medidas.P_activa*20e-3/(3600*1000); + medidas.Consumo_Preact=medidas.Consumo_Preact+medidas.P_reactiva*20e-3/(3600*1000); + medidas.FP=medidas.P_activa/(medidas.P_aparente+eps); + //sacardatos(); } + wait(0.001); } +} + +void sacardatos(){ + timerCaptura.attach(&captura,100); + for (int i=0;i<100;i++){ + printf("%f\r\n",vectores.vIntensidadB[i]); + } } \ No newline at end of file