Dependencies:   mbed TextLCD

Files at this revision

API Documentation at this revision

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