¡Qué majo es Ander Ibabe!

Dependencies:   TextLCD mbed

Committer:
carlospomar
Date:
Fri Dec 15 07:37:31 2017 +0000
Revision:
2:9377dbae7237
Parent:
1:7c44bfcec04b
Child:
3:250e95e6485b
asdf

Who changed what in which revision?

UserRevisionLine numberNew contents of line
carlospomar 0:91c7502b70de 1 #include "mbed.h"
carlospomar 0:91c7502b70de 2 #include "TextLCD.h"
carlospomar 0:91c7502b70de 3
carlospomar 0:91c7502b70de 4 Serial bluetooth (D10,D2);
carlospomar 0:91c7502b70de 5 Serial pc(SERIAL_TX,SERIAL_RX);
carlospomar 0:91c7502b70de 6 TextLCD lcd(D8,D9,D6,D3,D4,D5,TextLCD::LCD16x2); //rs,e,d4-d7
carlospomar 0:91c7502b70de 7 InterruptIn pulsador(PC_13);
carlospomar 0:91c7502b70de 8 float muestrasA[100];
carlospomar 0:91c7502b70de 9 float muestrasB[100];
carlospomar 0:91c7502b70de 10 float muestrasC[100];
carlospomar 0:91c7502b70de 11 float muestrasD[100];
carlospomar 0:91c7502b70de 12
carlospomar 0:91c7502b70de 13 AnalogIn tension (A0);
carlospomar 0:91c7502b70de 14 AnalogIn tensioncontinua (A1);
carlospomar 2:9377dbae7237 15 AnalogIn intensidad (A4);
carlospomar 0:91c7502b70de 16 AnalogIn intensidadcontinua (A5);
carlospomar 0:91c7502b70de 17 float Vcont;
carlospomar 0:91c7502b70de 18 float Icont;
carlospomar 0:91c7502b70de 19 int contador=0;
carlospomar 0:91c7502b70de 20 int contadorIntensidad=0;
carlospomar 0:91c7502b70de 21 int bufferlleno;
carlospomar 0:91c7502b70de 22 int nbuffer;
carlospomar 0:91c7502b70de 23 Ticker timerMuestro;
carlospomar 0:91c7502b70de 24 Ticker timerVisualizacion;
carlospomar 0:91c7502b70de 25 int i;
carlospomar 0:91c7502b70de 26 float Vrms;
carlospomar 0:91c7502b70de 27 float Irms;
carlospomar 0:91c7502b70de 28 float PotenciaActiva;
carlospomar 0:91c7502b70de 29 float PotenciaReactiva;
carlospomar 0:91c7502b70de 30 float PotenciaAparente;
carlospomar 0:91c7502b70de 31 float FactorPotencia;
carlospomar 0:91c7502b70de 32 float EnergiaActiva;
carlospomar 0:91c7502b70de 33 float EnergiaReactiva=0;
carlospomar 0:91c7502b70de 34 int mostrardato=0;
carlospomar 0:91c7502b70de 35 float precio;
carlospomar 0:91c7502b70de 36
carlospomar 0:91c7502b70de 37 void temporizador ()
carlospomar 0:91c7502b70de 38 {
carlospomar 0:91c7502b70de 39 if(nbuffer) {
carlospomar 2:9377dbae7237 40 muestrasA[contador]=(tension.read()-Vcont)*219.626*3.3;
carlospomar 2:9377dbae7237 41 muestrasC[contador]=(intensidad.read()-Icont)*9.525*3.3;
carlospomar 0:91c7502b70de 42 } else {
carlospomar 2:9377dbae7237 43 muestrasB[contador]=(tension.read()-Vcont)*219.626*3.3;
carlospomar 2:9377dbae7237 44 muestrasD[contador]=(intensidad.read()-Icont)*9.725*3.3;
carlospomar 0:91c7502b70de 45 }
carlospomar 0:91c7502b70de 46 contador++;
carlospomar 0:91c7502b70de 47 if(contador==100) {
carlospomar 0:91c7502b70de 48 contador=0;
carlospomar 0:91c7502b70de 49 nbuffer=!nbuffer;
carlospomar 0:91c7502b70de 50 bufferlleno=1;
carlospomar 0:91c7502b70de 51 }
carlospomar 0:91c7502b70de 52 }
carlospomar 0:91c7502b70de 53
carlospomar 0:91c7502b70de 54 void boton()
carlospomar 0:91c7502b70de 55 {
carlospomar 0:91c7502b70de 56 mostrardato++;
carlospomar 0:91c7502b70de 57 if (mostrardato>8)
carlospomar 0:91c7502b70de 58 mostrardato=0;
carlospomar 0:91c7502b70de 59 }
carlospomar 0:91c7502b70de 60
carlospomar 0:91c7502b70de 61 void mostrar ()
carlospomar 0:91c7502b70de 62 {
carlospomar 0:91c7502b70de 63 lcd.cls();
carlospomar 0:91c7502b70de 64 switch(mostrardato) {
carlospomar 0:91c7502b70de 65 case 0:
carlospomar 2:9377dbae7237 66 lcd.printf("Vrms:\n3.3 V",Vrms);
carlospomar 2:9377dbae7237 67 pc.printf("Vrms:\n3.3 V",Vrms);
carlospomar 0:91c7502b70de 68 break;
carlospomar 0:91c7502b70de 69 case 1:
carlospomar 2:9377dbae7237 70 lcd.printf("Irms:\n3.3 I",Irms);
carlospomar 2:9377dbae7237 71 pc.printf("Irms:\n3.3 I",Irms);
carlospomar 0:91c7502b70de 72 break;
carlospomar 0:91c7502b70de 73 case 2:
carlospomar 2:9377dbae7237 74 lcd.printf("F.pot:\n3.3 ",FactorPotencia);
carlospomar 2:9377dbae7237 75 pc.printf("F.pot:\n3.3 ",FactorPotencia);
carlospomar 0:91c7502b70de 76 break;
carlospomar 0:91c7502b70de 77 case 3:
carlospomar 2:9377dbae7237 78 lcd.printf("P.Apa:\n3.3 VA",PotenciaAparente);
carlospomar 2:9377dbae7237 79 pc.printf("P.Apa:\n3.3 VA",PotenciaAparente);
carlospomar 0:91c7502b70de 80 break;
carlospomar 0:91c7502b70de 81 case 4:
carlospomar 2:9377dbae7237 82 lcd.printf("P.React:\n3.3 VAr",PotenciaReactiva);
carlospomar 2:9377dbae7237 83 pc.printf("P.React:\n3.3 VAr",PotenciaReactiva);
carlospomar 0:91c7502b70de 84 break;
carlospomar 0:91c7502b70de 85 case 5:
carlospomar 2:9377dbae7237 86 lcd.printf("P.Act:\n3.3 W",PotenciaActiva);
carlospomar 2:9377dbae7237 87 pc.printf("P.Act:\n3.3 W",PotenciaActiva);
carlospomar 0:91c7502b70de 88 break;
carlospomar 0:91c7502b70de 89 case 6:
carlospomar 2:9377dbae7237 90 lcd.printf("E.Act:\n3.3 kWh",EnergiaActiva);
carlospomar 2:9377dbae7237 91 pc.printf("E.Act:\n3.3 kWh",EnergiaActiva);
carlospomar 0:91c7502b70de 92 break;
carlospomar 0:91c7502b70de 93 case 7:
carlospomar 2:9377dbae7237 94 lcd.printf("E.React:\n3.3 kWh",EnergiaReactiva);
carlospomar 2:9377dbae7237 95 pc.printf("E.React:\n3.3 kWh",EnergiaReactiva);
carlospomar 0:91c7502b70de 96 break;
carlospomar 0:91c7502b70de 97 }
carlospomar 2:9377dbae7237 98 bluetooth.printf("%3.3| %3.3| %3.3| %3.3\n",Vrms,Irms,PotenciaActiva,precio);
carlospomar 0:91c7502b70de 99 }
carlospomar 0:91c7502b70de 100
carlospomar 0:91c7502b70de 101 int main ()
carlospomar 0:91c7502b70de 102 {
carlospomar 0:91c7502b70de 103 float suma;
carlospomar 0:91c7502b70de 104 float sumapotenciaactiva=0;
carlospomar 0:91c7502b70de 105 float sumaIntensidad;
carlospomar 0:91c7502b70de 106 float dato;
carlospomar 0:91c7502b70de 107 float datoIntensidad;
carlospomar 0:91c7502b70de 108
carlospomar 0:91c7502b70de 109 timerMuestro.attach_us(&temporizador,200);
carlospomar 0:91c7502b70de 110 timerVisualizacion.attach(&mostrar,1);
carlospomar 0:91c7502b70de 111 pulsador.rise(&boton);
carlospomar 0:91c7502b70de 112 Vcont=0;
carlospomar 0:91c7502b70de 113 Icont=0;
carlospomar 0:91c7502b70de 114 for (i=0; i<8; i++) {
carlospomar 0:91c7502b70de 115 Vcont=Vcont+tensioncontinua.read();
carlospomar 0:91c7502b70de 116 Icont=Icont+intensidadcontinua.read();
carlospomar 0:91c7502b70de 117 }
carlospomar 2:9377dbae7237 118 Vcont=Vcont/8.0;
carlospomar 2:9377dbae7237 119 Icont=Icont/8.0;
carlospomar 0:91c7502b70de 120
carlospomar 0:91c7502b70de 121 while (1) {
carlospomar 0:91c7502b70de 122 if (bufferlleno) {
carlospomar 0:91c7502b70de 123 bufferlleno=0;
carlospomar 0:91c7502b70de 124 suma=0;
carlospomar 0:91c7502b70de 125 sumaIntensidad=0;
carlospomar 0:91c7502b70de 126 sumapotenciaactiva=0;
carlospomar 0:91c7502b70de 127 for (i=0; i<100; i++) {
carlospomar 0:91c7502b70de 128 if(nbuffer==1) {
carlospomar 0:91c7502b70de 129 dato=muestrasA[i];
carlospomar 0:91c7502b70de 130 datoIntensidad=muestrasC[i];
carlospomar 0:91c7502b70de 131 } else {
carlospomar 0:91c7502b70de 132 dato=muestrasB[i];
carlospomar 0:91c7502b70de 133 datoIntensidad=muestrasD[i];
carlospomar 0:91c7502b70de 134 }
carlospomar 0:91c7502b70de 135 suma=suma+dato*dato;
carlospomar 0:91c7502b70de 136 sumaIntensidad=sumaIntensidad+datoIntensidad*datoIntensidad;
carlospomar 0:91c7502b70de 137 sumapotenciaactiva=sumapotenciaactiva+dato*datoIntensidad;
carlospomar 0:91c7502b70de 138 }
carlospomar 2:9377dbae7237 139 Vrms=(sqrt(suma/100.0)*1.01449275362);
carlospomar 2:9377dbae7237 140 Irms=(sqrt(sumaIntensidad/100.0)*0.9869);
carlospomar 2:9377dbae7237 141 PotenciaActiva=(sumapotenciaactiva/100.0)/10.00139;
carlospomar 2:9377dbae7237 142 EnergiaActiva=EnergiaActiva+(PotenciaActiva/180000000.0);
carlospomar 0:91c7502b70de 143 PotenciaAparente=Vrms*Irms;
carlospomar 0:91c7502b70de 144 PotenciaReactiva=(sqrt((PotenciaActiva-PotenciaAparente)-(PotenciaActiva*PotenciaActiva)));
carlospomar 2:9377dbae7237 145 EnergiaActiva=EnergiaReactiva+(PotenciaReactiva/180000000.0);
carlospomar 0:91c7502b70de 146 FactorPotencia=(PotenciaActiva/PotenciaAparente);
carlospomar 2:9377dbae7237 147 precio=EnergiaActiva*0.121;
carlospomar 0:91c7502b70de 148 }
carlospomar 0:91c7502b70de 149 }
carlospomar 2:9377dbae7237 150 }